code:
@echo off
:: Free Cities Basic Compiler - Windows

:: See if we can find a git installation
setlocal enabledelayedexpansion

for %%k in (HKCU HKLM) do (
    for %%w in (\ \Wow6432Node\) do (
        for /f "skip=2 delims=: tokens=1*" %%a in ('reg query "%%k\SOFTWARE%%wMicrosoft\Windows\CurrentVersion\Uninstall\Git_is1" /v InstallLocation 2^> nul') do (
            for /f "tokens=3" %%z in ("%%a") do (
                set GIT=%%z:%%b
				set GITFOUND=yes
                goto FOUND
            )
        )
    )
)
:FOUND
if %GITFOUND% == yes (
	set "PATH=%GIT%bin;%PATH%"
	bash --login -c ./sanityCheck
)

:: Will add all *.tw files to StoryIncludes.
del src\config\start.tw
copy src\config\start.tw.proto start.tw.tmp >nul
>>start.tw.tmp (for /r "src" %%F in (*.tw) do echo %%F)
move start.tw.tmp src\config\start.tw >nul

:: Run the appropriate compiler for the user's CPU architecture.
if %PROCESSOR_ARCHITECTURE% == AMD64 (
    CALL "%~dp0devTools\tweeGo\tweego_win64.exe" -o "%~dp0bin/FC_pregmod.html" "%~dp0src\config\start.tw"
) else (
    CALL "%~dp0devTools\tweeGo\tweego_win86.exe" -o "%~dp0bin/FC_pregmod.html" "%~dp0src\config\start.tw"
)

if %GITFOUND% == yes (
	:: Make the output prettier, replacing \t with a tab and \n with a newline
	bash -c "sed -i -e '/^.*<div id=\"store-area\".*$/s/\\\t/\t/g' -e '/^.*<div id=\"store-area\".*$/s/\\\n/\n/g' bin/FC_pregmod.html"

	:: Revert ./src/init/storyInit.tw for next compilation
	git checkout -- ./src/init/storyInit.tw
)

del src\config\start.tw
ECHO Done
PAUSE


code:
@echo off
:: Free Cities Basic Compiler - Windows

:: Will add all *.tw files to StoryIncludes.
del src\config\start.tw
copy src\config\start.tw.proto start.tw.tmp >nul
>>start.tw.tmp (for /r "src" %%F in (*.tw) do echo %%F)
move start.tw.tmp src\config\start.tw >nul

:: Run the appropriate compiler for the user's CPU architecture.
if %PROCESSOR_ARCHITECTURE% == AMD64 (
    CALL "%~dp0devTools\tweeGo\tweego_win64.exe" -o "%~dp0bin/FC_pregmod.html" "%~dp0src\config\start.tw"
) else (
    CALL "%~dp0devTools\tweeGo\tweego_win86.exe" -o "%~dp0bin/FC_pregmod.html" "%~dp0src\config\start.tw"
)

del src\config\start.tw
ECHO Done
PAUSE

license: mit


code:
Extended family mode (mod)

In short, extended family mode replaces the old .relation + .relationTarget system with a completely new system capable of handling a limitless number of relatives. Or at least until your game crashes from trying to handle it all. Fully incompatable with the old system and fully functional with ng+.

The backbone of the system: .father and .mother

Everything about a slave's family can be gathered by looking into her mother and father. Beyond the obvious mother-daughter relation, you can check two seperate slaves' parents to see if they are related to each other, allowing for sisters, half-sisters, and with a .birthWeek check, twins with little effort.
The following values are used with .mother and .father:
Valid slave IDs (in other words, a value > 0) - Serves as both a target for checks and as a check itself to see if effort should be expended to search for the parent.
0 - Slave has no known parent. A slave with a parent value of 0 is capable of having a parent added via reRelativeRecruiter
MissingParentIDs (in other words, a value < -2) - Serves as a placeholder to preserve sibling relations in the case of a parent being sold or lost. Outside of extreme cases, this value will never be restored to its' previous value. $missingParentID starts at -10000 and decrements after application. On NG+, positive values are incremented the same as a normal slave and checked for validity. Should it be invalid, it will be replaced with $missingParentID. Negative values, on the other hand, are decremented by 1200000. Values of -1 and -2 are ignored by the JS, so don't use them. Also -9999 through -9994 are used by hero slaves to preserve their sibling status no matter when they are purchased or obtained during the same game.

The limiters: .sisters and .daughters
Extended family mode is VERY for loop intensive, and as such, has limiters to prevent it from needlessly looping. A value greater than 0 for either of these slave variables signals that slave has a sibling/daughter for various checks. Furthermore, the value of .sisters and .daughters accurately tracks the number of sisters and daughters, particularly for checks that require all of them to be found. You'll learn to hate these, but on the plus side, they can safely be recalculated with no side effects. Nearly entirely handled by <<AddSlave>> and removeActiveSlave, you do not understand how huge of a plus this is.

The recruiting check: .canRecruit

Checked by reRelativeRecruiter to see if a slave is eligible to have relatives added. Hero slaves, special slaves, and often event slaves are ineligible for recruiting. Gets disabled if the slave is called into the recruiting event but fails to qualify for additional relatives due to unaddable slots or too many existing relatives.

A quick list of the JS that gets things done and various useful JS calls:

sameDad(slave1, slave2) - checks if the slaves share the same father and returns true/false.
sameMom(slave1, slave2) - checks if the slaves share the same mother and returns true/false.
sameTParent(slave1, slave2) - an exception catcher that handles such things as "slave1 knocked up slave2 and got impregnated by slave2, their children will be sisters" and returns the sister variable (0 - not related, 1 - twins, 2 - sisters, 3 - half-sisters). (subJS, never call on its own)
areTwins(slave1, slave2) - checks if the slaves are twins and returns true/false.
areSisters(slave1, slave2) - combines all of the above and returns the sister variable (0 - not related, 1 - twins, 2 - sisters, 3 - half-sisters). A widely used check to identify sister relatives. Generally gated by a .sisters check. Recommended to use in a <<switch>> macro instead of calling it for each outcome.

totalRelatives(slave) - returns how many relatives a slave has as an integer. Useful both as a check and for its value. Recommended to use as a check in instances where you want a relative, but don't care what it is.

mutualChildren(slave1, slave2, slaves) - checks the slave array for children shared by the two slave arguements and returns the number of mutual children as an integer. Currently used solely to encourage two slaves into a relationship if they have kids together.

The utility JS, courtesy of FCGudder. This JS should only be called if you know it will find something, use your limiters! These will always return the only relative if only one outcome is possible, so technically they can be used creatively. randomAvailable JS should be followed with random JS as a fallback for circumstances where you must find something, but would prefer it to be sensible if possible.
randomRelatedSlave(slave, filterFunction) - returns a random related slave to the slave passed into it. filterFunction is called in the following JS but not needed if you just want a random relative.
randomRelatedAvailableSlave(slave) - returns a random available related slave.
randomSister(slave) - returns a random sister.
randomTwinSister(slave) - returns a random twin.
randomAvailableSister(slave) - returns a random available sister.
randomAvailableTwinSister(slave) - returns a random available twin.
randomDaughter(slave) - returns a random daughter.
randomAvailableDaughter(slave) - returns a random available daughter.
randomParent(slave) - returns a random parent.
randomAvailableParent(slave) - returns a random available parent.

path: devNotes/Extended Family Mode Explained.txt


code:
:: art widgets [nobr widget]

/%
Call as <<AssistantArt>>
Displays assistant images. Currently passage-based.
$args[0]: Image size/center.
	3: Large, right. Example: description.
	2: Medium, right. Example: random events.
%/
<<widget "AssistantArt">>

<<if $imageChoice == 0>> /* RENDERED IMAGES BY SHOKUSHU */

<<switch $assistantAppearance>>
<<case "monstergirl">>
	<<set _fileName = "'resources/renders/assistant monstergirl.png' ">>
<<case "shemale">>
	<<set _fileName = "'resources/renders/assistant shemale.png' ">>
<<case "amazon">>
	<<set _fileName = "'resources/renders/assistant amazon.png' ">>
<<case "businesswoman">>
	<<set _fileName = "'resources/renders/assistant businesswoman.png' ">>
<<case "goddess">>
	<<set _fileName = "'resources/renders/assistant goddess.png' ">>
<<case "schoolgirl">>
	<<set _fileName = "'resources/renders/assistant schoolgirl.png' ">>
<<default>>
	<<set _fileName = "'resources/renders/assistant default.png' ">>
<</switch>>
<<if $args[1] == 3>>
	<<print "">>
<<else>>
	<<print "">>
<</if>>

<</if>> /* CLOSES IMAGE CHOICE */

<</widget>>

/%
Call as <<SlaveArt>>
Displays slave images. Currently passage-based.
$args[0]: Slave.
$args[1]: Image size/center.
	3: Large, right. Example: long slave description.
	2: Medium, right. Example: random events.
	1: Small, left. Example: lists.
	0: Tiny, left. Example: facilities
$args[2]: icon UI Display for vector art, 1 for on.
%/
<<widget "SlaveArt">>
/* This is a nasty workaround for Chrome not rendering overlaid SVG images properly */
<<run jQuery(function() { jQuery('.imageRef').imagesLoaded().always(function() { jQuery('.imageRef').fadeTo(1, 0.999); }); })>>
<<if ndef $args[0].customImage>><<set $args[0].customImage = 0>><</if>>
<<if $args[0].customImage != 0>>

<<set _fileFormat = ($args[0].customImageFormat || "png"),
	_fileName = "'resources/" + $args[0].customImage + "." + _fileFormat + "' ",
	_fileTypeStart = (_fileFormat === "webm" ? "video loop autoplay" : "img"),
	_fileTypeEnd = (_fileFormat === "webm" ? "</video>" : "")>>

<<if $args[1] == 3>>
	<<print "<" + _fileTypeStart + " src=" + _fileName + "style='float:right; border:3px hidden'>" + _fileTypeEnd>>
<<elseif $args[1] == 2>>
	<<print "<" + _fileTypeStart + " src=" + _fileName + "style='float:right; border:3px hidden' width='300' height='300'>" + _fileTypeEnd>>
<<elseif $args[1] == 1>>
	<<print "<" + _fileTypeStart + " src=" + _fileName + "style='float:left; border:3px hidden' width='150' height='150'>" + _fileTypeEnd>>
<<else>>
	<<print "<" + _fileTypeStart + " src=" + _fileName + "style='float:left; border:3px hidden' width='120' height='120'>" + _fileTypeEnd>>
<</if>>

<<elseif $imageChoice == 1>> /* VECTOR ART BY NOX */
<<SVGFilters>>

/* 000-250-006 */
/*
 */
/* 000-250-006 */

<<set _folderLoc = "'resources/vector">>

<<if $args[2] == 1>>
	<<print "">>
<</if>>

/% Set skin colour %/
<<set _skinFilter = "filter: url(#skin-" + _.kebabCase($args[0].skin) + ");">>
/% Set hair colour %/
<<set _hairFilter = "filter: url(#hair-" + _.kebabCase($args[0].hColor) + ");">>
<<set _pubesFilter = "filter: url(#hair-" + _.kebabCase($args[0].pubicHColor) + ");">>
<<set _axillaryFilter = "filter: url(#hair-" + _.kebabCase($args[0].underArmHColor) + ");">>
<<if $args[0].customHairVector>>
	<<set _hairStyle = $args[0].customHairVector>>
<<else>>
	<<set _hairStyle = ["neat", "ponytail", "messy"].includes($args[0].hStyle) ? $args[0].hStyle : "neat">>
<</if>>

<<set _imgSkinLoc = _folderLoc + "/body/white">>

/% Shoulder width and arm or no arm %/
<<if $args[0].amp != 1>>
<<if $args[0].devotion > 50>>
	<<set _leftArmType = "high">>
	<<set _rightArmType = "high">>
<<elseif $args[0].trust >= -20>>
	<<if $args[0].devotion < -20>>
		<<set _leftArmType = "rebel">>
		<<set _rightArmType = "low">>
	<<elseif $args[0].devotion <= 20>>
		<<set _leftArmType = "low">>
		<<set _rightArmType = "low">>
	<<else>>
		<<set _leftArmType = "mid">>
		<<set _rightArmType = "high">>
	<</if>>
<<else>>
	<<set _leftArmType = "mid">>
	<<set _rightArmType = "mid">>
<</if>>
<<if $args[0].fuckdoll == 0 && $args[0].clothes != "restrictive latex" && $args[0].clothes != "a latex catsuit">>
	<<print "">>
	<<print "">>
<<else>>
	<<if $args[0].fuckdoll != 0>>
		<<set _leftArmType = "mid">>
		<<set _rightArmType = "mid">>
	<</if>>
	<<print "">>
	<<print "">>
<</if>>
<</if>>

/% Hair Aft %/
<<if $args[0].hStyle != "shaved" && $args[0].fuckdoll == 0>>
	<<= "">>
<</if>>

/% Butt %/
<<if $args[0].amp != 1>>
<<if $args[0].butt > 6>>
	<<set _buttSize = 3>>
<<elseif $args[0].butt > 4>>
	<<set _buttSize = 2>>
<<elseif $args[0].butt > 2>>
	<<set _buttSize = 1>>
<<else>>
	<<set _buttSize = 0>>
<</if>>
<<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">>
	<<set _buttSize = _buttSize + " latex">>
	<<print "">>
<<else>>
	<<print "">>
<</if>>
<</if>>

/% Leg + 1 size up when chubby or fat%/
<<if $args[0].hips < 0>>
	<<if $args[0].weight <= 95>>/%Chubby%/
		<<set _legSize = "normal">>
	<<else>>
		<<set _legSize = "narrow">>
	<</if>>
<<elseif $args[0].hips == 0>>
	<<if $args[0].weight <= 95>>/%Chubby%/
		<<set _legSize = "wide">>
	<<else>>
		<<set _legSize = "normal">>
	<</if>>
<<elseif $args[0].hips > 0>>
	<<set _legSize = "wide">>
<</if>>
<<if $args[0].amp == 1>>
	<<set _legSize = "stump " + _legSize>>
<</if>>
<<if ($args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit") && $args[0].amp != 1>>
	<<set _legSize = _legSize + " latex">>
	<<print "">>
<<else>>
	<<print "">>
<</if>>

/% Feet %/
<<if $args[0].amp != 1>>
<<if $args[0].shoes == "heels">>
	<<set _shoesType = "heel">>
<<elseif $args[0].shoes == "extreme heels">>
	<<if $args[0].weight <= 95>>/%Chubby%/
		<<set _shoesType = "extreme heel wide">>
	<<else>>
		<<set _shoesType = "extreme heel">>
	<</if>>
<<elseif $args[0].shoes == "boots">>
	<<if $args[0].weight <= 95>>/%Chubby%/
		<<set _shoesType = "boot wide">>
	<<else>>
		<<set _shoesType = "boot">>
	<</if>>
<<elseif $args[0].shoes == "flats">>
	<<set _shoesType = "flat">>
<<else>>
	<<print "">>
<</if>>
<<if $args[0].shoes == "extreme heels" or $args[0].shoes == "boots">>
	<<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">>
		<<set _shoesType = _shoesType + " latex">>
	<</if>>
	<<print "">>
<</if>>
<<if $args[0].shoes == "heels" or $args[0].shoes == "flats">>
	<<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">>
		<<set _shoesType = _shoesType + " latex">>
		<<print "">>
	<<else>>
		<<print "">>
	<</if>>
<</if>>
<</if>>

/% Torso %/
<<if $args[0].waist < -40>>/*Unnatural*/
	<<if $args[0].weight <= 30>>/%Chubby%/
		<<set _torsoSize = "hourglass">>
	<<else>>
		<<set _torsoSize = "unnatural">>
	<</if>>
<<elseif $args[0].waist <= 10>>/%Hour glass%/
	<<if $args[0].weight <= 30>>/%Chubby%/
		<<set _torsoSize = "normal">>
	<<else>>
		<<set _torsoSize = "hourglass">>
	<</if>>
<<else>>/*Normal*/
	<<set _torsoSize = "normal">>
<</if>>
<<print "">>
<<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">>
	<<set _torsoOutfit = " latex">>
<<elseif $args[0].clothes == "uncomfortable straps">>
	<<set _torsoOutfit = " straps">>
<</if>>
<<if _torsoOutfit>>
	<<print "">>
<</if>>

/*Navel Piercing*/
<<if $args[0].navelPiercing >= 1>>
	<<print "">>
<</if>>
<<if $args[0].navelPiercing == 2>>
	<<print "">>
<</if>>

/% Vagina %/
<<if $args[0].vagina >= 0>>
	<<print "">>
	<<if $args[0].clitPiercing == 1>>
		<<print "">>
	<<elseif $args[0].clitPiercing == 2>>
		<<print "">>
	<<elseif $args[0].clitPiercing == 3>>
		<<print "">>
	<</if>>
	<<if $args[0].vaginaPiercing == 1>>
		<<print "">>
	<<elseif $args[0].vaginaPiercing == 2>>
		<<print "">>
	<</if>>
<</if>>

/% Collar %/
<<switch $args[0].collar>>
<<case "bowtie">>
<<case "ancient Egyptian">>
<<case "nice retirement counter" "cruel retirement counter" "leather with cowbell" "pretty jewelry" "heavy gold" "satin choker" "stylish leather" "neck corset" "shock punishment" "tight steel" "uncomfortable leather" "dildo gag">>
	<<print "">>
<</switch>>

/% Head base image %/
<<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">>
	<<print "">>
<<else>>
	<<print "">>
<</if>>

/% Glasses %/
<<if $args[0].eyewear == "corrective glasses" or $args[0].eyewear == "glasses" or $args[0].eyewear == "blurring glasses">>
	<<print "">>
<</if>>

/% Chastity belt or Pubic hair %/
<<if $args[0].dickAccessory == "chastity" || $args[0].dickAccessory == "anal chastity" || $args[0].dickAccessory == "combined chastity" || $args[0].vaginalAccessory == "chastity belt" || $args[0].vaginalAccessory == "anal chastity" || $args[0].vaginalAccessory == "combined chastity">>
	<<if $args[0].dickAccessory == "chastity" || $args[0].dickAccessory == "combined chastity">>
		<<print "">>
	<</if>>
	<<if $args[0].vaginalAccessory == "chastity belt" || $args[0].vaginalAccessory == "combined chastity">>
		<<print "">>
	<</if>>
	<<print "">>
<<else>>
	<<if $args[0].pubicHStyle != "waxed">>
		<<set _pubicHStyle = ($args[0].pubicHStyle == "in a strip" ? "strip" : $args[0].pubicHStyle)>>
		<<= "">>
	<</if>>
<</if>>

/%if pregnant%/
<<if $args[0].preg > 0>>
	<<print "">>
	<<if $args[0].navelPiercing >= 1>>/*Navel Piercing*/
		<<print "">>
	<</if>>
	<<if $args[0].navelPiercing == 2>>
		<<print "">>
	<</if>>
<</if>>

/% Boob %/
<<if $args[0].boobs < 250>>
	<<set _boobSize = 0>>
<<elseif $args[0].boobs < 500>>
	<<set _boobSize = 1>>
<<elseif $args[0].boobs < 800>>
	<<set _boobSize = 2>>
<<elseif $args[0].boobs < 1600>>
	<<set _boobSize = 3>>
<<elseif $args[0].boobs < 3200>>
	<<set _boobSize = 4>>
<<elseif $args[0].boobs < 6400>>
	<<set _boobSize = 5>>
<<elseif $args[0].boobs < 12000>>
	<<set _boobSize = 6>>
<<else>>
	<<set _boobSize = 7>>
<</if>>

/% Scrotum %/
<<if $args[0].scrotum > 0>>
	<<if $args[0].scrotum >= 6>>
		<<set _ballSize = 4>>
	<<elseif $args[0].scrotum >= 4>>
		<<set _ballSize = 3>>
	<<elseif $args[0].scrotum >= 3>>
		<<set _ballSize = 2>>
	<<elseif $args[0].scrotum >= 2>>
		<<set _ballSize = 1>>
	<<else>>
		<<set _ballSize = 0>>
	<</if>>
<</if>>

/% Penis %/
<<if $args[0].dick > 0>>
	<<if $args[0].dick >= 8>>
		<<set _penisSize = 6>>
	<<elseif $args[0].dick >= 7>>
		<<set _penisSize = 5>>
	<<elseif $args[0].dick >= 6>>
		<<set _penisSize = 4>>
	<<elseif $args[0].dick >= 5>>
		<<set _penisSize = 3>>
	<<elseif $args[0].dick >= 4>>
		<<set _penisSize = 2>>
	<<elseif $args[0].dick >= 2>>
		<<set _penisSize = 1>>
	<<else>>
		<<set _penisSize = 0>>
	<</if>>
<</if>>

/% Boob %/
<<set _needBoobs = 1>>
<<if $args[0].dick > 0>>
<<if canAchieveErection($args[0])>>
<<if _boobSize < 6>>
	<<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">>
		/* normal case: outfit hides boobs */
		<<set _boobOutfit = " latex" >>
	<</if>>
	<<if _boobOutfit >>
		<<print "">>
		<<if $args[0].lactation > 0>>
			<<print "">>
		<</if>>
	<<else>>
		<<print "">>
		<<print "">>
	<</if>>
	/* special case: straps are actually dawn over the boobs */
	<<if $args[0].clothes == "uncomfortable straps">>
		<<set _boobOutfit = " straps" >>
		<<print "">>
	<</if>>
	<<set _needBoobs = 0>>
<</if>>
<</if>>
<</if>>
<<if $args[0].vagina > 0>>
	<<if $args[0].dick > 0>>

		<<if $args[0].scrotum > 0>>
			<<print "">>
		<</if>>
		<<if canAchieveErection($args[0])>>
			<<print "">>
		<<else>>
			<<print "">>
			<<if $args[0].dickAccessory == "chastity" || $args[0].dickAccessory == "combined chastity">>
				<<print "">>
			<</if>>
		<</if>>

	<</if>>
<<else>>
	<<if $args[0].dick > 0>>

		<<if $args[0].scrotum > 0>>
			<<print "">>
		<</if>>
		<<if canAchieveErection($args[0])>>
			<<print "">>
		<<else>>
			<<print "">>
			<<if $args[0].dickAccessory == "chastity" || $args[0].dickAccessory == "combined chastity">>
				<<print "">>
			<</if>>
		<</if>>

	<</if>>
<</if>>
<<if _needBoobs>>
	<<if $args[0].fuckdoll != 0 || $args[0].clothes == "restrictive latex" || $args[0].clothes == "a latex catsuit">>
		<<print "">>
		<<if $args[0].lactation > 0>><<print "">><</if>>
	<<else>>
		<<print "">>
		<<print "">>
	<</if>>
	/* special case: straps are actually dawn over the boobs */
	<<if $args[0].clothes == "uncomfortable straps">>
		<<set _boobOutfit = " straps" >>
		<<print "">>
	<</if>>
<</if>>

/% piercings %/
<<if $args[0].nipplesPiercing == 1>>
	<<print "">>
<<elseif $args[0].nipplesPiercing == 2>>
	<<print "">>
<</if>>
<<if $args[0].areolaePiercing == 1>>
	<<print "">>
<</if>>

/% clavicle %/
<<print "">>

/% Hair Foreground %/
<<if $args[0].hStyle != "shaved" && $args[0].fuckdoll == 0>>
	<<= "">>
<</if>>

<<else>> /* RENDERED IMAGES BY SHOKUSHU */

<<if $args[0].vagina > -1>>
	<<if $args[0].dick > 0>>
		<<if $args[0].balls > 0>>
			<<set _fileName = "futanari">>
		<<else>>
			<<set _fileName = "herm">>
		<</if>>
	<<else>>
		<<set _fileName = "female">>
	<</if>>
<<else>>
	<<if $args[0].balls > 0>>
		<<set _fileName = "shemale">>
	<<else>>
		<<set _fileName = "gelding">>
	<</if>>
<</if>>
<<if $args[0].preg > 10>>
	<<set _fileName = "preg " + _fileName>>
<</if>>
<<if $args[0].boobs < 400>>
	<<set _fileName = _fileName + " small">>
<<elseif $args[0].boobs < 800>>
	<<set _fileName = _fileName + " big">>
<<elseif $args[0].boobs < 6000>>
	<<set _fileName = _fileName + " huge">>
<<else>>
	<<set _fileName = _fileName + " hyper">>
<</if>>
<<if $args[0].muscles > 30>>
	<<set _fileName = _fileName + " muscle">>
<<else>>
	<<set _fileName = _fileName + " soft">>
<</if>>
<<if $args[0].fuckdoll > 0>>
	<<set _fileName = _fileName + " rebellious">>
<<elseif $args[0].devotion <= 20>>
	<<if $args[0].trust < -20>>
		<<set _fileName = _fileName + " reluctant">>
	<<else>>
		<<set _fileName = _fileName + " rebellious">>
	<</if>>
<<elseif $args[0].fetish == "mindbroken">>
	<<set _fileName = _fileName + " reluctant">>
<<elseif $args[0].devotion <= 50 || $args[0].fetishKnown != 1 || ($seeMainFetishes == 0 && $args[1] < 2)>>
	<<set _fileName = _fileName + " obedient">>
<<else>>
	<<if $args[0].fetish == "none">>
		<<set _fileName = _fileName + " obedient">>
	<<else>>
		<<set _fileName = _fileName + " " + $args[0].fetish>>
	<</if>>
<</if>>

<<set _fileName = "'resources/renders/" + _fileName + ".png' ">>
<<if $args[1] == 3>>
	<<print "">>
<<elseif $args[1] == 2>>
	<<print "">>
<<elseif $args[1] == 1>>
	<<print "">>
<<else>>
	<<print "">>
<</if>>

<</if>> /* CLOSES IMAGE CHOICE */

<</widget>>

path: devNotes/artWidgets-legacy


code: search for /* look here for changes */ in the header backup.

path: devNotes/important for updating sugarcube.txt


code:
<<if $activeSlave.preg > 30>>
	<<if $activeSlave.pregType == 100>>
		The only thing keeping $possessive from bursting are $possessive belly restraints,
	<<elseif $activeSlave.pregType >= 20>>
		$pronounCap is close to bursting,
 	<<elseif $activeSlave.pregType >= 10>>
		$pronounCap is dangerously pregnant,
	<<else>>
		$pronounCap is enormously pregnant,
	<</if>>
	<<if $activeSlave.pregType == 100>>
		<<if $activeSlave.amp == 1>>
		  with no arms and legs $pronoun is effectively a giant womb.
		<<else>>
		  and $possessive thinning arms and legs rest helpless atop $possessive supermassive belly.
		<</if>>
	<<elseif $activeSlave.physicalAge <= 3>>
		<<if $activeSlave.pregType >= 20>>
			and $pronoun is nearly spherical. $possessiveCap toddlerish form is utterly dwarfed by $possessive pregnancy, all $pronoun can do is lay on top of it. Despite being taut, $possessive belly visibly bulges and squirms from all the babies writhing within $object. $possessiveCap womb is so full you can see the babies forced up against $possessive uterus, even the slightest provocation could cause $possessive to burst.<<if $saleDescription == 0>> $pronounCap requires multiple slaves to move $possessive bulk when $pronoun must go somewhere.<</if>>
		<<elseif $activeSlave.pregType >= 10>>
			and $possessive belly pins $possessive to the ground.  $possessiveCap toddlerish form is dwarfed by $possessive pregnancy, and try as $pronoun might $pronoun can not even drag the massive thing. $pronounCap is so pregnant you can barely see the babies within $possessive bulging $possessive stomach.<<if $activeSlave.amp == 0>> $pronounCap requires assistance to get to $possessive feet<<if $saleDescription == 0>>, and uses a wheeled stand to support $possessive pregnancy when $pronoun must walk anywhere<</if>>.<</if>>
		<<else>>
			and $possessive toddlerish body is absolutely filled by $possessive womb. $pronounCap can barely move herself and resembles an over inflated blow-up doll.
		<</if>>
	<<elseif $activeSlave.physicalAge <= 12>>
		<<if $activeSlave.pregType >= 20>>
			and $pronoun is more belly than girl. $possessiveCap absolutely gigantic, overfilled womb keeps $possessive pinned to the ground. $possessiveCap belly visibly bulges and squirms from all the babies within $possessive. $pronounCap is so full you can see the babies forced up against the walls of $possessive uterus. $possessiveCap skin is so taut that even the slightest provocation could cause $possessive to burst.<<if $activeSlave.amp == 0>> $pronounCap requires assistance to get to $possessive feet<<if $saleDescription == 0>>, and uses a wheeled stand to support $possessive pregnancy when $pronoun must walk anywhere<</if>>.<</if>>
		<<elseif $activeSlave.pregType >= 10>>
			and $pronoun can barely function with $possessive enormous belly. $pronounCap is so full you can barely see the babies bulging out of $possessive stomach.
		<<else>>
			and $possessive massive, drum-taut belly dominates $possessive poor little frame.
		<</if>>
	<<elseif $activeSlave.weight > 190>>
		<<if $activeSlave.pregType >= 20>>
			and $possessive massively fat belly is stretched considerably, so much so $possessive folds are pulled flat. $possessiveCap pregnancy is covered in a thick layer of fat, save for the grotesquely bulging upper portion where $possessive fat is thinnest. $possessiveCap womb is so full that every motion within it translates to $possessive soft body.
		<<elseif $activeSlave.pregType >= 10>>
			and $possessive massively fat belly is stretched considerably; $possessive folds are nearly pulled flat from the strain. $possessiveCap pregnancy is covered in a thick layer of fat, save for the bulging upper portion where $possessive fat is thinnest.
		<<else>>
			but $pronoun's so massively fat that it's not obvious. Only the firmness at its top gives away $possessive pregnancy.
		<</if>>
	<<elseif $activeSlave.height >= 185>>
		<<if $activeSlave.pregType >= 20>>
			but $possessive tall frame barely keeps $possessive grotesque, splitting belly off the ground. Despite being taut, $possessive belly visibly bulges and squirms from all the babies writhing within $object. $possessiveCap womb is so full you can see the babies forced up against $possessive uterus, even the slightest provocation could cause $object to burst.
		<<elseif $activeSlave.pregType >= 10>>
			but $possessive tall frame barely bears $possessive obscene, drum-taut belly. $pronounCap is so pregnant you can barely see the babies within $possessive bulging stomach.
		<<else>>
			but $possessive tall frame bears $possessive massive, drum-taut belly well.
		<</if>>
	<<elseif $activeSlave.height < 150>>
		<<if $activeSlave.pregType >= 20>>
			and $pronoun is more belly than girl. $possessiveCap absolutely gigantic, overfilled womb keeps $object pinned to the ground. $possessiveCap belly visibly bulges and squirms from all the babies within $object. $pronounCap is so full you can see the babies forced up against the walls of $possessive uterus. $possessiveCap skin is so taut that even the slightest provocation could cause $object to burst.<<if $activeSlave.amp == 0>> $pronounCap requires assistance to get to $possessive feet<<if $saleDescription == 0>>, and uses a wheeled stand to support $possessive pregnancy when $pronoun must walk anywhere<</if>>.<</if>>
		<<elseif $activeSlave.pregType >= 10>>
			and $pronoun can barely function with $possessive enormous belly. $pronounCap is so full you can barely see the babies bulging out of $possessive stomach.
		<<else>>
			and $possessive massive, drum-taut belly dominates $possessive poor little frame.
		<</if>>
	<<elseif $activeSlave.muscles > 30>>
		<<if $activeSlave.pregType >= 20>>
			and $pronoun can barely hold $possessive overfilled belly upright. $possessiveCap enormous brood greatly protrudes $possessive belly covering it in writhing bulges where they are forced up against $possessive uterus. While $possessive strong body spares $object from the fear of bursting, it does nothing to stop everyone from seeing how many children $pronoun's having.
		<<elseif $activeSlave.pregType >= 10>>
			and $possessive fit body allows $object to carry $possessive obscene belly without too much trouble. $possessiveCap large brood gently bulges $possessive belly.
		<<else>>
			and $possessive fit body bears $possessive massive, drum-taut belly well.
		<</if>>
	<<else>>
		<<if $activeSlave.pregType >= 20>>
			and $pronoun is more belly than girl. $possessiveCap gigantic, overfilled womb keeps $object pinned to the ground. $possessiveCap belly visibly bulges and squirms from all the babies within $object.  $pronounCap is so full you can see the babies forced up against the walls of $possessive womb through $possessive taut skin. $possessiveCap bulgy belly is at risk of rupturing.<<if $activeSlave.amp == 0>>  $pronounCap requires assistance to get to $possessive feet<<if $saleDescription == 0>>, and uses a wheeled stand to support $possessive pregnancy when $pronoun must walk anywhere<</if>>.<</if>>
		<<elseif $activeSlave.pregType >= 10>>
			and $pronoun can barely function with $possessive enormous belly. $possessiveCap womb is so full you can see the babies gently bulging the walls of $possessive uterus.
		<<else>>
			and $possessive massive, drum-taut belly dominates $possessive frame.
		<</if>>
	<</if>>
<<elseif $activeSlave.preg > 20>>
	<<if $activeSlave.pregType >= 20>>
		$pronounCap is dangerously pregnant,
 	<<elseif $activeSlave.pregType >= 10>>
		$pronounCap is obscenely pregnant,
	<<else>>
		$pronounCap is heavily pregnant,
	<</if>>
	<<if $activeSlave.physicalAge <= 3>>
		<<if $activeSlave.pregType >= 20>>
			and $possessive hugely distended belly is bigger than $pronoun is.<<if $activeSlave.amp == 0>> $pronounCap requires assistance to get to $possessive feet<<if $saleDescription == 0>>, and uses a wheeled stand to support $possessive pregnancy when $pronoun must walk anywhere<</if>>.<</if>>
		<<elseif $activeSlave.pregType >= 10>>
			and $possessive bulging belly is as big as $pronoun is.<<if $activeSlave.amp == 0>> $pronounCap requires assistance to get to $possessive feet<<if $saleDescription == 0>>, and uses a wheeled stand to support $possessive pregnancy when $pronoun must walk anywhere<</if>>.<</if>>
		<<else>>
			and $possessive swollen belly is nearly as big as $possessive toddlerish body.
		<</if>>
	<<elseif $activeSlave.physicalAge <= 12>>
		<<if $activeSlave.pregType >= 20>>
			and $possessive hugely distended belly is nearly as big as $pronoun is.<<if $activeSlave.amp == 0>> $pronounCap requires assistance to get to $possessive feet<<if $saleDescription == 0>>, and uses a wheeled stand to support $possessive pregnancy when $pronoun must walk anywhere<</if>>.<</if>>
		<<elseif $activeSlave.pregType >= 10>>
			and $possessive bulging belly looks absolutely huge on $possessive poor little frame.
		<<else>>
			and $possessive swollen belly dominates $possessive poor little frame.
		<</if>>
	<<elseif $activeSlave.weight > 130>>
		<<if $activeSlave.pregType >= 20>>
			and $possessive big fat belly is absolutely enormous when coupled with $possessive filled womb.
		<<elseif $activeSlave.pregType >= 10>>
			but $pronoun's so fat that $pronoun appears to merely be carrying a giant gut. Only the firmness at its top gives away $possessive pregnancy.
		<<else>>
			but $pronoun's so fat that it's not obvious. Only the firmness at its top gives away $possessive pregnancy.
		<</if>>
	<<elseif $activeSlave.height >= 185>>
		<<if $activeSlave.pregType >= 20>>
			but $possessive tall frame keeps $possessive huge belly off the ground.
		<<elseif $activeSlave.pregType >= 10>>
			but $possessive tall frame lets $possessive keep $possessive posture despite $possessive large belly.
		<<else>>
			but $possessive tall frame bears $possessive swollen belly well.
		<</if>>
	<<elseif $activeSlave.height < 150>>
		<<if $activeSlave.pregType >= 20>>
			and $possessive hugely distended belly is nearly as big as $pronoun is.
		<<elseif $activeSlave.pregType >= 10>>
			and $possessive bulging belly looks absolutely huge on $possessive poor little frame.
		<<else>>
			and $possessive swollen belly dominates $possessive poor little frame.
		<</if>>
	<<elseif $activeSlave.muscles > 30>>
		<<if $activeSlave.pregType >= 20>>
			and $possessive fit body allows $object to carry $possessive huge belly with only the occasional accident.
		<<elseif $activeSlave.pregType >= 10>>
			and $possessive fit body carries $possessive bulging belly without much trouble.
		<<else>>
			and $possessive fit body bears $possessive swollen belly well.
		<</if>>
	<<else>>
		<<if $activeSlave.pregType >= 20>>
			and $possessive hugely distended belly juts far out from $possessive front and widely from $possessive sides.
		<<elseif $activeSlave.pregType >= 10>>
			and $possessive large bulging belly draws all attention away from the rest of $possessive.
		<<else>>
			and $possessive swollen belly dominates $possessive frame.
		<</if>>
	<</if>>
<<elseif $activeSlave.preg > 9>>
	$pronounCap is visibly pregnant,
	<<if $activeSlave.physicalAge <= 3>>
		<<if $activeSlave.pregType >= 20>>
			$possessiveCap huge belly resembles an over-inflated beach ball compared to $possessive toddlerish frame. It bulges out from $possessive sides considerably.
		<<elseif $activeSlave.pregType >= 10>>
			and it looks like $pronoun is ready to birth triplets due to $possessive toddlerish body.
		<<else>>
			and $possessive swelling belly looks obscene on $possessive toddlerish body.
		<</if>>
	<<elseif $activeSlave.physicalAge <= 10>>
		<<if $activeSlave.pregType >= 20>>
			$possessiveCap huge belly resembles an over-inflated beach ball compared to $possessive tiny frame.
		<<elseif $activeSlave.pregType >= 10>>
			and $possessive swelling belly appears full term on $possessive tiny frame.
		<<else>>
			and $possessive swelling belly already looks huge on $possessive tiny frame.
		<</if>>
	<<elseif $activeSlave.weight > 95>>
		<<if $activeSlave.pregType >= 20>>
			$possessive fat belly considerably juts out with $possessive rapid growth.
		<<elseif $activeSlave.pregType >= 10>>
			but $pronoun's sufficiently overweight that $pronoun appears to merely be carrying a large gut.
		<<else>>
			but $pronoun's sufficiently overweight that it's not obvious.
		<</if>>
	<<elseif $activeSlave.height < 150>>
		<<if $activeSlave.pregType >= 20>>
			$possessiveCap huge belly resembles an over-inflated beach ball compared to $possessive tiny frame.
		<<elseif $activeSlave.pregType >= 10>>
			and $possessive swelling belly appears full term on $possessive tiny frame.
		<<else>>
			and $possessive swelling belly already looks huge on $possessive tiny frame.
		<</if>>
	<<elseif $activeSlave.weight < -10>>
		<<if $activeSlave.pregType >= 20>>
			$possessive enormous stomach juts far forward and lewdly extends far past $possessive sides.
		<<elseif $activeSlave.pregType >= 10>>
			$possessive bulging stomach fills $possessive thin frame obscenely.
		<<else>>
			$possessive thin form making $possessive swelling belly very obvious.
		<</if>>
	<<else>>
		<<if $activeSlave.pregType >= 20>>
			and $possessive obvious pregnancy appears full-term.
		<<elseif $activeSlave.pregType >= 10>>
			$possessive distended stomach makes $possessive look to be in $possessive last trimester.
		<<else>>
			the life growing within $possessive beginning to swell $possessive belly.
			<<if $activeSlave.bellySag > 0>>
				$possessiveCap new pregnancy reduces the amount of sag to $possessive overstretched middle.
			<</if>>
		<</if>>
	<</if>>

<<if ($activeSlave.preg == -2) && ($activeSlave.vagina < 0) && ($activeSlave.mpreg == 0)>>
<<elseif ($activeSlave.preg <= -2) && ($activeSlave.ovaries == 1 || $activeSlave.mpreg == 1)>>
	$pronounCap is sterile.
<<elseif $activeSlave.preg == 0 && $activeSlave.vagina > -1>>
	<<if $activeSlave.pregType > 30>>
		$possessiveCap lower belly is noticeably bloated, $possessive breasts bigger and more sensitive, and $possessive pussy swollen and leaking fluids. $pronoun desperately needs a dick in $object and reminds you of a bitch in heat.
	<<elseif $activeSlave.pregType > 20>>
		$possessiveCap lower belly is noticeably bloated and $possessive pussy swollen and leaking fluids. $pronounCap is very ready to be seeded.
	<<elseif $activeSlave.pregType > 2>>
		$possessiveCap lower belly is slightly bloated and $possessive pussy swollen and leaking fluids. $pronounCap is ready to be seeded.
	<</if>>
<<elseif $activeSlave.preg > 30>>
  <<if $activeSlave.pregType >= 20>>
	$pronounCap is @@.red;on the brink of bursting!@@ $possessiveCap belly is painfully stretched, the slightest provocation could cause $object to rupture.
  <<elseif $activeSlave.pregType >= 10>>
  	$pronounCap is @@.pink;dangerously pregnant,@@ $possessive overburdened womb is filled with $activeSlave.pregType babies.
  <<elseif $activeSlave.pregType > 4>>
	$pronounCap is @@.pink;obscenely pregnant:@@ $pronoun's carrying quintuplets.
  <<elseif $activeSlave.pregType > 2>>
	$pronounCap is @@.pink;massively pregnant:@@ $pronoun's carrying
	<<if $activeSlave.pregType == 4>>
	  quadruplets.
	<<else>>
	  triplets.
	<</if>>
  <<else>>
	$pronounCap is @@.pink;hugely pregnant:@@
	<<if $activeSlave.pregType == 2>>
		$pronoun's carrying twins.
	<<else>>
	  $pronoun's almost ready to give birth.
	<</if>>
  <</if>>
<<elseif $activeSlave.preg > 20>>
  <<if $activeSlave.pregType >= 20>>
	$pronounCap is @@.pink;dangerously pregnant,@@ despite how early in $possessive pregnancy $pronoun is: $pronoun's carrying far too many children.
  <<elseif $activeSlave.pregType >= 10>>
  	$pronounCap is @@.pink;obscenely pregnant,@@ despite how early in $possessive pregnancy $pronoun is: $pronoun's carrying $activeSlave.pregType children.
  <<elseif $activeSlave.pregType > 4>>
	$pronounCap is @@.pink;massively pregnant,@@ despite how early in $possessive pregnancy $pronoun is: $pronoun's carrying quintuplets.
  <<elseif $activeSlave.pregType > 2>>
	$pronounCap is @@.pink;hugely pregnant,@@ despite how early in $possessive pregnancy $pronoun is: $pronoun's carrying
	<<if $activeSlave.pregType == 4>>
	  quadruplets.
	<<else>>
	  triplets.
	<</if>>
  <<else>>
	$pronounCap is @@.pink;very pregnant:@@
	<<if $activeSlave.pregType == 2>>
	  $pronoun's carrying twins.
	<<else>>
	  the baby inside $object is growing rapidly.
	<</if>>
  <</if>>

<<if $activeSlave.waist > 95>>
	a badly @@.red;masculine waist@@ that ruins her figure<<if $activeSlave.weight > 30>> and greatly exaggerates how fat $pronoun is<<elseif $activeSlave.weight < -30>> despite how thin $pronoun is<</if>>.
	<<if hyperBellyTwo($activeSlave)>>
		$possessiveCap titanic belly lewdly bulges out the sides of $possessive thick waist.<<if $activeSlave.preg > 3>> The sides of $possessive waist are filled by $possessive overfilled womb in its desperate search for more room.<</if>>
	<<elseif hyperBellyOne($activeSlave)>>
		$possessiveCap gigantic belly barely distends her $possessive thick waist.
	<<elseif hugeBelly($activeSlave)>>
		$possessiveCap huge belly is hidden by $possessive thick waist.
	<<elseif bigBelly($activeSlave)>>
		$possessiveCap belly is hidden by $possessive thick waist.
	<</if>>
<<elseif $activeSlave.waist > 40>>
	a broad, @@.red;ugly waist@@ that makes her look mannish<<if $activeSlave.weight > 30>> and exaggerates how fat $pronoun is<<elseif $activeSlave.weight < -30>> despite how thin $pronoun is<</if>>.
	<<if hyperBellyTwo($activeSlave)>>
		$possessiveCap titanic belly lewdly bulges out the sides of $possessive chunky waist.<<if $activeSlave.preg > 3>> The sides of $possessive waist are filled by $possessive overfilled womb in its desperate search for more room.<</if>>
	<<elseif hyperBellyOne($activeSlave)>>
		$possessiveCap gigantic belly barely distends her $possessive chunky waist.
	<<elseif hugeBelly($activeSlave)>>
		$possessiveCap huge belly is barely hidden by $possessive chunky waist.
	<<elseif bigBelly($activeSlave)>>
		$possessiveCap belly is hidden by $possessive chunky waist.
	<</if>>
<<elseif $activeSlave.waist > 10>>
	an @@.red;unattractive waist@@ that conceals $possessive <<if $activeSlave.visualAge > 25>>girlish<<else>>womanly<</if>> figure<<if $activeSlave.weight > 30>> and accentuates how fat $pronoun is<<elseif $activeSlave.weight < -30>> despite how thin $pronoun is<</if>>.
	<<if hyperBellyTwo($activeSlave)>>
		$possessiveCap titanic belly lewdly bulges out the sides of $possessive waist.<<if $activeSlave.preg > 3>> The sides of $possessive waist are filled by $possessive overfilled womb in its desperate search for more room.<</if>>
	<<elseif hyperBellyOne($activeSlave)>>
		$possessiveCap gigantic belly barely distends her $possessive waist.
	<<elseif hugeBelly($activeSlave)>>
		$possessiveCap huge belly is barely visible to either side of $possessive waist.
	<<elseif bigBelly($activeSlave)>>
		$possessiveCap belly is barely hidden by $possessive waist.
	<</if>>
<<elseif $activeSlave.waist >= -10>>
	an average waist for a <<if $activeSlave.visualAge > 25>>girl<<else>>woman<</if>><<if $activeSlave.weight > 30>>, though it looks broader since $pronoun's fat<<elseif $activeSlave.weight < -30>>, though it looks narrower since $pronoun's thin<</if>>.
	<<if hyperBellyTwo($activeSlave)>>
		$possessiveCap titanic belly lewdly bulges out the sides of $possessive waist.<<if $activeSlave.preg > 3>> The sides of $possessive waist are filled by $possessive overfilled womb in its desperate search for more room.<</if>>
	<<elseif hyperBellyOne($activeSlave)>>
		$possessiveCap gigantic belly barely distends her $possessive waist.
	<<elseif hugeBelly($activeSlave)>>
		$possessiveCap huge belly is barely visible to either side of $possessive waist.
	<<elseif bigBelly($activeSlave)>>
		$possessiveCap belly is barely hidden by $possessive waist.
	<</if>>
<<elseif $activeSlave.waist >= -40>>
	a nice @@.pink;feminine waist@@ that gives $object a <<if $activeSlave.visualAge > 25>>girlish<<else>>womanly<</if>> figure<<if $activeSlave.weight > 30>> despite $possessive extra weight<<elseif $activeSlave.weight < -30>> and accentuates how thin $pronoun is<</if>>.
	<<if hyperBellyTwo($activeSlave)>>
		$possessiveCap titanic belly lewdly bulges out the sides of $possessive feminine waist.<<if $activeSlave.preg > 3>> The sides of $possessive waist are filled by $possessive overfilled womb in its desperate search for more room.<</if>>
	<<elseif hyperBellyOne($activeSlave)>>
		$possessiveCap gigantic belly lewdly distends her $possessive feminine waist.
	<<elseif hugeBelly($activeSlave)>>
		$possessiveCap huge belly juts out slightly to either side of $possessive feminine waist.
	<<elseif bigBelly($activeSlave)>>
		$possessiveCap belly is barely visible around $possessive feminine waist.
	<</if>>
<<elseif $activeSlave.waist >= -95>>
	a hot @@.pink;wasp waist@@ that gives $possessive an hourglass figure<<if $activeSlave.weight > 30>> despite $possessive extra weight<<elseif $activeSlave.weight < -30>> further accentuated by how thin $pronoun is<</if>>.
	<<if hyperBellyTwo($activeSlave)>>
		$possessiveCap titanic belly lewdly bulges out the sides of $possessive narrow waist and continues nearly half a meter farther to either side.<<if $activeSlave.preg > 3>> The sides of $possessive waist are filled by $possessive overfilled womb in its desperate search for more room.<</if>>
	<<elseif hyperBellyOne($activeSlave)>>
		$possessiveCap gigantic belly lewdly distends massively to either side of $possessive narrow waist.
	<<elseif hugeBelly($activeSlave)>>
		$possessiveCap huge belly bulges to either side of $possessive narrow waist.
	<<elseif bigBelly($activeSlave)>>
		$possessiveCap belly is visible around $possessive narrow waist.
	<</if>>
<<else>>
	an @@.pink;absurdly narrow waist@@ that gives $possessive a cartoonishly hourglass figure<<if $activeSlave.weight > 30>> made even more ludicrous by $possessive extra weight<<elseif $activeSlave.weight < -30>> made even more ludicrous by how thin $pronoun is<</if>>.
	<<if hyperBellyTwo($activeSlave)>>
		$possessiveCap titanic belly lewdly bulges out the sides of $possessive very narrow waist and continues nearly half a meter farther to either side.<<if $activeSlave.preg > 3>> The sides of $possessive waist are filled by $possessive overfilled womb in its desperate search for more room.<</if>>
	<<elseif hyperBellyOne($activeSlave)>>
		$possessiveCap gigantic belly lewdly distends massively to either side of $possessive very narrow waist.
	<<elseif hugeBelly($activeSlave)>>
		$possessiveCap huge belly bulges lewdly to either side of $possessive very narrow waist.
	<<elseif bigBelly($activeSlave)>>
		$possessiveCap belly is visible to either side of $possessive very narrow waist.
	<</if>>
<</if>>

path: devNotes/oldPregDesc


code:
#!/usr/bin/env python3
import fileinput
import re
import sys

WARNING = '\033[93m'
ENDC = '\033[0m'

def myprint(*args):
    print(WARNING, filename + ":", ENDC,*args)

def yield_line_and_islastline(f):
    global filename
    global linenumber
    try:
        prevline = next(f)
        filename = fileinput.filename()
        linenumber = fileinput.filelineno()
    except StopIteration:
        return
    for line in f:
        yield (prevline, f.isfirstline())
        filename = fileinput.filename()
        linenumber = fileinput.filelineno()
        prevline = line
    yield prevline, True

pattern = re.compile(r'(<<(\/?) *(if|for|else|switch|case|replace|link)[^<>]*)')

tagfound = []
try:
    for line, isLastLine in yield_line_and_islastline(fileinput.input()):
        for (whole,end,tag) in re.findall(pattern,line):
            if tag == "else" or tag == 'case':
                if len(tagfound) == 0:
                    myprint("Found", tag, "but with no opening tag:")
                    myprint("  ", linenumber,":", whole)
                    fileinput.nextfile()
                lasttag = tagfound[-1]
                if (tag == "else" and lasttag["tag"] != "if") or (tag == "case" and lasttag["tag"] != "switch"):
                    myprint("Mismatched else: Opening tag was:")
                    myprint("  ",lasttag["linenumber"],":", lasttag["whole"])
                    myprint("But this tag was:")
                    myprint("  ",linenumber,":", whole)
                    fileinput.nextfile()
                    break
            elif end != '/':
                tagfound.append({"whole": whole, "linenumber":linenumber,"tag":tag})
            else:
                if len(tagfound) == 0:
                    myprint("Found closing tag but with no opening tag:")
                    myprint("  ", linenumber,":", whole)
                    fileinput.nextfile()
                    break
                lasttag = tagfound.pop()
                if lasttag["tag"] != tag:
                    myprint("Mismatched tag: Opening tag was:")
                    myprint("  ",lasttag["linenumber"],":", lasttag["whole"])
                    myprint("Closing tag was:")
                    myprint("  ",linenumber,":", whole)
                    fileinput.nextfile()
                    break

        if isLastLine:
            if len(tagfound) != 0:
                myprint("End of file found but", len(tagfound), ("tag hasn't" if len(tagfound)==1 else "tags haven't"), "been closed:")
            for tag in tagfound:
                myprint("  ", tag["linenumber"],":", tag["whole"])
            tagfound = []
except UnicodeDecodeError as e:
    myprint(e)
    print("   Hint: In linux, you can get more details about unicode errors by running:")
    print("     isutf8", filename)