2015-03-09

What an hot ass!

I've been messing around with the idea of using procedurally generated content to add variation to Crooked. After character creation the player is presented with a short bio of their character as a preview of how they will be described in game. I'm trying to get the hang of working with dynamic text but I've run into a few issues. Take this sentence as an example:
Did you see her? What a hot ass.
No problems as a static line, but what I would like to do is replace hot with various synonyms like sexy or awesome. This is pretty simple to do with display and rules:
Did you see her? What a display($display = enum.hot) ass she has.

:: fill, hot [rule($display == enum.hot)]
hot
:: fill, sexy [rule($display == enum.hot)]
sexy
:: fill, awesome [rule($display == enum.hot)]
awesome
The problem here is that 'a' needs to be an 'an' in the case of awesome.
  • Did you see her? What an awesome ass she has.
  • Did you see her? What a hot ass she has.
  • Did you see her? What a sexy ass she has.

An easy solution is to just modify the rules to include the right phrasing.

:: fill, hot [rule($display == enum.hot)]
a hot
:: fill, sexy [rule($display == enum.hot)]
a sexy
:: fill, awesome [rule($display == enum.hot)]
an awesome
This will work up until I want to use the hot description later on:
The sight of her display($display = enum.hot) ass could make a blind man hard.
Doing things this way, I'd need double the rules per a description. It wouldn't be a big deal in this example, but I have a lot of these adjectives to use all over the place. I found this useful open source project called RANT that has code written for just this thing. After implementing just that part of RANT I can do stuff like this:
[Sentencecase, $name]'s ass is [a, "display(enum.attractive)"] [d(enum.pAssShape)] shape, rounded out by [d(enum.attractive)] [d(enum.pHipWidth)] hips.

:: attractive [rule($display == enum.attractive)]
[any(random), "attractive", "good-looking", "beautiful", "stunning", "striking", "arresting", "gorgeous", "fetching", "captivating", "engaging", "charming", "enchanting", "enticing", "appealing", "delightful", "winning", "photogenic", "telegenic", "sexy", "seductive", "alluring", "tantalizing", "irresistible", "ravishing", "desirable", "drop-dead gorgeous"]
This example shows a few different things working together.
[Sentencecase, $name] takes the player's name and uses Humanizer to make the first letter uppercase.

The 'a' in [a, "display(enum.attractive)"] is all that is needed to prefix an 'a' or 'an' to whatever the result of the inner display(enum.attractive) is. The way this embed is formatted makes the inner display evaluate first, then it is wrapped in quotes to be used with a. It is basically a hack while I work out the details of how display can exist within an embed.

[d(enum.pAssShape)] is a simplification for a full display() call. It only works with passages/rules that don't use nested display calls. I've made the '$display =' part optional to save space, but the full version is available if needed.

Anyway here is most of the character bio code and a few RANDOMLY generated characters as a sample, but of course this is still very work in progress.

Code:
:: Character Creation: Review [rule($display == enum.CCReview)]
[b, "Character Creation: Review"]

Officer [$name] is [a, "display(enum.pRace)"] [$man] in [$his] [d(enum.pPhysicalAge)]. [Sentencecase, $heHas] [a, "display(enum.pSkinColor)"] complexion with [d(enum.pHairColor)] hair and [d(enum.pEyeColor)] eyes. [Sentencecase, $heIs] of [d(enum.pHeight)] height and [d(enum.pWeight)] weight with [d(enum.pMuscles)] muscularity. [Sentencecase, $heIs] [a, "display(enum.pMasculinity)"] [$man] with [a, "display(enum.pLooks)"] level of attractiveness.

[d(enum.CCReviewGenitals)]


:: fill, Breast/Chest Paragraph [rule($display == enum.CCReviewGenitals)]
[#FF0000, Breast/Chest Paragraph]


criteria($genitals == enum.penis)
[$name]'s ass is [a, "display(enum.attractive)"] [d(enum.pAssShape)] shape. [Sentencecase, $heHas] [d(enum.pNippleColor)] nipples on [$his] [d(enum.pMuscles)] [d(enum.pBreasts)].

display(enum.CCReviewGenitalsPenis)


criteria($genitals == enum.vagina)
[$name]'s ass is [a, "display(enum.attractive)"] [d(enum.pAssShape)] shape. [Sentencecase, $heHas] [d(enum.pNippleColor)] nipples on [$his] [d(enum.pMuscles)] [d(enum.pBreasts)].

display(enum.CCReviewGenitalsVagina)


criteria($genitals == enum.penis && $hasBreasts == enum.yes)
[Sentencecase, $name]'s ass is [a, "display(enum.attractive)"] [d(enum.pAssShape)] shape, rounded out by [d(enum.attractive)] [d(enum.pHipWidth)] hips. If you're lucky you'll see [d(enum.pNippleType)] [d(enum.pNippleColor)] nipples on [$his] [d(enum.pBreastsAreNatural)] [d(enum.pBreastSize)] [d(enum.pBreasts)]. [Sentencecase, $his] [d(enum.pBreastShape)] [d(enum.pBreasts)] are [d(enum.pBreastSize)] sized with [a, "display(enum.pBreastSymmetry)"] breast.

display(enum.CCReviewGenitalsPenis)


criteria($genitals == enum.vagina && $hasBreasts == enum.yes)
[Sentencecase, $name]'s ass is [a, "display(enum.attractive)"] [d(enum.pAssShape)] shape, rounded out by [d(enum.attractive)] [d(enum.pHipWidth)] hips. If you're lucky you'll see [d(enum.pNippleType)] [d(enum.pNippleColor)] nipples on [$his] [d(enum.pBreastsAreNatural)] [d(enum.pBreasts)]. [Sentencecase, $his] [d(enum.pBreastShape)] [d(enum.pBreasts)] are [d(enum.pBreastSize)] sized with [a, "display(enum.pBreastSymmetry)"] breast.

display(enum.CCReviewGenitalsVagina)


:: fill, Penis Paragraph [rule($display == enum.CCReviewGenitalsPenis)]
[Sentencecase, $heHas] [a, d(enum.attractiveMasc)] [d(enum.pGenitals)] for [a, "display(enum.pPhysicalAgeDesc)"]. [Sentencecase, $his] [d(enum.pPenisLength)], [d(enum.pPenisGirth)] [d(enum.penis)] has [a, "display(enum.pPenisHead)"] head. [Sentencecase, $name]'s balls are [a, "display(enum.pBallSize)"] size.


:: fill, Vag Paragraph [rule($display == enum.CCReviewGenitalsVagina)]
[Sentencecase, $his] [d(enum.attractiveFemme)] [d(enum.vagina)] has [a, d(enum.pVaginalRugosity)] texture, with [d(enum.pLabiaSize)] sized [d(enum.attractiveFemme)] pussy lips and [a, "display(enum.pClitSize)"] sized clit.
Examples:

<b>Character Creation: Review</b>

Officer Caldwell is an Asian woman in her early twenties. She has a fair complexion with natural brown hair and brown eyes. She is of pint-sized height and skinny weight with average muscularity. She is a masculine woman with an awful level of attractiveness.

Caldwell's ass is a captivating teardrop shape. She has pink nipples on her average chest.

Her beauteous pussy has a smooth texture, with big sized beauteous pussy lips and a sizable sized clit.
---
<b>Character Creation: Review</b>

Officer Caldwell is a Native man in his late twenties. He has a blanc complexion with black hair and brown eyes. He is of statuesque height and spare weight with little muscularity. He is an ultra manly man with a misshapen level of attractiveness.

Caldwell's ass is an enchanting teardrop shape. He has brown nipples on his pint-sized chest.

He has an alluring penis for a twenty something. His very short length, thin penis has a little head. Caldwell's balls are a sizable size.
---
<b>Character Creation: Review</b>

Officer Caldwell is a Latin person in their early twenties. They have an alabaster complexion with natural black hair and gray eyes. They are of monstrous height and typical weight with typical muscularity. They are a super masculine person with an ugly level of attractiveness.

Caldwell's ass is a telegenic flat shape. They have pink nipples on their normal chest.

They have a desirable penis for a twenty something. Their very short length, thick penis has a typical head. Caldwell's balls are a normal size.

No comments:

Post a Comment