diff --git a/src/005-passages/managePassages.js b/src/005-passages/managePassages.js index 356f121dfa100b19969b3ae52d038d516f17fd9b..2065e948d4f5d9baf9eb021aca930dd97ee5a7e3 100644 --- a/src/005-passages/managePassages.js +++ b/src/005-passages/managePassages.js @@ -61,6 +61,12 @@ new App.DomPassage("Manage Corporation", }, ["jump-to-safe", "jump-from-safe"] ); +new App.DomPassage("Manage Arcology", + () => { + return App.UI.manageArcology(); + }, ["jump-to-safe", "jump-from-safe"] +); + new App.DomPassage("Policies", () => { diff --git a/src/arcologyBuilding/ManageArcology.js b/src/arcologyBuilding/ManageArcology.js new file mode 100644 index 0000000000000000000000000000000000000000..3c6927b8ad1c0cd42c7b7aac5885eaf46de98675 --- /dev/null +++ b/src/arcologyBuilding/ManageArcology.js @@ -0,0 +1,472 @@ +App.UI.manageArcology = function() { + V.nextButton = "Back"; + V.nextLink = "Main"; + V.encyclopedia = "The X-Series Arcology"; + let arcName = V.arcologies[0].name; + let r; + + const asPercentage = (v) => Math.trunc((v / (V.ACitizens + V.ASlaves)) * 1000) / 10; + function arcUpgradeCost(basePrice, modifier = "") { + let cost = Math.trunc(basePrice * V.upgradeMultiplierArcology); + return cost * (["no subsidy", "light subsidy", "Heavy subsidy", "receiver subsidy", "propHub", "secHub"].includes(modifier) ? V.HackingSkillMultiplier : 1); + } + function applyArcUpgrade(text, upgrade, basePrice, choice = "") { + return App.UI.DOM.link(text, () => { + if (["drones", "hydro", "apron", "grid"].includes(upgrade)) { + V.arcologyUpgrade[upgrade] = 1; + if (upgrade === "drones" && V.secExpEnabled > 0) { + V.SecExp.units.bots = App.SecExp.unit.gen("bots"); + } + } else if (["weatherCladding", "antiWeatherFreeze", "disasterResponse"].includes(upgrade)) { + V[upgrade]++; + } else if (upgrade === "receiver") { + V.FCTV.receiver = 1; + V.FCTV.weekEnabled = V.week; + FCTV.initChannels(); + if (["no subsidy", "heavy subsidy"].includes(choice)) { + repX((choice === "no subsidy" ? 500 : -1500), "capEx"); + } + } else if (upgrade === "SecExp") { + App.SecExp[choice].Init(); + } + + V.PC.skill.engineering++; + if (upgrade === "receiver" || ["propHub", "secHub"].includes(choice)) { + V.PC.skill.hacking++; + } + cashX(forceNeg(arcUpgradeCost(basePrice, choice)), "capEx"); + App.UI.reload(); + }); + } + + function societalView(s, type) { + const classType = s === "top" ? "Millionaires" : `${capFirstChar(s)} Class`; + const calRent = (v) => Math.trunc(V.rent[v] * (1 + (5 - V.baseDifficulty) / 20) / 0.25) / 100; + const classStr = s + "Class"; + function link(text, type, value, value2 = 0, value3 = 0) { + return App.UI.DOM.link(`${text}`, () => { + if (type !== "rent") { + V[type][classStr] = value; + if (type === "sexSupplyBarriers") { + repX(-1000, "subsidiesAndBarriers"); + } + } else { + V.rent[classStr] = V.rentDefaults[classStr] * value; + if (s === "lower") { + V.rentEffectL = value2; + } else if (s === "middle") { + V.rentEffectM = value2; + } else if (s === "upper") { + V.rentEffectU = value2; + } else if (s === "top") { + V.rentEffectT = value2; + } + V.whoreBudget[classStr] *= value3; + } + App.UI.reload(); + }); + } + + let choices = []; + const node = new DocumentFragment(); + if (type === "policies") { + if (V.sexSubsidies[classStr] === 0) { + node.append(`You can provide a minor subsidy for those selling sexual services to the ${classType}. `); + choices.push(link("Minor Subsidy", "sexSubsidies", 1)); + } else if (V.sexSubsidies[classStr] === 1) { + node.append(`You are providing a minor subsidy for those selling sexual services to the ${classType}. `); + choices.push(link("Cancel Subsidy", "sexSubsidies", 0)); + choices.push(link("Moderate Subsidy", "sexSubsidies", 2)); + } else if (V.sexSubsidies[classStr] === 2) { + node.append(`You are providing a moderate subsidy for those selling sexual services to the ${classType}. `); + choices.push(link("Minor Subsidy", "sexSubsidies", 1)); + choices.push(link("Substantial Subsidy", "sexSubsidies", 3)); + } else if (V.sexSubsidies[classStr] === 3) { + node.append(`You are providing a substantial subsidy for those selling sexual services to the ${classType}. `); + choices.push(link("Moderate Subsidy", "sexSubsidies", 2)); + choices.push(link("Gratuitous Subsidy", "sexSubsidies", 4)); + } else { + node.append(`You are providing a gratuitous subsidy for those selling sexual services to the ${classType}. `); + choices.push(link("Substantial Subsidy", "sexSubsidies", 3)); + } + App.UI.DOM.appendNewElement("span", node, "Upkeep is relative to the amount provided by other parties. ", "note"); + App.UI.DOM.appendNewElement("span", node, App.UI.DOM.generateLinksStrip(choices)); + App.UI.DOM.appendNewElement("div", node); + + choices = []; + if (V.sexSupplyBarriers[classStr] === 0) { + node.append( + `Alternatively administrative "accidents" can happen if you are willing to spend ${num(1000)} reputation and pay a flat upkeep of`, + App.UI.DOM.makeElement("span", ` ${cashFormat(1000)}. `, "cash") + ); + choices.push(link("Create Bureaucracy", "sexSupplyBarriers", 1)); + } else if (V.sexSupplyBarriers[classStr] === 1) { + node.append( + `You have forced some unneeded bureaucracy, making things a little more difficult. + If you are willing to spend ${num(1000)} reputation you can change this policy. + Increasing the bureaucracy further will cost a flat upkeep of`, + App.UI.DOM.makeElement("span", ` ${cashFormat(5000)}. `, "cash") + ); + choices.push(link("Abolish Bureaucracy", "sexSupplyBarriers", 0)); + choices.push(link("Increase Bureaucracy", "sexSupplyBarriers", 2)); + } else if (V.sexSupplyBarriers[classStr] === 2) { + node.append( + `You have forced considerable bureaucracy, making things a little more difficult. + If you are willing to spend ${num(1000)} reputation you can change this policy. + Increasing the bureaucracy further will cost a flat upkeep of`, + App.UI.DOM.makeElement("span", ` ${cashFormat(20000)}. `, "cash") + ); + choices.push(link("Reduce Bureaucracy", "sexSupplyBarriers", 1)); + choices.push(link("Increase Bureaucracy", "sexSupplyBarriers", 3)); + } else if (V.sexSupplyBarriers[classStr] === 3) { + node.append( + `You have forced stifling bureaucracy, making things a little more difficult. + If you are willing to spend ${num(1000)} reputation you can change this policy. + Increasing the bureaucracy further will cost a flat upkeep of`, + App.UI.DOM.makeElement("span", ` ${cashFormat(60000)}. `, "cash") + ); + choices.push(link("Reduce Bureaucracy", "sexSupplyBarriers", 2)); + choices.push(link("Increase Bureaucracy", "sexSupplyBarriers", 4)); + } else { + node.append( + `You have forced suffocating bureaucracy, making things a little more difficult. + If you are willing to spend ${num(1000)} reputation you can change this policy.` + ); + choices.push(link("Reduce Bureaucracy", "sexSupplyBarriers", 3)); + } + } else if (type === "rent") { + node.append( + `${classType} | ${num(V[classStr])} | ${asPercentage(V[classStr])}% | Rent: `, + App.UI.DOM.makeElement("span", `${cashFormat(calRent(classStr))} `, "cash") + ); + + if (V.rent[classStr] > V.rentDefaults[classStr] * 1.5) { + node.append("Very High. "); + choices.push(link("Decrease", "rent", 1.5, 0.94, 9 / 8)); + } else if (V.rent[classStr] > V.rentDefaults[classStr]) { + node.append("High. "); + choices.push(link("Increase", "rent", 2, 0.85, 8 / 9)); + choices.push(link("Decrease", "rent", 1, 1, 10 / 9)); + } else if (V.rent[classStr] > V.rentDefaults[classStr] * 0.5) { + node.append("Average. "); + choices.push(link("Increase", "rent", 1.5, 0.94, 9 / 8)); + choices.push(link("Decrease", "rent", 0.5, 1.04, 11 / 10)); + } else if (V.rent[classStr] > 0) { + node.append("Low. "); + choices.push(link("Increase", "rent", 1, 1, 10 / 11)); + choices.push(link("Free Rent", "rent", 0, 1.1, 12 / 11)); + } else { + node.append("Free. "); + choices.push(link("Increase", "rent", 0.5, 1.04, 11 / 12)); + } + } + if (type === "policies" && V.rep > 1000 || type === "rent") { + App.UI.DOM.appendNewElement("span", node, App.UI.DOM.generateLinksStrip(choices)); + } else { + App.UI.DOM.appendNewElement("div", node, "You are not reputable enough."); + } + return node; + } + + const node = new DocumentFragment(); + App.UI.DOM.appendNewElement("h1", node, + App.UI.DOM.link(`${arcName}`, () => { + if (Dialog.isOpen()) { + Dialog.close(); + } + Dialog.setup("Rename"); + const frag = new DocumentFragment(); + frag.append(App.UI.DOM.makeTextBox(V.arcologies[0].name, str => { V.arcologies[0].name = str; App.UI.reload(); })); + $(Dialog.body()).empty().append(frag); + Dialog.open(); + }) + , ["white", "center"] + ); + if (V.cheatMode === 1) { + App.UI.DOM.appendNewElement("p", node, App.UI.DOM.passageLink("Cheat Edit Arcology", "MOD_Edit Arcology Cheat"), ["cheat-menu", "white", "center"]); + } + App.UI.DOM.appendNewElement("div", node, V.building.render()); + if (V.seeArcology === 1) { + node.append(App.Desc.playerArcology( + App.UI.DOM.link("Hide", () => { + V.seeArcology = 0; + App.UI.reload(); + }) + )); + } + + App.UI.DOM.appendNewElement("h2", node, "Arcology Ownership"); + App.Arcology.updateOwnership(); + node.append(ownershipReport(false)); + if (FutureSocieties.availCredits() > 0) { + App.UI.DOM.appendNewElement("span", node, ` Society is ready to begin accepting a new societal direction.`, "noteworthy"); + } + + App.UI.DOM.appendNewElement("h2", node, "Construction"); + if (V.arcologyUpgrade.drones !== 1) { + App.UI.DOM.appendNewElement("div", node, `The first major upgrade needed is the installation of a drone security system so higher-class citizens will feel safe and protected should they choose to immigrate. This upgrade will cost ${cashFormat(arcUpgradeCost(5000))}.`, "note"); + node.append(applyArcUpgrade("Install drone security system", "drones", 5000)); + } else if (V.arcologyUpgrade.hydro !== 1) { + App.UI.DOM.appendNewElement("div", node, `The next major upgrade needed is the installation of a better water reclamation system so your residents will have access to cheaper water and hydroponically grown food. This upgrade will cost ${cashFormat(arcUpgradeCost(10000))}.`, "note"); + node.append(applyArcUpgrade("Upgrade water reclamation system", "hydro", 10000)); + } else if (V.arcologyUpgrade.apron !== 1) { + App.UI.DOM.appendNewElement("div", node, `The next major upgrade needed is the installation of a broader apron at the bottom of the arcology to increase its surface area and gather more solar energy. Right now, tenants that use a lot of power have to import it from outside. This upgrade will cost ${cashFormat(arcUpgradeCost(20000))}.`, "note"); + node.append(applyArcUpgrade("Install solar apron", "apron", 20000)); + } else if (V.arcologyUpgrade.grid !== 1) { + App.UI.DOM.appendNewElement("div", node, `The next major upgrade needed is an improvement of the arcology's electrical transmission lines to make efficient use of the additional power from the solar apron. This upgrade will cost ${cashFormat(arcUpgradeCost(50000))}.`, "note"); + node.append(applyArcUpgrade("Upgrade transmission lines", "grid", 50000)); + } else { + App.UI.DOM.appendNewElement("div", node, "The arcology's public areas are fully upgraded.", ["note", "indent"]); + App.UI.DOM.appendNewElement("div", node, App.Arcology.upgrades(V.building), "indent"); + } + + r = []; + if (V.weatherCladding === 0) { + r.push(`Extreme weather is becoming common worldwide. The arcology's exterior can be hardened to reduce damage in case of heavy weather, but this will reduce its beauty somewhat and will cost ${cashFormat(arcUpgradeCost(50000))}. Your citizens are`); + if (V.weatherAwareness === 0) { + r.push("likely to disapprove of this measure as alarmism."); + } else { + r.push(App.UI.DOM.makeElement("span", `concerned that this measure has not been taken already.`, "noteworthy")); + } + App.UI.DOM.appendNewElement("div", node, r.join(" ")); + App.UI.DOM.appendNewElement("span", node, applyArcUpgrade("Apply weather cladding", "weatherCladding", 50000)); + } else { + r.push(`The arcology's exterior is jacketed with ${V.weatherCladding === 1 ? "unsightly but sturdy" : "gorgeously sculpted and fully functional"} weather cladding.`); + if (V.weatherCladding === 1 && V.building.sections.length > 0) { + r.push(`Your arcology is so prosperous that remodeling the cladding into something beautiful is within the realm of possibility. This massive project will cost ${cashFormat(arcUpgradeCost(3500000))} and without a doubt render your arcology one of the wonders of the world.`); + App.UI.DOM.appendNewElement("div", node, r.join(" ")); + App.UI.DOM.appendNewElement("span", node, applyArcUpgrade("Remodel weather cladding", "weatherCladding", 3500000)); + } + } + App.UI.DOM.appendNewElement("div", node, ""); + + if (V.FCTV.receiver > -1 && !V.FCTV.weekEnabled) { + App.UI.DOM.appendNewElement("div", node, "You have not installed an FCTV receiver."); + node.append("Installing this receiver ", applyArcUpgrade("yourself", "receiver", 25000, "no subsidy"), ` will cost ${cashFormat(arcUpgradeCost(25000, "receiver subsidy"))}.`); + App.UI.DOM.appendNewElement("div", node, ""); + node.append("You can have your ", applyArcUpgrade("citizens pay", "receiver", 20000, "light subsidy"), ` for the fiber optic upgrades, reducing the cost to ${cashFormat(arcUpgradeCost(20000, "receiver subsidy"))}.`); + App.UI.DOM.appendNewElement("div", node, ""); + node.append("You can also have them ", applyArcUpgrade("heavily subsidize", "receiver", 10000, "Heavy subsidy"), ` installation, they will be upset about it, but it will only cost ${cashFormat(arcUpgradeCost(10000, "receiver subsidy"))}.`); + } else { + r = []; + r.push("You have installed the FCTV receiver and have access to the full range of FCTV's programs."); + if (V.FCTV.receiver === 3) { + r.push("High viewership rates amongst your citizens makes it easier to pursue your societal goals."); + } else if (V.FCTV.receiver === 2) { + r.push("Decent viewership rates amongst your citizens makes it somewhat easier to pursue your societal goals."); + } else if (V.FCTV.receiver === 1) { + r.push("Low viewership rates amongst your citizens limits the impact of FCTV on your societal goals."); + } + App.UI.DOM.appendNewElement("div", node, r.join(" "), "indent"); + } + if (V.PC.skill.engineering >= 100 || V.PC.career === "arcology owner") { + node.append("Arcology upgrades are less expensive due to your ", + App.UI.DOM.makeElement("span", `${V.PC.career === "arcology owner" ? "experience in the Free Cities" : "arcology engineering training"}.`, ["player", "skill"]) + ); + } + + if (V.secExpEnabled === 0) { + r = []; + if (V.weatherAwareness > 0) { + if (V.antiWeatherFreeze === 0) { + node.append("The extreme weather hurts your arcology's ability to function. Reinforcing your passenger terminals increase the weather range at which they can operate."); + App.UI.DOM.appendNewElement("div", node, ""); + node.append( + applyArcUpgrade("Reinforcing", "antiWeatherFreeze", 50000), + ` passenger terminals costs ${cashFormat(arcUpgradeCost(50000))} and increases upkeep.` + ); + } else if (V.antiWeatherFreeze === 1) { + node.append("You have reinforced your passenger terminals to function even during bad weather. You can invest into all-weather transportation to remain functional no matter what."); + App.UI.DOM.appendNewElement("div", node, ""); + node.append( + applyArcUpgrade("Investing", "antiWeatherFreeze", 100000), + ` in all-weather transportation costs ${cashFormat(arcUpgradeCost(100000))} and increases upkeep.` + ); + } else if (V.antiWeatherFreeze === 2) { + App.UI.DOM.appendNewElement("div", node, "Your arcology's passenger terminals remain fully operational even during the most extreme weather."); + } + } + } else { + App.UI.DOM.appendNewElement("h2", node, "Security"); + if (!V.SecExp.buildings.propHub) { + node.append(applyArcUpgrade("Set up the propaganda Hub", "SecExp", 5000, "propHub")); + App.UI.DOM.appendNewElement("div", node, `Costs ${cashFormat(arcUpgradeCost(5000, "propHub"))}. Building specialized in the management of authority.`, ["detail", "indent"]); + } else { + node.append("The ", App.UI.DOM.passageLink("Propaganda Hub", "propagandaHub"), " is ready to manipulate reality on your command."); + } + App.UI.DOM.appendNewElement("div", node, ""); + + if (!V.SecExp.buildings.secHub) { + node.append(applyArcUpgrade("Set up the security headquarters", "SecExp", 5000, "secHub")); + App.UI.DOM.appendNewElement("div", node, `Costs ${cashFormat(arcUpgradeCost(5000, "secHub"))}. Building specialized in the management of security and crime.`, ["detail", "indent"]); + } else { + node.append("The ", App.UI.DOM.passageLink("security HQ", "securityHQ"), " is constantly working to protect your arcology."); + } + App.UI.DOM.appendNewElement("div", node); + + if (!V.SecExp.buildings.barracks) { + node.append(applyArcUpgrade("Set up the barracks", "SecExp", 5000, "barracks")); + App.UI.DOM.appendNewElement("div", node, `Costs ${cashFormat(arcUpgradeCost(5000))}. Building specialized in the management of armed forces.`, ["detail", "indent"]); + } else { + node.append("The ", App.UI.DOM.passageLink("barracks", "secBarracks"), " patiently await your orders."); + } + App.UI.DOM.appendNewElement("div", node); + + if (!V.SecExp.buildings.riotCenter && V.SecExp.settings.rebellion.enabled === 1) { + node.append(applyArcUpgrade("Set up the control center", "SecExp", 5000, "riotCenter")); + App.UI.DOM.appendNewElement("div", node, `Costs ${cashFormat(arcUpgradeCost(5000))}. Building specialized in the management and suppression of rebellions.`, ["detail", "indent"]); + } else if (V.SecExp.settings.rebellion.enabled === 1) { + node.append("The ", App.UI.DOM.passageLink("Riot Control Center", "riotControlCenter"), " stands ready for action."); + } + } + + if (V.difficultySwitch === 1 && (V.econWeatherDamage > 0 || V.disasterResponse > 0)) { + App.UI.DOM.appendNewElement("h2", node, "Disaster Response"); + if (V.econWeatherDamage > 0) { + node.append( + "The recent terrible weather has damaged the local infrastructure. It is ", + App.UI.DOM.makeElement("span", `reducing the local economy score by ${num(V.econWeatherDamage)}.`, "warning") + ); + if (V.disasterResponse === 0) { + node.append(" Locals will do their best to repair the damage on their own, but setting up a disaster response unit will improve the recovery of infrastructure critical for keeping goods, people and information flowing smoothly in and out of your arcology."); + App.UI.DOM.appendNewElement("div", node); + node.append( + applyArcUpgrade(" Creating the unit", "disasterResponse", 50000), + ` will cost ${cashFormat(arcUpgradeCost(50000))} and incur upkeep.` + ); + } else if (V.disasterResponse === 1) { + node.append(" You are sending your disaster response unit to repair critical infrastructure. They are doing what they can."); + App.UI.DOM.appendNewElement("div", node); + node.append( + `The unit can be made more effective with an additional investment of ${cashFormat(arcUpgradeCost(100000))}. This will also increase upkeep.`, + applyArcUpgrade(" Improve the Disaster Response Unit", "disasterResponse", 100000), + ); + } else { + App.UI.DOM.appendNewElement("div", node, "Your highly capable disaster response unit is rapidly repairing the weather damage."); + } + } else if (V.disasterResponse > 0) { + App.UI.DOM.appendNewElement("div", node, "Your disaster response unit is idle. It will not cost you any upkeep this week."); + } + } + if (V.foodMarket > 0) { + App.UI.DOM.appendNewElement("h2", node, "Food Management"); + node.append(App.UI.foodMarket()); + } + const SocietyClasses = ["lower", "middle", "upper", "top"]; + App.UI.DOM.appendNewElement("h2", node, "Sexual Service Policies"); + App.UI.DOM.appendNewElement("div", node, "If so desired, your assistant can help you manipulate the business environment within your arcology."); + App.UI.DOM.appendNewElement("div", node, "Breakdown of sexual services supplied by outside parties per societal class."); + for (const s of SocietyClasses) { + const classType = s === "top" ? "millionaires" : `${s} class`; + App.UI.DOM.appendNewElement("div", node, `${capFirstChar(classType)}: ${V.NPCMarketShare[s + "Class"]/10}%`); + } + App.UI.DOM.appendNewElement("p", node); + for (const s of SocietyClasses) { + App.UI.DOM.appendNewElement("p", node, societalView(s, "policies")); + } + + App.UI.DOM.appendNewElement("h2", node, "Population and Rent"); + App.UI.DOM.appendNewElement("div", node, `${arcName} is home to the following:`); + for (const s of SocietyClasses) { + App.UI.DOM.appendNewElement("div", node, societalView(s, "rent")); + } + App.UI.DOM.appendNewElement("div", node, `Slaves | ${num(V.ASlaves)} | ${asPercentage(V.ASlaves)}%`); + + App.UI.DOM.appendNewElement("h2", node, "Language"); + node.append("The lingua franca of the arcology is ", App.UI.DOM.makeElement("span", `${V.language}`, "strong"), ". "); + node.append( + App.UI.DOM.link("Language options", () => { + V.seed = V.language; + }, [], "Change Language") + ); + + App.UI.DOM.appendNewElement("h2", node, "Special Arcology Upgrades"); + if (V.personalArms === 0 && V.mercenaries === 0 && V.assistant.personality <= 0) { + App.UI.DOM.makeElement("div", `${arcName} has no special upgrades.`, "note"); + } else { + r = []; + if (V.personalArms > 0) { + r.push(`You own a prototype powered exoskeleton that mounts armor and a smart mortar system, and has rifles mounted into its forearms.`); + if (V.personalArms > 1) { + r.push(`Furthermore, your security drones can rearm with small-caliber guns if necessary.`); + } + } + App.UI.DOM.appendNewElement("div", node, r.join(" "), "indent"); + + r = []; + if (V.mercenaries.isBetween(1, 5)) { + r.push(`A ${V.mercenaries === 1 ? "squad" : "full platoon"} of mercenaries is permanently quartered in ${arcName}.`); + } else if (V.mercenaries >= 5) { + r.push(`You have permanently settled a full company of mercenaries in ${arcName} as your ${V.mercenariesTitle}.`); + } + r.push(`They are grim men and women${V.mercenaries < 5 ? ", heavily armed and armored" : " who appreciate their luxurious life here and train hard to keep their skills with their prototype armor sharp"}.`); + App.UI.DOM.appendNewElement("div", node, r.join(" "), "indent"); + + r = []; + if (V.assistant.personality > 0) { + const {hisA, heA} = getPronouns(assistant.pronouns().main).appendSuffix("A"); + r.push(`${capFirstChar(V.assistant.name)} is using an alternative personality setting, speaking in a sultry, sexual voice, and talking as though the penthouse's sex toys are ${hisA} body.`); + if (V.assistant.personality > 1) { + r.push(`${heA} also has charge of all smart piercings in the arcology, and is using ${hisA} adaptations to sexual duties to improve their effectiveness.`); + } + } + App.UI.DOM.appendNewElement("div", node, r.join(" "), "indent"); + } + + App.UI.DOM.appendNewElement("h2", node, "Slaves"); + r = []; + r.push(`Your slaves have participated in approximately ${num(V.oralTotal + V.vaginalTotal+ V.analTotal)} sexual encounters: ${num(V.oralTotal)} primarily oral, ${num(V.vaginalTotal)} vanilla, ${num(V.mammaryTotal)} mammary, ${num(V.analTotal)} anal, and ${num(V.penetrativeTotal)} with the slave penetrating another. They have produced about ${num(V.milkTotal)} liters of marketable milk,`); + r.push(`${V.seeDicks !== 0 ? `about ${num(V.cumTotal)} deciliters of marketable cum,` : ``}`); + r.push(`and have given birth ${num(V.birthsTotal)} times.`); + if (V.abortionsTotal > 0 && V.miscarriagesTotal > 0) { + r.push(`They have had a total of ${num(V.abortionsTotal)} abortions and ${num(V.miscarriagesTotal)} miscarriages.`); + } else if (V.abortionsTotal > 0) { + r.push(`They have had a total of ${num(V.abortionsTotal)} abortions.`); + } else if (V.miscarriagesTotal > 0) { + r.push(`They have had a total of ${num(V.miscarriagesTotal)} miscarriages.`); + } + if (V.fuckdollsSold > 0) { + r.push(`${V.fuckdollsSold} mindbroken arcade slaves have been converted into Fuckdolls and sold.`); + } + App.UI.DOM.appendNewElement("p", node, r.join(" "), "indent"); + + if (V.pitFightsTotal > 0 && V.pitKillsTotal > 0) { + App.UI.DOM.appendNewElement("p", node, `${arcName} has hosted ${num (V.pitFightsTotal)} pit fights, and ${num(V.pitKillsTotal)} slaves have died in your pit.`, "indent"); + } else if (V.pitFightsTotal > 0) { + App.UI.DOM.appendNewElement("p", node, `${arcName} has hosted ${num (V.pitFightsTotal)} pit fights.`, "indent"); + } + + if (V.secExpEnabled > 0) { + const victories = (x) => V.SecExp[x].victories; + const losses = (x) => V.SecExp[x].losses; + const count = (x) => victories(x) + losses(x); + const SF = V.SF.Toggle && V.SF.Active >= 1 ? V.SF.ArmySize : 0; + App.UI.DOM.appendNewElement("h2", node, "Military"); + r = []; + + r.push(`Your army counts ${num(App.SecExp.Manpower.employedOverall + SF)} total soldiers`); + if (V.SF.Toggle && V.SF.Active >= 1) { + r.push(`of which ${num(V.SF.ArmySize)} under the special force command and the rest under your direct control`); + } + r.push(r.pop() + "."); + if (V.SecExp.settings.battle.enabled === 1 && count('battles') > 0) { + r.push(`Your troops were involved in ${num(count('battles'))} battles of which ${num(V.SecExp.battles.major)} were major engagements.`); + r.push("You won"); + if (count('battles') === (losses('battles') || victories('battles'))) { + r.push(`${count('battles') === victories('battles') ? "all" : "none"} all of them.`); + } else { + r.push(`${num(victories('battles'))} of them, while the enemy managed to gain the upper hand in the other ${num(losses('battles'))}.`); + } + r.push(`You lost a total of ${num(App.SecExp.unit.list().slice(1).reduce((acc, cur) => acc + V.SecExp.units[cur].dead, 0))} men, while scoring a total of ${num(V.SecExp.core.totalKills)} kills.`); + } + if (V.SecExp.settings.rebellion.enabled === 1 && count('rebellions') > 0) { + r.push(`Your arcology was involved in ${num(count('rebellions'))} rebellions. You won ${num(victories('rebellions'))} of them, while the rebels defeated your forces in ${num(losses('rebellions'))}.`); + } + App.UI.DOM.appendNewElement("p", node, r.join(" "), "indent"); + } + + if (V.experimental.dinnerParty === 1 && V.seeExtreme === 1) { + App.UI.DOM.appendNewElement("p", node, App.UI.DOM.passageLink("Host Dinner Party", "Dinner Party Preparations"), "indent"); + } + return node; +}; diff --git a/src/cheats/cheatEditArcology.js b/src/cheats/cheatEditArcology.js index f9400ed5992992014ff73c478d47f46973429306..9f2c6640eabfc41ce47ba93c87060d45511440b3 100644 --- a/src/cheats/cheatEditArcology.js +++ b/src/cheats/cheatEditArcology.js @@ -3,6 +3,7 @@ * @returns {DocumentFragment} */ App.UI.Cheat.arcology = function(num) { + V.cheater = 1; const el = new DocumentFragment(); const arc = V.arcologies[num]; if (arc.rival) { diff --git a/src/uncategorized/manageArcology.tw b/src/uncategorized/manageArcology.tw deleted file mode 100644 index 454736bbac2e94feb636d1d38777c65718e819c9..0000000000000000000000000000000000000000 --- a/src/uncategorized/manageArcology.tw +++ /dev/null @@ -1,565 +0,0 @@ -:: Manage Arcology [nobr jump-to-safe jump-from-safe] - -<<set $nextButton = "Back", $nextLink = "Main", $encyclopedia = "The X-Series Arcology">> - -<<if $cheatMode == 1>> - <div class="cheat-menu">[[Cheat Edit Arcology|MOD_Edit Arcology Cheat][$cheater = 1]]</div> -<</if>> - -<div> - <span id="building"></span> - <<script>> - $(document).one(':passageend', () => { - $('#building').append( - V.building.render(), - ); - }); - <</script>> - <div id="arc-desc"></div> - <<script>> - $(document).one(':passageend', () => { - $('#arc-desc').append( - App.Desc.playerArcology(App.UI.DOM.combineNodes("| ", - App.UI.DOM.passageLink("Hide", "Main", () => {V.seeArcology = 0}))) - ); - }); - <</script>> -</div> - -<h2>Arcology Ownership</h2> - -<p> - <div> - <<run App.Arcology.updateOwnership()>> - <<includeDOM ownershipReport(false)>> - </div> -</p> - -<<if FutureSocieties.availCredits() > 0>> - <p class="noteworthy"> - $arcologies[0].name's society is ready to begin accepting a new societal direction. - </p> -<</if>> - -<h2>Construction</h2> - -<p> - <div> - <<if $arcologyUpgrade.drones != 1>> - <span class="note"> - The first major upgrade needed is the installation of a drone security system so higher-class citizens will feel safe and protected should they choose to immigrate. This upgrade will cost <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology))>>. - </span> - <<link "Install drone security system" "Manage Arcology">> - <<run cashX(-Math.trunc(5000*$upgradeMultiplierArcology), "capEx")>> - <<set $arcologyUpgrade.drones = 1, $PC.skill.engineering += 1>> - <<if $secExpEnabled > 0>> - <<set $SecExp.units.bots = App.SecExp.unit.gen("bots")>> - <</if>> - <</link>> - <<elseif $arcologyUpgrade.hydro != 1>> - <span class="note"> - The next major upgrade needed is the installation of a better water reclamation system so your residents will have access to cheaper water and hydroponically grown food. This upgrade will cost <<print cashFormat(Math.trunc(10000*$upgradeMultiplierArcology))>>. - </span> - [[Upgrade water reclamation system|Manage Arcology][cashX(forceNeg(Math.trunc(10000*$upgradeMultiplierArcology)), "capEx"), $arcologyUpgrade.hydro = 1, $PC.skill.engineering += 1]] - <<elseif $arcologyUpgrade.apron != 1>> - <span class="note"> - The next major upgrade needed is the installation of a broader apron at the bottom of the arcology to increase its surface area and gather more solar energy. Right now, tenants that use a lot of power have to import it from outside. This upgrade will cost <<print cashFormat(Math.trunc(20000*$upgradeMultiplierArcology))>>. - </span> - [[Install solar apron|Manage Arcology][cashX(forceNeg(Math.trunc(20000*$upgradeMultiplierArcology)), "capEx"), $arcologyUpgrade.apron = 1, $PC.skill.engineering += 1]] - <<elseif $arcologyUpgrade.grid != 1>> - <span class="note"> - The next major upgrade needed is an improvement of the arcology's electrical transmission lines to make efficient use of the additional power from the solar apron. This upgrade will cost <<print cashFormat(Math.trunc(50000*$upgradeMultiplierArcology))>>. - </span> - [[Upgrade transmission lines|Manage Arcology][cashX(forceNeg(Math.trunc(50000*$upgradeMultiplierArcology)), "capEx"), $arcologyUpgrade.grid = 1, $PC.skill.engineering += 1]] - <<else>> - <span class="note"> - The arcology's public areas are fully upgraded. - </span> - <<includeDOM App.Arcology.upgrades($building)>> - <</if>> - </div> - - <div> - <<if $weatherCladding == 0>> - <span class="note"> - Extreme weather is becoming common worldwide. The arcology's exterior can be hardened to reduce damage in case of heavy weather, but this will reduce its beauty somewhat and will cost <<print cashFormat(Math.trunc(50000*$upgradeMultiplierArcology))>>. - Your citizens are - <<if $weatherAwareness == 0>> - likely to disapprove of this measure as alarmism. - <<else>> - <span class="noteworthy">concerned that this measure has not been taken already.</span> - <</if>> - </span> - [[Apply weather cladding|Manage Arcology][cashX(forceNeg(Math.trunc(50000*$upgradeMultiplierArcology)), "capEx"), $weatherCladding = 1, $PC.skill.engineering += 1]] - <<elseif $weatherCladding == 1 && $building.sections.length > 0>> - The arcology's exterior is jacketed with unsightly but sturdy weather cladding. Your arcology is so prosperous that remodeling the cladding into something beautiful is within the realm of possibility. This massive project will cost <<print cashFormat(Math.trunc(3500000*$upgradeMultiplierArcology))>> and without a doubt render your arcology one of the wonders of the world. - [[Remodel weather cladding|Manage Arcology][cashX(forceNeg(Math.trunc(3500000*$upgradeMultiplierArcology)), "capEx"), $weatherCladding = 2, $PC.skill.engineering += 1]] - <<elseif $weatherCladding == 1>> - <span class="note"> - The arcology's exterior is jacketed with unsightly but sturdy weather cladding. - </span> - <<elseif $weatherCladding == 2>> - <span class="note"> - The arcology's exterior is jacketed with gorgeously sculpted and fully functional weather cladding. - </span> - <</if>> - </div> - - <div> - <<if $FCTV.receiver > -1 && !$FCTV.weekEnabled>> - <<set _noSub = Math.trunc(25000*$upgradeMultiplierArcology*$HackingSkillMultiplier)>> - <<set _lightSub = Math.trunc(20000*$upgradeMultiplierArcology*$HackingSkillMultiplier)>> - <<set _heavySub = Math.trunc(10000*$upgradeMultiplierArcology*$HackingSkillMultiplier)>> - - You have not installed an FCTV receiver. - Installing this receiver yourself will cost <<print cashFormat(_noSub)>>. - You can have your citizens pay for the fiber optic upgrades, reducing the cost to <<print cashFormat(_lightSub)>>. - You can also have them heavily subsidize installation, they will be upset about it, but it will only cost <<print cashFormat(_heavySub)>>. - - <<link "No subsidy" "Manage Arcology">> - <<set $FCTV.receiver = 1, $FCTV.weekEnabled = $week, $PC.skill.hacking += 1>> - <<run FCTV.initChannels()>> - <<run cashX(forceNeg(_noSub), "capEx")>> - <<run repX(500, "capEx")>> - <</link>> - | - <<link "Light subsidy" "Manage Arcology">> - <<set $FCTV.receiver = 1, $FCTV.weekEnabled = $week, $PC.skill.hacking += 1>> - <<run FCTV.initChannels()>> - <<run cashX(forceNeg(_lightSub), "capEx")>> - /* No rep change */ - <</link>> - | - <<link "Heavy subsidy" "Manage Arcology">> - <<set $FCTV.receiver = 1, $FCTV.weekEnabled = $week, $PC.skill.hacking += 1>> - <<run FCTV.initChannels()>> - <<run cashX(forceNeg(Math.trunc(_heavySub), "capEx"))>> - <<run repX(-1500, "capEx")>> - <</link>> - <<elseif ($FCTV.receiver == 3)>> - You have installed the FCTV receiver and have access to the full range of FCTV's programs. High viewership rates amongst your citizens makes it easier to pursue your societal goals. - <<elseif ($FCTV.receiver == 2)>> - You have installed the FCTV receiver and have access to the full range of FCTV's programs. Decent viewership rates amongst your citizens makes it somewhat easier to pursue your societal goals. - <<elseif ($FCTV.receiver == 1)>> - You have installed the FCTV receiver and have access to the full range of FCTV's programs. Low viewership rates amongst your citizens limits the impact of FCTV on your societal goals. - <</if>> - </div> - - <<if ($PC.skill.engineering >= 100) || ($PC.career == "arcology owner")>> - <div class="note"> - Arcology upgrades are less expensive due to your - <span class="player skill"> - <<if $PC.career == "arcology owner">>experience in the Free Cities<<else>>arcology engineering training<</if>>. - </span> - </div> - <</if>> -</p> - -<<if $secExpEnabled == 0>> - <<if $weatherAwareness > 0>> - <p> - <<if $antiWeatherFreeze == 0>> - The extreme weather hurts your arcology's ability to function. Reinforcing your passenger terminals increase the weather range at which they can operate. - <div> - Reinforcing passenger terminals costs <<print cashFormat(50000)>> and increase upkeep. [[Reinforce|Manage Arcology][$antiWeatherFreeze = 1, cashX(-50000, "capEx")]] - </div> - <<elseif $antiWeatherFreeze == 1>> - You have reinforced your passenger terminals to function even during bad weather. You can invest into all-weather transportation to remain functional no matter what. - <div> - Investing in all-weather transportation costs <<print cashFormat(100000)>> and increase upkeep. [[Invest|Manage Arcology][$antiWeatherFreeze = 2, cashX(-100000, "capEx")]] - </div> - <<elseif $antiWeatherFreeze == 2>> - Your arcology's passenger terminals remain fully operational even during the most extreme weather. - <</if>> - </p> - <</if>> -<</if>> - -<<if $secExpEnabled > 0>> - <h2>Security</h2> - - <p> - <div> - <<if !$SecExp.buildings.propHub>> - [[Set up the propaganda Hub|Manage Arcology][cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierArcology*$HackingSkillMultiplier)), "capEx"), App.SecExp.propHub.Init(), $PC.skill.engineering += 1, $PC.skill.hacking += 1]] - <span class="detail"> - Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology*$HackingSkillMultiplier))>>. - <div class="indent">Building specialized in the management of authority.</div> - </span> - <<else>> - The [[Propaganda Hub|propagandaHub]] is ready to manipulate reality on your command. - <</if>> - </div> - - <div> - <<if !$SecExp.buildings.secHub>> - [[Set up the security headquarters|Manage Arcology][cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierArcology*$HackingSkillMultiplier)), "capEx"), App.SecExp.secHub.Init(), $PC.skill.engineering += 1, $PC.skill.hacking += 1]] - <span class="detail"> - Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology*$HackingSkillMultiplier))>>. - <div class="indent">Building specialized in the management of security and crime.</div> - </span> - <<else>> - The [[security HQ|securityHQ]] is constantly working to protect your arcology. - <</if>> - </div> - - <div> - <<if !$SecExp.buildings.barracks>> - [[Set up the barracks|Manage Arcology][cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierArcology)), "capEx"), App.SecExp.barracks.Init(), $PC.skill.engineering += 1]] - <span class="detail"> - Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology))>> - <div class="indent">Building specialized in the management of armed forces.</div> - </span> - <<else>> - The [[barracks|secBarracks]] patiently await your orders. - <</if>> - </div> - - <div> - <<if !$SecExp.buildings.riotCenter && $SecExp.settings.rebellion.enabled == 1>> - [[Set up the riot control center|Manage Arcology][cashX(forceNeg(Math.trunc(5000*$upgradeMultiplierArcology)), "capEx"), App.SecExp.riotCenter.Init(), $PC.skill.engineering += 1]] - <span class="detail"> - Costs <<print cashFormat(Math.trunc(5000*$upgradeMultiplierArcology))>> - <div class="indent">Building specialized in the management and suppression of rebellions.</div> - </span> - <<elseif $SecExp.settings.rebellion.enabled == 1>> - The [[Riot Control Center|riotControlCenter]] stands ready for action. - <</if>> - </div> - </p> -<</if>> - -<<if $difficultySwitch == 1>> - <h2>Disaster Response</h2> - - <p> - <<if $econWeatherDamage > 0>> - The recent terrible weather has damaged the local infrastructure. It is <span class="warning">reducing the local economy score by <<print $econWeatherDamage>>.</span> - <div> - <<if $disasterResponse == 0>> - Locals will do their best to repair the damage on their own, but setting up a disaster response unit will improve the recovery of infrastructure critical for keeping goods, people and information flowing smoothly in and out of your arcology. - <div> - Creating the unit will cost <<print cashFormat(50000)>> and incur upkeep. [[Create Disaster Response Unit|Manage Arcology][cashX(-50000, "capEx"), $disasterResponse = 1]] - </div> - <<elseif $disasterResponse == 1>> - You are sending your disaster response unit to repair critical infrastructure. They are doing what they can. - <div> - The unit can be made more effective with an additional investment of <<print cashFormat(100000)>>. This will also increase upkeep. [[Improve Disaster Response Unit|Manage Arcology][cashX(-100000, "capEx"), $disasterResponse = 2]] - </div> - <<else>> - Your highly capable disaster response unit is rapidly repairing the weather damage. - <</if>> - </div> - <<elseif $disasterResponse > 0>> - Your disaster response unit is idle. It will not cost you any upkeep this week. - <</if>> - </p> -<</if>> - -<<if $foodMarket > 0>> - <h2>Food Management</h2> - <<includeDOM App.UI.foodMarket()>> -<</if>> - -<h2>Sexual Service Policies</h2> - -<p> - <div> - If so desired, your assistant can help you manipulate the business environment within your arcology. - </div> - <div> - Currently outside parties are providing <<print $NPCMarketShare.lowerClass/10>>%, <<print $NPCMarketShare.middleClass/10>>%, <<print $NPCMarketShare.upperClass/10>>% and <<print $NPCMarketShare.topClass/10>>% of the sexual services for the lower, middle, upper and top class respectively. - </div> -</p> - -<p> - <div> - <<if $sexSubsidies.lowerClass == 0>> - You can provide a minor subsidy for those selling sexual services to the lower class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Minor Subsidy|Manage Arcology][$sexSubsidies.lowerClass = 1]] - <<elseif $sexSubsidies.lowerClass == 1>> - You are providing a minor subsidy for those selling sexual services to the lower class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Cancel Subsidy|Manage Arcology][$sexSubsidies.lowerClass = 0]] | [[Moderate Subsidy|Manage Arcology][$sexSubsidies.lowerClass = 2]] - <<elseif $sexSubsidies.lowerClass == 2>> - You are providing a moderate subsidy for those selling sexual services to the lower class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Minor Subsidy|Manage Arcology][$sexSubsidies.lowerClass = 1]] | [[Substantial Subsidy|Manage Arcology][$sexSubsidies.lowerClass = 3]] - <<elseif $sexSubsidies.lowerClass == 3>> - You are providing a substantial subsidy for those selling sexual services to the lower class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Moderate Subsidy|Manage Arcology][$sexSubsidies.lowerClass = 2]] | [[Gratuitous Subsidy|Manage Arcology][$sexSubsidies.lowerClass = 4]] - <<else>> - You are providing a gratuitous subsidy for those selling sexual services to the lower class. <span class="note">Upkeep is relative to the amount of sex provided by other parties</span> [[Substantial Subsidy|Manage Arcology][$sexSubsidies.lowerClass = 3]] - <</if>> - </div> - <div> - <<if $sexSupplyBarriers.lowerClass == 0>> - You can make things more difficult for those supplying sexual services in the lower class segment if you are willing to spend 1000 reputation and pay a flat upkeep of <span class="cash"><<print cashFormat(1000)>>.</span> <<if $rep > 1000>>[[Create Bureaucracy|Manage Arcology][$sexSupplyBarriers.lowerClass = 1, repX(-1000, "subsidiesAndBarriers")]] <<else>><span class="note">You are not reputable enough.</span><</if>> - <<elseif $sexSupplyBarriers.lowerClass == 1>> - You have forced some unneeded bureaucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(5000)>>.</span> <<if $rep > 1000>>[[Abolish Bureaucracy|Manage Arcology][$sexSupplyBarriers.lowerClass = 0, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.lowerClass = 2, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <<elseif $sexSupplyBarriers.lowerClass == 2>> - You have forced considerable bureaucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(20000)>>.</span> <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.lowerClass = 1, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.lowerClass = 3, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <<elseif $sexSupplyBarriers.lowerClass == 3>> - You have forced stifling bureaucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(60000)>>.</span> <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.lowerClass = 2, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.lowerClass = 4, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <<else>> - You have forced suffocating bureaucracy on those selling sexual services to the lower class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.lowerClass = 3, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <</if>> - </div> -</p> - -<p> - <div> - <<if $sexSubsidies.middleClass == 0>> - You can provide a minor subsidy for those selling sexual services to the middle class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Minor Subsidy|Manage Arcology][$sexSubsidies.middleClass = 1]] - <<elseif $sexSubsidies.middleClass == 1>> - You are providing a minor subsidy for those selling sexual services to the middle class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Cancel Subsidy|Manage Arcology][$sexSubsidies.middleClass = 0]] | [[Moderate Subsidy|Manage Arcology][$sexSubsidies.middleClass = 2]] - <<elseif $sexSubsidies.middleClass == 2>> - You are providing a moderate subsidy for those selling sexual services to the middle class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Minor Subsidy|Manage Arcology][$sexSubsidies.middleClass = 1]] | [[Substantial Subsidy|Manage Arcology][$sexSubsidies.middleClass = 3]] - <<elseif $sexSubsidies.middleClass == 3>> - You are providing a substantial subsidy for those selling sexual services to the middle class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Moderate Subsidy|Manage Arcology][$sexSubsidies.middleClass = 2]] | [[Gratuitous Subsidy|Manage Arcology][$sexSubsidies.middleClass = 4]] - <<else>> - You are providing a gratuitous subsidy for those selling sexual services to the middle class. <span class="note">Upkeep is relative to the amount of sex provided by other parties</span> [[Substantial Subsidy|Manage Arcology][$sexSubsidies.middleClass = 3]] - <</if>> - </div> - <div> - <<if $sexSupplyBarriers.middleClass == 0>> - You can make things more difficult for those supplying sexual services in the middle class segment if you are willing to spend 1000 reputation and pay a flat upkeep of <span class="cash"><<print cashFormat(1000)>>.</span> <<if $rep > 1000>>[[Create Bureaucracy|Manage Arcology][$sexSupplyBarriers.middleClass = 1, repX(-1000, "subsidiesAndBarriers")]] <<else>><span class="note">You are not reputable enough.</span><</if>> - <<elseif $sexSupplyBarriers.middleClass == 1>> - You have forced some unneeded bureaucracy on those selling sexual services to the middle class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(5000)>>.</span> <<if $rep > 1000>>[[Abolish Bureaucracy|Manage Arcology][$sexSupplyBarriers.middleClass = 0, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.middleClass = 2, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <<elseif $sexSupplyBarriers.middleClass == 2>> - You have forced considerable bureaucracy on those selling sexual services to the middle class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(20000)>>.</span> <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.middleClass = 1, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.middleClass = 3, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <<elseif $sexSupplyBarriers.middleClass == 3>> - You have forced stifling bureaucracy on those selling sexual services to the middle class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(60000)>>.</span> <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.middleClass = 2, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.middleClass = 4, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <<else>> - You have forced suffocating bureaucracy on those selling sexual services to the middle class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.middleClass = 3, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <</if>> - </div> -</p> - -<p> - <div> - <<if $sexSubsidies.upperClass == 0>> - You can provide a minor subsidy for those selling sexual services to the upper class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Minor Subsidy|Manage Arcology][$sexSubsidies.upperClass = 1]] - <<elseif $sexSubsidies.upperClass == 1>> - You are providing a minor subsidy for those selling sexual services to the upper class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Cancel Subsidy|Manage Arcology][$sexSubsidies.upperClass = 0]] | [[Moderate Subsidy|Manage Arcology][$sexSubsidies.upperClass = 2]] - <<elseif $sexSubsidies.upperClass == 2>> - You are providing a moderate subsidy for those selling sexual services to the upper class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Minor Subsidy|Manage Arcology][$sexSubsidies.upperClass = 1]] | [[Substantial Subsidy|Manage Arcology][$sexSubsidies.upperClass = 3]] - <<elseif $sexSubsidies.upperClass == 3>> - You are providing a substantial subsidy for those selling sexual services to the upper class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Moderate Subsidy|Manage Arcology][$sexSubsidies.upperClass = 2]] | [[Gratuitous Subsidy|Manage Arcology][$sexSubsidies.upperClass = 4]] - <<else>> - You are providing a gratuitous subsidy for those selling sexual services to the upper class. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Substantial Subsidy|Manage Arcology][$sexSubsidies.upperClass = 3]] - <</if>> - </div> - <div> - <<if $sexSupplyBarriers.upperClass == 0>> - You can make things more difficult for those supplying sexual services in the upper class segment if you are willing to spend 1000 reputation and pay a flat upkeep of <span class="cash"><<print cashFormat(1000)>>.</span> <<if $rep > 1000>>[[Create Bureaucracy|Manage Arcology][$sexSupplyBarriers.upperClass = 1, repX(-1000, "subsidiesAndBarriers")]] <<else>><span class="note">You are not reputable enough.</span><</if>> - <<elseif $sexSupplyBarriers.upperClass == 1>> - You have forced some unneeded bureaucracy on those selling sexual services to the upper class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(5000)>>.</span> <<if $rep > 1000>>[[Abolish Bureaucracy|Manage Arcology][$sexSupplyBarriers.upperClass = 0, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.upperClass = 2, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough</span><</if>> - <<elseif $sexSupplyBarriers.upperClass == 2>> - You have forced considerable bureaucracy on those selling sexual services to the upper class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(20000)>>.</span> <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.upperClass = 1, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.upperClass = 3, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <<elseif $sexSupplyBarriers.upperClass == 3>> - You have forced stifling bureaucracy on those selling sexual services to the upper class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(60000)>>.</span> <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.upperClass = 2, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.upperClass = 4, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <<else>> - You have forced suffocating bureaucracy on those selling sexual services to the upper class making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.upperClass = 3, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <</if>> - </div> -</p> - -<p> - <div> - <<if $sexSubsidies.topClass == 0>> - You can provide a minor subsidy for those selling sexual services to the millionaires. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Minor Subsidy|Manage Arcology][$sexSubsidies.topClass = 1]] - <<elseif $sexSubsidies.topClass == 1>> - You are providing a minor subsidy for those selling sexual services to the millionaires. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Cancel Subsidy|Manage Arcology][$sexSubsidies.topClass = 0]] | [[Moderate Subsidy|Manage Arcology][$sexSubsidies.topClass = 2]] - <<elseif $sexSubsidies.topClass == 2>> - You are providing a moderate subsidy for those selling sexual services to the millionaires. <span class="note">Upkeep is relative to the amount of sex provided by other parties.</span> [[Minor Subsidy|Manage Arcology][$sexSubsidies.topClass = 1]] | [[Substantial Subsidy|Manage Arcology][$sexSubsidies.topClass = 3]] - <<elseif $sexSubsidies.topClass == 3>> - You are providing a substantial subsidy for those selling sexual services to the millionaires. <span class="note">Upkeep is relative to the amount of sex provided by other parties</span> [[Moderate Subsidy|Manage Arcology][$sexSubsidies.topClass = 2]] | [[Gratuitous Subsidy|Manage Arcology][$sexSubsidies.topClass = 4]] - <<else>> - You are providing a gratuitous subsidy for those selling sexual services to the millionaires. <span class="note">Upkeep is relative to the amount of sex provided by other parties</span> [[Substantial Subsidy|Manage Arcology][$sexSubsidies.topClass = 3]] - <</if>> - </div> - <div> - <<if $sexSupplyBarriers.topClass == 0>> - You can make things more difficult for those supplying sexual services in the millionaires segment if you are willing to spend 1000 reputation and pay a flat upkeep of <span class="cash"><<print cashFormat(1000)>>.</span> <<if $rep > 1000>>[[Create Bureaucracy|Manage Arcology][$sexSupplyBarriers.topClass = 1, repX(-1000, "subsidiesAndBarriers")]] <<else>><span class="note">You are not reputable enough.</span><</if>> - <<elseif $sexSupplyBarriers.topClass == 1>> - You have forced some unneeded bureaucracy on those selling sexual services to the millionaires making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(5000)>>.</span> <<if $rep > 1000>>[[Abolish Bureaucracy|Manage Arcology][$sexSupplyBarriers.topClass = 0, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.topClass = 2, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <<elseif $sexSupplyBarriers.topClass == 2>> - You have forced considerable bureaucracy on those selling sexual services to the millionaires making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(20000)>>.</span> <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.topClass = 1, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.topClass = 3, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough</span><</if>> - <<elseif $sexSupplyBarriers.topClass == 3>> - You have forced stifling bureaucracy on those selling sexual services to the millionaires making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. Increasing the bureaucracy further will cost a flat upkeep of <span class="cash"><<print cashFormat(60000)>>.</span> <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.topClass = 2, repX(-1000, "subsidiesAndBarriers")]] | [[Increase Bureaucracy|Manage Arcology][$sexSupplyBarriers.topClass = 4, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough.</span><</if>> - <<else>> - You have forced suffocating bureaucracy on those selling sexual services to the millionaires making things a little more difficult. If you are willing to spend 1000 reputation you can change this policy. <<if $rep > 1000>>[[Reduce Bureaucracy|Manage Arcology][$sexSupplyBarriers.topClass = 3, repX(-1000, "subsidiesAndBarriers")]]<<else>><span class="note">You are not reputable enough</span><</if>> - <</if>> - </div> -</p> - -<h2>Population and Rent</h2> - -<p> - <<print $arcologies[0].name>> is home to the following; - <<set _percACitizens = Math.trunc(($ACitizens / ($ACitizens + $ASlaves)) * 1000) / 10, - _percASlaves = Math.trunc(($ASlaves / ($ACitizens + $ASlaves)) * 1000) / 10, - _percLowerClass = Math.trunc(($lowerClass / ($ACitizens + $ASlaves)) * 1000) / 10, - _percMiddleClass = Math.trunc(($middleClass / ($ACitizens + $ASlaves)) * 1000) / 10, - _percUpperClass = Math.trunc(($upperClass / ($ACitizens + $ASlaves)) * 1000) / 10, - _percTopClass = Math.trunc(($topClass / ($ACitizens + $ASlaves)) * 1000) / 10, - _rentLowerClass = Math.trunc($rent.lowerClass * (1 + (5 - $baseDifficulty) / 20) / 0.25) / 100, - _rentMiddleClass = Math.trunc($rent.middleClass * (1 + (5 - $baseDifficulty) / 20) / 0.25) / 100, - _rentUpperClass = Math.trunc($rent.upperClass * (1 + (5 - $baseDifficulty) / 20) / 25), - _rentTopClass = Math.trunc($rent.topClass * (1 + (5 - $baseDifficulty) / 20) / 25)>> - <div> - Lower Class Citizens | $lowerClass | <<print _percLowerClass>>% | Rent <span class="cash"><<print cashFormat(_rentLowerClass)>></span> - <<if $rent.lowerClass > $rentDefaults.lowerClass * 1.5>> - <span class="note">Very High</span> | [[Decrease|Manage Arcology][$rent.lowerClass = $rentDefaults.lowerClass * 1.5, $rentEffectL = 0.94, $whoreBudget.lowerClass *= 9 / 8]] - <<elseif $rent.lowerClass > $rentDefaults.lowerClass>> - <span class="note">High</span> | [[Increase|Manage Arcology][$rent.lowerClass = $rentDefaults.lowerClass * 2, $rentEffectL = 0.85, $whoreBudget.lowerClass *= 8 / 9]] | [[Decrease|Manage Arcology][$rent.lowerClass = $rentDefaults.lowerClass, $rentEffectL = 1, $whoreBudget.lowerClass *= 10 / 9]] - <<elseif $rent.lowerClass > $rentDefaults.lowerClass * 0.5>> - <span class="note">Average</span> | [[Increase|Manage Arcology][$rent.lowerClass = $rentDefaults.lowerClass * 1.5, $rentEffectL = 0.94, $whoreBudget.lowerClass *= 9 / 10]] | [[Decrease|Manage Arcology][$rent.lowerClass = $rentDefaults.lowerClass * 0.5, $rentEffectL = 1.04, $whoreBudget.lowerClass *= 11 / 10]] - <<elseif $rent.lowerClass > 0>> - <span class="note">Low</span> | [[Increase|Manage Arcology][$rent.lowerClass = $rentDefaults.lowerClass, $rentEffectL = 1, $whoreBudget.lowerClass *= 10 / 11]] | [[Free Rent|Manage Arcology][$rent.lowerClass = 0, $rentEffectL = 1.1, $whoreBudget.lowerClass *= 12 / 11]] - <<else>> - <span class="note">Free</span> | [[Increase|Manage Arcology][$rent.lowerClass = $rentDefaults.lowerClass * 0.5, $rentEffectL = 1.04, $whoreBudget.lowerClass *= 11 / 12]] - <</if>> - </div> - <div> - Middle Class Citizens | $middleClass | <<print _percMiddleClass>>% | Rent <span class="cash"><<print cashFormat(_rentMiddleClass)>></span> - <<if $rent.middleClass > $rentDefaults.middleClass * 1.5>> - <span class="note">Very High</span> | [[Decrease|Manage Arcology][$rent.middleClass = $rentDefaults.middleClass * 1.5, $rentEffectM = 0.94, $whoreBudget.middleClass *= 9 / 8]] - <<elseif $rent.middleClass > $rentDefaults.middleClass>> - <span class="note">High</span> | [[Increase|Manage Arcology][$rent.middleClass = $rentDefaults.middleClass * 2, $rentEffectM = 0.85, $whoreBudget.middleClass *= 8 / 9]] | [[Decrease|Manage Arcology][$rent.middleClass = $rentDefaults.middleClass, $rentEffectM = 1, $whoreBudget.middleClass *= 10 / 9]] - <<elseif $rent.middleClass > $rentDefaults.middleClass * 0.5>> - <span class="note">Average</span> | [[Increase|Manage Arcology][$rent.middleClass = $rentDefaults.middleClass * 1.5, $rentEffectM = 0.94, $whoreBudget.middleClass *= 9 / 10]] | [[Decrease|Manage Arcology][$rent.middleClass = $rentDefaults.middleClass * 0.5, $rentEffectM = 1.04, $whoreBudget.middleClass *= 11 / 10]] - <<elseif $rent.middleClass > 0>> - <span class="note">Low</span> | [[Increase|Manage Arcology][$rent.middleClass = $rentDefaults.middleClass, $rentEffectM = 1, $whoreBudget.middleClass *= 10 / 11]] | [[Free Rent|Manage Arcology][$rent.middleClass = 0, $rentEffectM = 1.1, $whoreBudget.middleClass *= 12 / 11]] - <<else>> - <span class="note">Free</span> | [[Increase|Manage Arcology][$rent.middleClass = $rentDefaults.middleClass * 0.5, $rentEffectM = 1.04, $whoreBudget.middleClass *= 11 / 12]] - <</if>> - </div> - <div> - Upper Class Citizens | $upperClass | <<print _percUpperClass>>% | Rent <span class="cash"><<print cashFormat(_rentUpperClass)>></span> - <<if $rent.upperClass > $rentDefaults.upperClass * 1.5>> - <span class="note">Very High</span> | [[Decrease|Manage Arcology][$rent.upperClass = $rentDefaults.upperClass * 1.5, $rentEffectU = 0.94, $whoreBudget.upperClass *= 9 / 8]] - <<elseif $rent.upperClass > $rentDefaults.upperClass>> - <span class="note">High</span> | [[Increase|Manage Arcology][$rent.upperClass = $rentDefaults.upperClass * 2, $rentEffectU = 0.85, $whoreBudget.upperClass *= 8 / 9]] | [[Decrease|Manage Arcology][$rent.upperClass = $rentDefaults.upperClass, $rentEffectU = 1, $whoreBudget.upperClass *= 10 / 9 ]] - <<elseif $rent.upperClass > $rentDefaults.upperClass * 0.5>> - <span class="note">Average</span> | [[Increase|Manage Arcology][$rent.upperClass = $rentDefaults.upperClass * 1.5, $rentEffectU = 0.94, $whoreBudget.upperClass *= 9 / 10]] | [[Decrease|Manage Arcology][$rent.upperClass = $rentDefaults.upperClass * 0.5, $rentEffectU = 1.04, $whoreBudget.upperClass *= 11 / 10]] - <<elseif $rent.upperClass > 0>> - <span class="note">Low</span> | [[Increase|Manage Arcology][$rent.upperClass = $rentDefaults.upperClass, $rentEffectU = 1, $whoreBudget.upperClass *= 10 / 11]] | [[Free Rent|Manage Arcology][$rent.upperClass = 0, $rentEffectU = 1.1, $whoreBudget.upperClass *= 12 / 11]] - <<else>> - <span class="note">Free</span> | [[Increase|Manage Arcology][$rent.upperClass = $rentDefaults.upperClass * 0.5, $rentEffectU = 1.04, $whoreBudget.upperClass *= 11 / 12]] - <</if>> - </div> - <div> - Millionaires | $topClass | <<print _percTopClass>>% | Rent <span class="cash"><<print cashFormat(_rentTopClass)>></span> - <<if $rent.topClass > $rentDefaults.topClass * 1.5>> - <span class="note">Very High</span> | [[Decrease|Manage Arcology][$rent.topClass = $rentDefaults.topClass * 1.5, $rentEffectT = 0.94, $whoreBudget.topClass *= 9 / 8]] - <<elseif $rent.topClass > $rentDefaults.topClass>> - <span class="note">High</span> | [[Increase|Manage Arcology][$rent.topClass = $rentDefaults.topClass * 2, $rentEffectT = 0.85, $whoreBudget.topClass *= 8 / 9]] | [[Decrease|Manage Arcology][$rent.topClass = $rentDefaults.topClass, $rentEffectT = 1, $whoreBudget.topClass *= 10 / 9]] - <<elseif $rent.topClass > $rentDefaults.topClass * 0.5>> - <span class="note">Average</span> | [[Increase|Manage Arcology][$rent.topClass = $rentDefaults.topClass * 1.5, $rentEffectT = 0.94, $whoreBudget.topClass *= 9 / 10]] | [[Decrease|Manage Arcology][$rent.topClass = $rentDefaults.topClass * 0.5, $rentEffectT = 1.04, $whoreBudget.topClass *= 11 / 10]] - <<elseif $rent.topClass > 0>> - <span class="note">Low</span> | [[Increase|Manage Arcology][$rent.topClass = $rentDefaults.topClass, $rentEffectT = 1, $whoreBudget.topClass *= 10 / 11]] | [[Free Rent|Manage Arcology][$rent.topClass = 0, $rentEffectT = 1.1, $whoreBudget.topClass *= 12 / 11]] - <<else>> - <span class="note">Free</span> | [[Increase|Manage Arcology][$rent.topClass = $rentDefaults.topClass * 0.5, $rentEffectT = 1.04, $whoreBudget.topClass *= 11 / 12]] - <</if>> - </div> - <div> - Slaves | $ASlaves | <<print _percASlaves>>% - </div> -</p> - -<h2>Language</h2> - -<p> - The lingua franca of the arcology is <strong>$language</strong>. - <<link "Language options">><<set $seed = $language>><<goto "Change Language">><</link>> -</p> - -<h2>Special Arcology Upgrades</h2> - -<p class="indent"> - <<if ($personalArms == 0) && ($mercenaries == 0) && ($assistant.personality <= 0)>> - <span class="note">$arcologies[0].name has no special upgrades.</span> - <</if>> - - <<if ($personalArms == 1)>> - You own a prototype powered exoskeleton that mounts armor and a smart mortar system, and has rifles mounted into its forearms. - <<elseif ($personalArms > 1)>> - You own a prototype powered exoskeleton that mounts armor and a smart mortar system, and has rifles mounted into its forearms. Furthermore, your security drones can rearm with small-caliber guns if necessary. - <</if>> - - <<if ($mercenaries > 0)>> - <<if ($mercenaries == 1)>> - A squad of mercenaries is permanently quartered in $arcologies[0].name. They are grim men and women, heavily armed and armored. - <<elseif ($mercenaries < 5)>> - A full platoon of mercenaries is permanently quartered in $arcologies[0].name. They are grim men and women, heavily armed and armored. - <<elseif ($mercenaries >= 5)>> - You have permanently settled a full company of mercenaries in $arcologies[0].name as your $mercenariesTitle. They are grim men and women who appreciate their luxurious life here and train hard to keep their skills with their prototype armor sharp. - <</if>> - <</if>> - - <<if $assistant.personality > 0>> - <<setAssistantPronouns>> - <<= capFirstChar($assistant.name)>> is using an alternative personality setting, speaking in a sultry, sexual voice, and talking as though the penthouse's sex toys are _hisA body. - <<if $assistant.personality > 1>> - _HeA also has charge of all smart piercings in the arcology, and is using _hisA adaptations to sexual duties to improve their effectiveness. - <</if>> - <</if>> -</p> - -<p> - Your slaves have participated in approximately <<print num($oralTotal+$vaginalTotal+$analTotal)>> sexual encounters: <<print num($oralTotal)>> primarily oral, <<print num($vaginalTotal)>> vanilla, <<print num($mammaryTotal)>> mammary, <<print num($analTotal)>> anal, and <<print num($penetrativeTotal)>> with the slave penetrating another. They have produced about <<print num($milkTotal)>> liters of marketable milk, <<if $seeDicks != 0>>about <<print num($cumTotal)>> deciliters of marketable cum, <</if>>and have given birth <<print num($birthsTotal)>> times. - - <<if $abortionsTotal > 0 && $miscarriagesTotal > 0>> - They have had a total of <<print num($abortionsTotal)>> abortions and <<print num($miscarriagesTotal)>> miscarriages. - <<elseif $abortionsTotal > 0>> - They have had a total of <<print num($abortionsTotal)>> abortions. - <<elseif $miscarriagesTotal > 0>> - They have had a total of <<print num($miscarriagesTotal)>> miscarriages. - <</if>> - - <<if $fuckdollsSold > 0>> - $fuckdollsSold mindbroken arcade slaves have been converted into Fuckdolls and sold. - <</if>> -</p> - -<<if $pitFightsTotal > 0 && $pitKillsTotal > 0>> - <p> - $arcologies[0].name has hosted <<print num ($pitFightsTotal)>> pit fights, and <<print num ($pitKillsTotal)>> slaves have died in your pit. - </p> -<<elseif $pitFightsTotal > 0>> - <p> - $arcologies[0].name has hosted <<print num ($pitFightsTotal)>> pit fights. - </p> -<</if>> - -<<if $secExpEnabled > 0>> - <<set _countBattles = $SecExp.battles.victories + $SecExp.battles.losses>> - <<set _countRebellions = $SecExp.rebellions.victories + $SecExp.rebellions.losses>> - <p> - <<if $SF.Toggle === 0||$SF.Active === 0>> - Your army counts <<print num(App.SecExp.Manpower.employedOverall)>> total soldiers. - <<elseif $SF.Toggle && $SF.Active >= 1>> - Your army counts <<print num(App.SecExp.Manpower.employedOverall + $SF.ArmySize)>> total soldiers of which <<print num($SF.ArmySize)>> under the special force command and the rest under your direct control. - <</if>> - <<if $SecExp.settings.battle.enabled === 1 && _countBattles > 0>> - Your troops were involved in <<print num(_countBattles)>> battles of which <<print num($SecExp.battles.major)>> were major engagements. - <<if _countBattles === $SecExp.battles.victories>> - You won all of them. - <<elseif _countBattles === $SecExp.battles.losses>> - You won none of them. - <<else>> - You won <<print num($SecExp.battles.victories)>> of them, while the enemy managed to gain the upper hand in the other <<print num($SecExp.battles.losses)>>. - <</if>> - During all battles you lost a total of <<print num(App.SecExp.unit.list().slice(1).reduce((acc, cur) => acc + V.SecExp.units[cur].dead, 0))>> men, while scoring a total of <<print num($SecExp.core.totalKills)>> kills. - <</if>> - <<if $SecExp.settings.rebellion.enabled === 1 && _countRebellions > 0>> - Your arcology was involved in <<print num(_countRebellions)>> rebellions. You won <<print num($SecExp.rebellions.victories)>> of them, while the rebels defeated your forces in <<print num($SecExp.rebellions.losses)>>. - <</if>> - </p> -<</if>> - -<p> - Your arcology is named <<textbox "$arcologies[0].name" $arcologies[0].name "Manage Arcology">> -</p> - -<<if $experimental.dinnerParty == 1 && $seeExtreme == 1>> - <p> - [[Host Dinner Party|Dinner Party Preparations]] - </p> -<</if>>