Newer
Older
/**
* Returns a block that describes an overview of the slave's impact on your reputation and finances in the short term
* @param {App.Entity.SlaveState} slave
*/
globalThis.slaveExpenses = function(slave) {
const frag = new DocumentFragment();
let div;
// Generate the lines of the report
for (const line of getSlaveCostArray(slave)) {
div = document.createElement("div");
div.classList.add("indent");
App.UI.DOM.appendNewElement("span", div, `${line.text}: `);
App.UI.DOM.appendNewElement("span", div, cashFormat(line.value), "cash");
frag.append(div);
}
// Total expenses
const individualCosts = getSlaveCost(slave);
div = document.createElement("div");
div.classList.add("double-indent");
App.UI.DOM.appendNewElement("span", div, "Predicted expense", "underline");
div.append(": ");
div.append(App.UI.DOM.cashFormat(-individualCosts));
frag.append(div);
// Income from last week vs expense gives net, assistant gated
if (V.assistant.power > 0) {
if (slave.lastWeeksCashIncome > 0) {
div = document.createElement("div");
div.classList.add("indent");
App.UI.DOM.appendNewElement("span", div, `Income: `);
div.append(App.UI.DOM.cashFormat(slave.lastWeeksCashIncome));
frag.append(div);
div = document.createElement("div");
div.classList.add("double-indent");
App.UI.DOM.appendNewElement("span", div, `Total`, "underline");
App.UI.DOM.appendNewElement("span", div, `: `);
div.append(App.UI.DOM.cashFormat(slave.lastWeeksCashIncome - individualCosts));
frag.append(div);
}
}
frag.append(slaveImpactLongTerm(slave));
return frag;
};
/**
* Returns a block that describes an overview of the slave's impact on your reputation and finances over the long term
* @param {App.Entity.SlaveState} slave
*/
globalThis.slaveImpactLongTerm = function(slave) {
const frag = new DocumentFragment();
const {he, his, him} = getPronouns(slave);
let p;
let div;
let _Cost;
let _Expense;
let _Income;
let text;
// Background and original cost
if (slave.origin !== 0) {
App.UI.DOM.appendNewElement("div", frag, pronounsForSlaveProp(slave, slave.origin), "indent");
}
div = document.createElement("div");
div.classList.add("indent");
if (slave.slaveCost < 0) {
div.append(`You bought ${him} for: `);
div.append(App.UI.DOM.cashFormat(slave.slaveCost));
div.append(`.`);
_Cost = slave.slaveCost;
} else if (slave.slaveCost === 0) {
div.append(`You spent nothing to acquire ${him}.`);
_Cost = slave.slaveCost;
} else {
text = `You have no record of how much `;
if (slave.origin !== 0) {
text += `this`;
} else {
text += `${he} originally`;
}
text += ` cost.`;
div.append(text);
_Cost = 0;
}
frag.append(div);
// Lifetime totals, assistant gated
if (V.assistant.power > 0) {
div = document.createElement("div");
div.classList.add("indent");
if (slave.lifetimeCashExpenses < 0) {
text = `In ${his} `;
if (_weeksOwned > 0) {
if (_weeksOwned === 1) {
text += `week`;
} else {
text += `weeks`;
}
} else {
text += `time`;
}
text += ` with you, ${he} has cost `;
div.append(text);
div.append(App.UI.DOM.cashFormat(slave.lifetimeCashExpenses));
div.append(`.`);
div = document.createElement("div");
div.classList.add("indent");
if (slave.lifetimeCashIncome > 0) {
text = `In ${his} `;
if (_weeksOwned > 0) {
if (_weeksOwned === 1) {
text += `week`;
} else {
text += `weeks`;
}
} else {
text += `time`;
}
text += ` with you, ${he} has earned `;
div.append(text);
div.append(App.UI.DOM.cashFormat(slave.lifetimeCashIncome));
div.append(`.`);
div = document.createElement("div");
div.classList.add("indent");
div.append(`Overall, `);
div.append(`you have made `);
div.append(App.UI.DOM.cashFormat(_Income + _Cost + _Expense));
div.append(` net from ${his} labors.`);
div.append(`${he} has cost you `);
div.append(App.UI.DOM.cashFormat(_Income + _Cost + _Expense));
div.append(`.`);
p = document.createElement("p");
if (slave.lifetimeRepIncome !== 0 || slave.lifetimeRepExpenses !== 0) {
let _repTotal = (slave.lifetimeRepIncome + slave.lifetimeRepExpenses);
if (V.cheatMode === 1 || V.debugMode === 1) {
if (slave.lifetimeRepIncome !== 0) {
div = document.createElement("div");
div.classList.add("indent");
div.append(`This week ${he} has `);
div.append(`improved your reputation by `);
App.UI.DOM.appendNewElement("span", div, num(slave.lastWeeksRepIncome), "green");
div.append(` and `);
div.append(`over ${his} entire time with you, ${he} gained `);
App.UI.DOM.appendNewElement("span", div, `${num(slave.lifetimeRepIncome)}.`, "green");
p.append(div);
div = document.createElement("div");
div.classList.add("indent");
div.append(`This week ${he} has `);
App.UI.DOM.appendNewElement("span", div, slave.lastWeeksRepExpenses.toString(), "red");
div.append(`over ${his} entire time with you, ${he} cost `);
App.UI.DOM.appendNewElement("span", div, `${slave.lifetimeRepExpenses}.`, "red");
p.append(div);
div = document.createElement("div");
div.classList.add("indent");
div.append(`Overall then, ${he} has changed your reputation by `);
span = document.createElement("span");
span.append(num(_repTotal));
div.append(span);
p.append(div);
} else {
/* lowercasedonkey: TODO: I don't like how vague my placeholder is. Probably need to set up some kind of sliding scale to describe how much rep (roughly) she has made or lost. Need to get a sense of common ranges. */
div = document.createElement("div");
div.classList.add("indent");
div.append(`Overall, ${he} has `);
App.UI.DOM.appendNewElement("span", div, `increased `, "green");
App.UI.DOM.appendNewElement("span", div, `decreased `, "red");