diff --git a/src/art/genAI/prompts/skinPromptPart.js b/src/art/genAI/prompts/skinPromptPart.js index c46da445963e6689edd4c40af70c73e440fa2393..c937f435576b75f8b5a8d03e0ce39771ed38f219 100644 --- a/src/art/genAI/prompts/skinPromptPart.js +++ b/src/art/genAI/prompts/skinPromptPart.js @@ -3,62 +3,82 @@ App.Art.GenAI.SkinPromptPart = class SkinPromptPart extends App.Art.GenAI.Prompt * @override */ positive() { + let skinDesc = ""; + + // Albinism takes full priority if (this.slave.geneticQuirks.albinism === 2) { - return "albino"; + skinDesc = "albino"; + // Furry races override standard skin + } else if (this.slave.race === "catgirl") { + skinDesc = `covered in ${this.slave.skin} fur`; + // Otherwise, determine based on skin tone + } else { + switch (this.slave.skin) { + case "pure white": + case "ivory": + case "white": + case "extremely fair": + skinDesc = "white skin"; + break; + case "extremely pale": + case "very pale": + case "pale": + case "light beige": + case "very fair": + skinDesc = this.helper.isIll() ? "fair skin" : "pale skin"; + break; + case "fair": + case "light": + case "beige": + skinDesc = "fair skin"; + break; + case "light olive": + case "sun tanned": + case "spray tanned": + case "tan": + skinDesc = "tan skin"; + break; + case "olive": + case "bronze": + case "dark beige": + skinDesc = this.helper.isXLOrPony() ? "olive skin" : "tan skin"; + break; + case "dark olive": + case "light brown": + case "brown": + skinDesc = this.helper.isXLBased() ? "brown skin" : "tan skin"; + break; + case "dark": + case "dark brown": + case "black": + case "ebony": + skinDesc = this.helper.lora("melanin", 0.8, ", melanin, ") + "dark skin"; + break; + case "pure black": + skinDesc = this.helper.lora("melanin", 1, ", melanin, ") + "black skin"; + break; + default: + skinDesc = `${this.slave.skin} skin`; + } } - if (this.slave.race === "catgirl") { - return `covered in ${this.slave.skin} fur`; + // ─── MARKINGS ─── + const marking = this.slave.markings?.toLowerCase?.(); + if (marking && marking !== "none") { + if (marking === "beauty mark") { + skinDesc += ", a small beauty mark"; + } else if (marking === "birthmark") { + skinDesc += ", a subtle birthmark"; + } else if (marking === "freckles") { + skinDesc += ", light freckles across her skin"; + } else if (marking === "heavily freckled") { + skinDesc += ", heavily freckled skin"; + } else { + skinDesc += `, with body markings: ${marking}`; + } } - switch (this.slave.skin) { - case "pure white": - case "ivory": - case "white": - case "extremely fair": - return "white skin"; - case "extremely pale": - case "very pale": - case "pale": - case "light beige": - case "very fair": - if (this.helper.isIll()) { - return "fair skin"; // pale skin makes the skin almost pure white - } - return "pale skin"; - case "fair": - case "light": - case "beige": - return "fair skin"; - case "light olive": - case "sun tanned": - case "spray tanned": - case "tan": - return "tan skin"; - case "olive": - case "bronze": - case "dark beige": - if (this.helper.isXLOrPony()) { - return "olive skin"; - } - return "tan skin"; - case "dark olive": - case "light brown": - case "brown": - if (this.helper.isXLBased()) { - return "brown skin"; - } - return "tan skin"; - case "dark": - case "dark brown": - case "black": - case "ebony": - return this.helper.lora("melanin", .8, ", melanin, ") + "dark skin"; - case "pure black": - return this.helper.lora("melanin", 1, ", melanin, ") + "black skin"; - default: - return `${this.slave.skin} skin`; - } + return skinDesc; } /** @@ -105,7 +125,6 @@ App.Art.GenAI.SkinPromptPart = class SkinPromptPart extends App.Art.GenAI.Prompt } } - /** * @override */ @@ -113,4 +132,3 @@ App.Art.GenAI.SkinPromptPart = class SkinPromptPart extends App.Art.GenAI.Prompt return this.positive(); } }; -