///
module Elements.AppearanceHandler {
var target = document.getElementById("appearanceTarget");
function empty () {
while (target.firstChild) {
target.removeChild(target.firstChild);
}
}
export async function print (say : Say) {
await say.getHTML("p", ["appearanceDescription"]).then(value => {
for (let i = 0; i < value.length; i++) {
target.appendChild(value[i]);
}
});
}
export async function updateAppearance () {
empty();
// TODO: maybe use multiple names for "dick"
let player: Humanoid = WorldState.player;
let playerGender = player.getGenderValue();
let playerSluttiness = player.getSluttiness();
// let playerTop = player.getTopClothOn(Humanoid.SLOT_BREASTS);
// let playerBottom = player.getTopClothOn(Humanoid.SLOT_LEG_UPPER);
// let playerShoes = player.getTopClothOn(Humanoid.SLOT_FEET);
let you = new SayLink("You");
you.setAction(new ActionExamine(WorldState.player, WorldState.player));
let presentation = new Say(you, " are presenting as ", new SayAn(), player.getShortestDescription(), ".");
if (playerSluttiness.naked) {
presentation.add(" You are naked.");
} else if (playerSluttiness.halfNaked) {
presentation.add(" You are almost naked.");
}
let tits = Thing.PartRelation.getRightTypeOne(player, HumanoidBreasts);
let penis = Thing.PartRelation.getRightTypeOne(player, HumanoidPenis);
let bulges = player.getBulges();
if (bulges.breasts > 0 || playerGender.genderValueCorrected > 60) {
let realTits = tits.getSizeText();
let fakeTits = HumanoidBreasts.getSizeText(bulges.breasts);
presentation.add(" You have " + realTits + " breasts");
if (bulges.breasts != tits.getSize() && realTits != fakeTits) {
presentation.add(", padded to appear as " + fakeTits + " through your clothing.");
} else {
if (!tits.isUncovered()) {
presentation.add(", safely covered.")
} else {
presentation.add(".");
}
}
}
// presentation.add(Say.PARAGRAPH_BREAK, new SayBold("Gender Value: "), playerGender.genderValueCorrected);
// presentation.add(Say.PARAGRAPH_BREAK, new SayBold("Sluttiness Value: "), playerSluttiness.sluttinessCorrected);
//presentation.add(Say.PARAGRAPH_BREAK, new SayBold("Breasts: "), tits.getSizeText(), " (Visible as " + HumanoidBreasts.getSizeText(bulges.breasts) + ")");
if (penis == undefined) {
presentation.add(" You have ", new SayAn(), HumanoidPenis.getSizeText(bulges.crotch) + " crotch bulge visible through your clothing.");
} else {
let realDick = penis.getSizeText();
let fakeDick = HumanoidPenis.getSizeText(bulges.crotch);
presentation.add(" You have ", new SayAn(), realDick + " dick");
if (penis.getActualSize() != bulges.crotch && realDick != fakeDick) {
presentation.add(", which looks like it is " + fakeDick + " due to your clothing.")
} else {
if (!penis.isUncovered()) {
presentation.add(", which is covered.");
} else {
presentation.add(".");
}
}
}
// if (penis == undefined) {
// if (bulges.crotch > 0) {
// presentation.add(Say.PARAGRAPH_BREAK, "You have ", new SayAn(), HumanoidPenis.getSizeText(bulges.crotch) + " bulge visible on your crotch.");
// }
// } else {
// presentation.add(Say.PARAGRAPH_BREAK,
// new SayBold("Dick: "),
// penis.getSizeText(),
// " (Visible as ",
// new SayAn(),
// HumanoidPenis.getSizeText(bulges.crotch),
// playerGender.hasPenis ?
// (penis.isFlaccid ? " flaccid" : " erect") +
// (penis.getActualSize() < 9 ? " microdick" : " cock")
// : " bulge",
// ")"
// );
// }
// TODO: Check if has a specific look to it. Optional. Hard to do.
// Examples: "You are dressed casually like a woman.", "You are wearing formal women's clothing." etc.
// Current Stance
if (player.stance == PersonStance.ALLFOURS) {
presentation.add(Say.PARAGRAPH_BREAK, "You are currently crouching.");
}
await print(presentation);
}
}