code:
:: Intro Summary [nobr]

<<set $neighboringArcologies to Math.clamp($neighboringArcologies, 0, 8)>>
<<set $FSCreditCount to Math.clamp($FSCreditCount, 4, 7)>>
<<set $PC.actualAge to Math.clamp($PC.actualAge, 14, 80)>>
<<set $PC.birthWeek to Math.clamp($PC.birthWeek, 0, 51)>>

<<silently>>
FertilityAge($fertilityAge)
<</silently>>

You may review your settings before clicking "Continue" to begin.

<<set $minimumSlaveAge = variableAsNumber($minimumSlaveAge, 18, 3, 18)>>
<<set $retirementAge = Math.clamp($retirementAge, 25, 120)>>
<<set $fertilityAge = variableAsNumber($fertilityAge, 13, 3, 18)>>
<<set $potencyAge = variableAsNumber($potencyAge, 13, 3, 18)>>
<<set $PC.mother = Number($PC.mother)>>
<<set $PC.father = Number($PC.father)>>

__''World Settings''__

<<if ($economy != 1) || ($seeDicks != 50) || ($continent != "North America") || ($internationalTrade != 1) || ($internationalVariety != 1) || ($seeRace != 1) || ($seeNationality != 1) || ($seeExtreme != 0) || ($seeCircumcision != 1) || ($seeAge != 1) || ($plot != 1)>>
	//[[restore defaults|Intro Summary][$seeDicks to 50,$economy to 1,$continent to "North America",$internationalTrade to 1,$internationalVariety to 1,$seeRace to 1,$seeNationality to 1,$seeExtreme to 0,$seeCircumcision to 1,$seeAge to 1,$plot to 1]]//
<</if>>

<<if $economy == 1>>
	The world economy is in ''doubtful'' shape.
	[[Easier|Intro Summary][$economy to 0.5]] | [[Harder|Intro Summary][$economy to 1.5]]
<<elseif $economy < 1>>
	The world economy is still in ''good'' shape.
	[[Harder|Intro Summary][$economy to 1]]
<<else>>
	The world economy is in ''terrible'' shape.
	[[Easier|Intro Summary][$economy to 1]]
<</if>>

<<set $drugsCost = Math.trunc(100*$economy)>>
<<set $rulesCost = Math.trunc(100*$economy)>>
<<set $modCost = Math.trunc(50*$economy)>>
<<set $surgeryCost = Math.trunc(300*$economy)>>

<<if ndef $customVariety>>
You are using standardized slave trading channels. [[Customize the slave trade|Customize Slave Trade][$customVariety to 1, $customWA = 0]]

<<if $internationalTrade == 0>>
	The slave trade is ''continental,'' so a narrower variety of slaves will be available.
	[[Allow intercontinental trade|Intro Summary][$internationalTrade to 1]]

<<else>>
	The slave trade is ''international,'' so a wider variety of slaves will be available.
	[[Restrict the trade to continental|Intro Summary][$internationalTrade to 0]]

<</if>>

<<if $internationalTrade == 1>>
<<if $internationalVariety == 0>>
	International slave variety is ''semi-realistic,'' so more populous nations will be more common.
	[[Normalized national variety|Intro Summary][$internationalVariety to 1]]

<<else>>
	International slave variety is ''normalized,'' so small nations will appear nearly as much as large ones.
	[[Semi-realistic national variety|Intro Summary][$internationalVariety to 0]]

<</if>>
<</if>>
<<else>>
Current nationality distributions are [[Adjust the slave trade|Customize Slave Trade][$customWA = 0, $customVariety to 1]] | [[Stop customizing|Intro Summary][delete $customVariety]]

<<for _i = 0; _i < $nationalitiescheck.length; _i++>>
<<set _nation to $nationalitiescheck[_i]>>
	<<print _nation>> @@color:orange;<<print (($nationalities.count(_nation)/$nationalities.length)*100).toFixed(2)>>%@@
<<if _i < $nationalitiescheck.length-1>> | <</if>>
<</for>>

<</if>>

<<if $seeAge == 1>>
	Slaves will ''age naturally.''
	[[Disable aging|Intro Summary][$seeAge to 0]] |
	[[Semi aging|Intro Summary][$seeAge to 2]]
<<elseif $seeAge == 2>>
	Slaves ''will'' celebrate birthdays, but ''not age.''
	[[Enable aging fully|Intro Summary][$seeAge to 1]] |
	[[Disable aging|Intro Summary][$seeAge to 0]]
<<else>>
	Slaves will ''not age,'' and not experience birthdays.
	[[Enable aging|Intro Summary][$seeAge to 1]] |
	[[Semi aging|Intro Summary][$seeAge to 2]]
<</if>>
//This option cannot be changed during the game//

<<if $seeRace == 1>>
	Ethnicity will ''occasionally'' be mentioned.
	[[Disable most mentions of race|Intro Summary][$seeRace to 0]]
<<else>>
	Ethnicity will ''almost never'' be mentioned.
	[[Enable mentions of race|Intro Summary][$seeRace to 1]]
<</if>>

<<if $seeNationality == 1>>
	Nationality will ''occasionally'' be mentioned.
	[[Disable most mentions of nationality|Intro Summary][$seeNationality to 0]]
<<else>>
	Nationality will ''almost never'' be mentioned.
	[[Enable mentions of nationality|Intro Summary][$seeNationality to 1]]
<</if>>

<<if $seeHyperPreg == 1>>
	Extreme pregnancy content like broodmothers is ''enabled''.
	[[Disable|Intro Summary][$seeHyperPreg to 0]]
<<else>>
	Extreme pregnancy content like broodmothers is ''disabled''.
	[[Enable|Intro Summary][$seeHyperPreg to 1]]
<</if>>

<<if $seeExtreme == 1>>
	Extreme content like amputation is ''enabled''.
	[[Disable|Intro Summary][$seeExtreme to 0]]
<<else>>
	Extreme content like amputation is ''disabled''.
	[[Enable|Intro Summary][$seeExtreme to 1]]
<</if>>

<<if $seeDicks != 0>>

<<if $seeCircumcision == 1>>
	Circumcision is ''enabled''.
	[[Disable|Intro Summary][$seeCircumcision to 0]]
<<else>>
	Circumcision is ''disabled''.
	[[Enable|Intro Summary][$seeCircumcision to 1]]
<</if>>
<</if>>

Interactions between slaves' weight and asset size are
<<if ($weightAffectsAssets != 0)>>
	''enabled''. [[Disable|Intro Summary][$weightAffectsAssets to 0]]
<<else>>
	''disabled''. [[Enable|Intro Summary][$weightAffectsAssets to 1]]
<</if>>

<<if ($curativeSideEffects != 0)>>
Curative side effects are ''enabled''. [[Disable|Intro Summary][$curativeSideEffects to 0]]
<<else>>
Curative side effects are ''disabled''. [[Enable|Intro Summary][$curativeSideEffects to 1]]
<</if>>

<<switch $seeDicks>>
<<case 100>>
	''All''
<<case 90>>
	''Almost all''
<<case 75>>
	''Most''
<<case 50>>
	''Half''
<<case 25>>
	''Some''
<<case 10>>
	''A few''
<<default>>
	''None''
<</switch>>
of the slave girls will have dicks.
<<if $seeDicks != 0>>[[None|Intro Summary][$seeDicks to 0]]<<else>>None<</if>> (0%)
| <<if $seeDicks != 10>>[[A few|Intro Summary][$seeDicks to 10]]<<else>>A few<</if>> (10%)
| <<if $seeDicks != 25>>[[Some|Intro Summary][$seeDicks to 25]]<<else>>Some<</if>> (25%)
| <<if $seeDicks != 50>>[[Half|Intro Summary][$seeDicks to 50]]<<else>>Half<</if>> (50%)
| <<if $seeDicks != 75>>[[Most|Intro Summary][$seeDicks to 75]]<<else>>Most<</if>> (75%)
| <<if $seeDicks != 90>>[[Almost all|Intro Summary][$seeDicks to 90]]<<else>>Almost all<</if>> (90%)
| <<if $seeDicks != 100>>[[All|Intro Summary][$seeDicks to 100]]<<else>>All<</if>> (100%)

<<if $seeDicks == 0>>
Should you be able to surgically attach a penis to your female slaves and starting girls?
<<if $makeDicks != 0>>[[No|Intro Summary][$makeDicks to 0]]<<else>>No<</if>>
| <<if $makeDicks != 1>>[[Yes|Intro Summary][$makeDicks to 1]]<<else>>Yes<</if>>

<</if>>

<<if $minimumSlaveAge < 3>>
  <<set $minimumSlaveAge to 3>>
<<elseif $minimumSlaveAge < 18>>
  /% OK %/
<<else>>
  /% Either out of range or not a number. %/
  <<set $minimumSlaveAge to 18>>
<</if>>
Girls appearing in the game will be no younger than <<textbox "$minimumSlaveAge" $minimumSlaveAge "Intro Summary">>

<<if $retirementAge <= $minimumSlaveAge>>
  <<set $retirementAge to $minimumSlaveAge+1>>
<<elseif $retirementAge <= 120>>
  /% OK %/
<<else>>
  /% Either out of range or not a number. %/
  <<set $retirementAge to 45>>
<</if>>
Initial retirement age will be at <<textbox "$retirementAge" $retirementAge "Intro Summary">> //May cause issues with New Game and initial slaves if set below 45.//

<<if $pedo_mode == 0>>
	Randomly generated slaves will generate normally.
    [[Loli mode|Intro Summary][$pedo_mode to 1, $minimumSlaveAge = 5]]
<<else>>
	Nearly all randomly generated slaves will be under the age of 18, although custom slaves and slaves related to specific events may be older.
    [[Normal mode|Intro Summary][$pedo_mode to 0]]
<</if>>

<<if $fertilityAge < 3>>
  <<set $fertilityAge to 3>>
<<elseif $fertilityAge < 18>>
  /% OK %/
<<else>>
  /% Either out of range or not a number. %/
  <<set $fertilityAge to 18>>
<</if>>
Girls will not be able to become pregnant if their age is under <<textbox "$fertilityAge" $fertilityAge "Intro Summary">>

<<if $potencyAge < 3>>
  <<set $potencyAge to 3>>
<<elseif $potencyAge < 18>>
  /% OK %/
<<else>>
  /% Either out of range or not a number. %/
  <<set $potencyAge to 18>>
<</if>>
Girls will not be able to impregnate others if their age is under <<textbox "$potencyAge" $potencyAge "Intro Summary">>

<<if $precociousPuberty == 0>>
	Girls ''can not'' experience precocious puberty. (Unable to become pregnant or inseminate others younger than normal puberty age - $fertilityAge).
    [[Enable precocious puberty|Intro Summary][$precociousPuberty to 1]]
<<else>>
	Girls ''can'' experience precocious puberty. (Under certain conditions they can become pregnant or inseminate others younger then normal age - $fertilityAge, though they may also experience delayed puberty).
    [[Disable precocious puberty|Intro Summary][$precociousPuberty to 0]]
<</if>>

<<if $AgePenalty == 0>>
	Girls ''will not'' receive job and career penalties due to age.
    [[Enable age penalties|Intro Summary][$AgePenalty to 1]]
<<else>>
	Girls ''will'' receive job and career penalties due to age.
    [[Disable age penalties|Intro Summary][$AgePenalty to 0]]
<</if>>

<<if $loliGrowth == 1>>
	Children ''will not'' grow as they age.
    [[Enable Growth|Intro Summary][$loliGrowth to 0]]
<<else>>
	Children ''will'' grow as they age.
    [[Disable Growth|Intro Summary][$loliGrowth to 1]]
<</if>>

<<if $familyTesting == 1>>
	Slaves ''can'' have extended families instead of just a single relative. //May cause lag.//
	[[Disable extended familes|Intro Summary][$familyTesting to 0]]
<<else>>
	Slaves ''can not'' have extended families, just a single relative. //Vanilla Mode.//
	[[Enable extended families|Intro Summary][$familyTesting to 1]]
<</if>> //Extended family mode must be on for the incubation facility to be enabled.//

<<if $familyTesting == 1>>
<<if $inbreeding  == 1>>
	Successive breeding ''will'' result in sub-average slaves.
	[[Disable inbreeding|Intro Summary][$inbreeding to 0]]
<<else>>
	Successive breeding ''will not'' result in sub-average slaves.
	[[Enable inbreeding|Intro Summary][$inbreeding to 1]]
<</if>>
<</if>>

<<if $verboseDescriptions == 1>>
	Your master suite ''will'' detail slave changes.
	[[Disable|Intro Summary][$verboseDescriptions to 0]]
<<else>>
	Your master suite ''will not'' detail slave changes.
	[[Enable|Intro Summary][$verboseDescriptions to 1]]
<</if>>

<<if $newDescriptions == 1>>
	Slaves ''will'' have alternate titles.
	[[Disable|Intro Summary][$newDescriptions to 0]]
<<else>>
	Slaves ''will not'' have alternate titles.
	[[Enable|Intro Summary][$newDescriptions to 1]]
<</if>>

/* Accordion 000-250-006 */

	Accordion effects on weekly reports are
<<if $useAccordion == 0>>
	@@color:red;DISABLED@@. [[Enable|Intro Summary][$useAccordion to 1]]
<<else>>
	@@color:cyan;ENABLED@@. [[Disable|Intro Summary][$useAccordion to 0]]
<</if>>
/* Accordion 000-250-006 */

<<if $plot == 1>>
	Game mode: ''two-handed''. Includes non-erotic events concerning the changing world.
	[[Disable non-erotic events|Intro Summary][$plot to 0]]
<<else>>
	Game mode: ''one-handed''. No non-erotic events concerning the changing world.
	[[Enable non-erotic events|Intro Summary][$plot to 1]]
<</if>>

/% Begin mod section: toggle whether slaves lisp. %/

<<if $disableLisping>>
	Lisping: ''slaves will not lisp''.
    [[Enable Lisping|Intro Summary][$disableLisping to 0]]
<<else>>
	Lisping: ''slaves with fat lips or heavy oral piercings will lisp''.
    [[Disable Lisping|Intro Summary][$disableLisping to 1]]
<</if>>

/% End mod section: toggle whether slaves lisp. %/

__The Free City__

The Free City features ''$neighboringArcologies'' arcologies in addition to your own.
<<textbox "$neighboringArcologies" $neighboringArcologies "Intro Summary">>

//Setting this to 0 will disable most content involving the rest of the Free City.//

<<if $targetArcology.type == "New">>

The Free City is located on ''$terrain'' terrain.
[[Urban|Intro Summary][$terrain to "urban"]] |
[[Rural|Intro Summary][$terrain to "rural"]] |
[[Ravine|Intro Summary][$terrain to "ravine"]] |
[[Marine|Intro Summary][$terrain to "marine"]] |
[[Oceanic|Intro Summary][$terrain to "oceanic"]]
<<if $terrain != "oceanic">>

The Free City is located in ''$continent''.
[[North America|Intro Summary][$continent to "North America", $language to "English"]] | [[South America|Intro Summary][$continent to "South America", $language to "Spanish"]] | [[Brazil|Intro Summary][$continent to "Brazil", $language to "Portuguese"]] | [[Europe|Intro Summary][$continent to "Europe", $language to "English"]] | [[the Middle East|Intro Summary][$continent to "the Middle East", $language to "Arabic"]] | [[Africa|Intro Summary][$continent to "Africa", $language to "Arabic"]] | [[Asia|Intro Summary][$continent to "Asia", $language to "Chinese"]] | [[Australia|Intro Summary][$continent to "Australia", $language to "English"]] | [[Japan|Intro Summary][$continent to "Japan", $language to "Japanese", $PC.race to "asian", $PC.nationality to "Japanese", $PC.hColor to "black", $PC.eyeColor to "brown"]]
<</if>>
<</if>>

<<if ($targetArcology.type != "RomanRevivalist") && ($targetArcology.type != "EgyptianRevivalist") && ($targetArcology.type != "EdoRevivalist") && ($targetArcology.type != "ArabianRevivalist") && ($targetArcology.type != "ChineseRevivalist")>>

The lingua franca of your arcology is ''$language''.
<<if $language != "English">>
	[[English|Intro Summary][$language to "English"]] |
<<else>>
	English |
<</if>>
<<if $language != "Spanish">>
	[[Spanish|Intro Summary][$language to "Spanish"]] |
<<else>>
	Spanish |
<</if>>
<<if $language != "Arabic">>
	[[Arabic|Intro Summary][$language to "Arabic"]] |
<<else>>
	Arabic |
<</if>>
<<if $language != "Chinese">>
	[[Chinese|Intro Summary][$language to "Chinese"]] |
<<else>>
	Chinese |
<</if>>
Custom: <<textbox "$language" $language "Intro Summary">>
<</if>>

The Free City could develop as many as ''$FSCreditCount'' future societies.
<<textbox "$FSCreditCount" $FSCreditCount "Intro Summary">>

<<if $FSCreditCount >= 7>>
	<<set $FSCreditCountString = "seven">>
<<elseif $FSCreditCount == 6>>
	<<set $FSCreditCountString = "six">>
<<elseif $FSCreditCount == 5>>
	<<set $FSCreditCountString = "five">>
<<elseif $FSCreditCount <= 4>>
	<<set $FSCreditCountString = "four">>
<</if>>
//5 is default, 4 behaves the same as pre-patch 0.9.9.0, max is 7.//
//Make sure to hit enter to confirm.//
//This option cannot be changed during the game//

__Player Character__

<<if $PC.title > 0>>
	Conversational title: ''Master''.
	[[Switch to Mistress|Intro Summary][$PC.title to 0]]
<<else>>
	Conversational title: ''Mistress''.
	[[Switch to Master|Intro Summary][$PC.title to 1]]
<</if>>
| Custom: <<textbox "$PC.customTitle" $PC.customTitle "Intro Summary">>

/*
<<if def $PC.title.customTitle>>
	<<set $PC.customTitleLisp to $PC.customTitle, $PC.customTitleLisp to $PC.customTitleLisp.replace("ss", "th"), $PC.customTitleLisp to $PC.customTitleLisp.replace("S", "Th"), $PC.customTitleLisp to $PC.customTitleLisp.replace("s", "th")>>
<</if>>
*/
Custom Lisped: <<textbox "$PC.customTitleLisp" $PC.customTitleLisp "Intro Summary">>

//If using a custom title, select Master or Mistress to set the gender of your title.//
//Make sure to replace your "s"s with "th"s to have working lisps in your lisped title.//

<<if $freshPC == 1 || $saveImported == 0>>

Career: ''$PC.career''.
<<if $PC.career != "arcology owner">>
	[[Wealth|Intro Summary][$PC.career to "wealth"]] |
	[[Business|Intro Summary][$PC.career to "capitalist"]] |
	[[PMC work|Intro Summary][$PC.career to "mercenary"]] |
	[[Slaving|Intro Summary][$PC.career to "slaver"]] |
	[[Engineering|Intro Summary][$PC.career to "engineer"]] |
	[[Medicine|Intro Summary][$PC.career to "medicine"]] |
	[[Celebrity|Intro Summary][$PC.career to "celebrity"]] |
	[[Escort|Intro Summary][$PC.career to "escort"]] |
	[[Servant|Intro Summary][$PC.career to "servant"]] |
	[[Gang Leader|Intro Summary][$PC.career to "gang"]]
<</if>>

Method of acquiring your arcology: ''$PC.rumor''.
[[Wealth|Intro Summary][$PC.rumor to "wealth"]] |
[[Hard work|Intro Summary][$PC.rumor to "diligence"]] |
[[Force|Intro Summary][$PC.rumor to "force"]] |
[[Social engineering|Intro Summary][$PC.rumor to "social engineering"]] |
[[Luck|Intro Summary][$PC.rumor to "luck"]]

Genitalia:
<<if $PC.dick == 1>>
	<<if $PC.vagina == 1>>
		''penis and vagina''. Sex scene variations; more difficult reputation maintenance; some unique opportunities, especially with breasts.
		[[No penis|Intro Summary][$PC.dick to 0]] | [[No vagina|Intro Summary][$PC.vagina to 0]]
	<<else>>
		''penis''. Standard sex scenes; easiest reputation maintenance.
		[[Switch to vagina|Intro Summary][$PC.dick to 0, $PC.vagina to 1]] | [[Add a vagina|Intro Summary][$PC.vagina to 1]]
	<</if>>
<<else>>
	''vagina''. Sex scene variations; most difficult reputation maintenance.
	[[Switch to penis|Intro Summary][$PC.dick to 1, $PC.vagina to 0, $PC.preg = 0]] | [[Add a penis|Intro Summary][$PC.dick to 1]]
<</if>>

<<if $PC.vagina == 1>>

<<if $PC.preg == -1>>
	Contraceptives: ''on''. Can't get pregnant; slight increase to living expenses.
	[[Do not take contraceptives|Intro Summary][$PC.preg = 0]]
<<elseif $PC.preg == 0>>
	Contraceptives: ''off''. Can get pregnant; some scene alterations.
	[[Take contraceptives|Intro Summary][$PC.preg = -1]] | [[Too late for that|Intro Summary][$PC.preg = 10]]
<<elseif $PC.preg == 10>>
	Contraceptives: ''pregnant''. Already pregnant; some scene alterations, more difficult reputation management, larger increase to living expenses.
	[[Not pregnant|Intro Summary][$PC.preg = 0]] | [[Heavily pregnant|Intro Summary][$PC.preg = 43]]
<<else>>
	Contraceptives: ''heavily pregnant''. About to give birth; some scene alterations, more difficult reputation management, larger increase to living expenses.
	[[Not pregnant|Intro Summary][$PC.preg = 0]]
<</if>>

<<if $PC.pregMood == 1>>
	Hormones affect mood: ''caring and motherly''. Sex scene alterations; slaves will trust you more, but may try to take advantage of your mercy.
	[[Change to no change|Intro Summary][$PC.pregMood = 0]] | [[Change to aggressive|Intro Summary][$PC.pregMood = 2]]
<<elseif $PC.pregMood == 0>>
	Hormones affect mood: ''no change''. Vanilla setting.
	[[Change to motherly|Intro Summary][$PC.pregMood = 1]] | [[Change to aggressive|Intro Summary][$PC.pregMood = 2]]
<<else>>
	Hormones affect mood: ''aggressive and domineering''. Sex scene alterations; slaves will fear you more, but will become more submissive to you.
	[[Change to no change|Intro Summary][$PC.pregMood = 0]] | [[Change to motherly|Intro Summary][$PC.pregMood = 1]]
<</if>>
<</if>>

<<if $PC.boobs > 0>>
	Chest: ''breasts''. Sex scene variations; more difficult reputation maintenance.
	[[Remove breasts|Intro Summary][$PC.boobs to 0]]
<<else>>
	Chest: ''masculine''. Standard sex scenes; easier reputation maintenance.
	[[Add breasts|Intro Summary][$PC.boobs to 1]]
<</if>>

Age:
<<if $PC.actualAge >= 65>>
	''old''.
<<elseif $PC.actualAge >= 50>>
	''well into middle age''.
<<elseif $PC.actualAge >= 35>>
	''entering middle age''.
<<else>>
	''surprisingly young''.
<</if>>
<<textbox "$PC.actualAge" $PC.actualAge "Intro Summary">>
<<set $PC.physicalAge = $PC.actualAge, $PC.visualAge = $PC.actualAge>>

Birthweek:
<<textbox "$PC.birthWeek" $PC.birthWeek "Intro Summary">>

<<if $playerAging == 2>>
	You will ''age naturally.''
	[[Disable aging|Intro Summary][$playerAging to 0]] |
	[[Semi aging|Intro Summary][$playerAging to 1]]
<<elseif $playerAging == 1>>
	You ''will'' celebrate birthdays, but ''not age.''
	[[Enable aging fully|Intro Summary][$playerAging to 2]] |
	[[Disable aging|Intro Summary][$playerAging to 0]]
<<else>>
	You will ''not age,'' and not experience birthdays.
	[[Enable aging|Intro Summary][$playerAging to 2]] |
	[[Semi aging|Intro Summary][$playerAging to 1]]
<</if>>
//This option cannot be changed during the game//

Name your character: <<textbox "$PCName" $PCName "Intro Summary">>

Nationality: ''$PC.nationality''.<<textbox "$PC.nationality" $PC.nationality "Intro Summary">>//Capitalize it//

Race: ''$PC.race''.
	[[White|Intro Summary][$PC.race to "white"]] |
	[[Asian|Intro Summary][$PC.race to "asian"]] |
	[[Latina|Intro Summary][$PC.race to "latina"]] |
	[[Middle Eastern|Intro Summary][$PC.race to "middle eastern"]] |
	[[Black|Intro Summary][$PC.race to "black"]] |
	[[Semitic|Intro Summary][$PC.race to "semitic"]] |
	[[Southern European|Intro Summary][$PC.race to "southern european"]] |
	[[Indo-aryan|Intro Summary][$PC.race to "indo-aryan"]] |
	[[Amerindian|Intro Summary][$PC.race to "amerindien"]] |
	[[Pacific Islander|Intro Summary][$PC.race to "pacific islander"]] |
	[[Malay|Intro Summary][$PC.race to "malay"]] |
	[[Mixed Race|Intro Summary][$PC.race to "mixed race"]] |
	<<textbox "$PC.race" $PC.race "Intro Summary">>

Skin: ''$PC.skin''.
	[[White|Intro Summary][$PC.skin to "white"]] |
	[[Fair|Intro Summary][$PC.skin to "fair"]] |
	[[Light|Intro Summary][$PC.skin to "light"]] |
	[[Dark|Intro Summary][$PC.skin to "dark"]] |
	[[Olive|Intro Summary][$PC.skin to "olive"]] |
	[[Black|Intro Summary][$PC.skin to "black"]] |
	[[Light Brown|Intro Summary][$PC.skin to "light brown"]] |
	[[Brown|Intro Summary][$PC.skin to "brown"]] |
	[[Pale|Intro Summary][$PC.skin to "pale"]] |
	[[Extremely Pale|Intro Summary][$PC.skin to "extremely pale"]] |
	<<textbox "$PC.skin" $PC.skin "Intro Summary">>

Eye color: ''$PC.eyeColor''.
<<textbox "$PC.eyeColor" $PC.eyeColor "Intro Summary">>

Hair color: ''$PC.hColor''.
<<textbox "$PC.hColor" $PC.hColor "Intro Summary">>

Preferred refreshment: <<textbox "$PC.refreshment" $PC.refreshment "Intro Summary">> [[Cigars|Intro Summary][$PC.refreshment to "cigar",$PC.refreshmentType = 0]] | [[Whiskey|Intro Summary][$PC.refreshment to "whiskey",$PC.refreshmentType = 1]]

Preferred method of consumption: ''<<if $PC.refreshmentType == 0>>Smoked<<elseif $PC.refreshmentType == 1>>Drank<<elseif $PC.refreshmentType == 2>>Eaten<<elseif $PC.refreshmentType == 3>>Snorted<<else>>Injected<</if>>''.
[[Smoked|Intro Summary][$PC.refreshmentType = 0]] | [[Drank|Intro Summary][$PC.refreshmentType = 1]] | [[Eaten|Intro Summary][$PC.refreshmentType = 2]] | [[Snorted|Intro Summary][$PC.refreshmentType = 3]] | [[Injected|Intro Summary][$PC.refreshmentType = 4]]

<<if $PC.refreshmentType == 0>>//"Smoke" must fit into the following sentence: "I smoked a $PC.refreshment" to fit events properly//<</if>>

/*testtest PC mother and father */
<<if $familyTesting == 1>>

''PC ID'' //Remember this so you can create slaves related to you next//

<<print $PC.ID>>

''mother ID''
<<textbox "$PC.mother" $PC.mother "Intro Summary">>

''father ID''
<<textbox "$PC.father" $PC.father "Intro Summary">>
<</if>>

<<else>>

Method of acquiring your arcology: ''$PC.rumor''.

Genitalia:
<<if $PC.dick == 1>>
	<<if $PC.vagina == 1>>
		''penis and vagina''.
	<<else>>
		''penis''.
	<</if>>
<<else>>
	''vagina''.
<</if>>
<<if $PC.vagina == 1>>

<<if $PC.preg == -1>>
	Contraceptives: ''on''. Can't get pregnant; slight increase to living expenses.
	[[Do not take contraceptives|Intro Summary][$PC.preg = 0]]
<<elseif $PC.preg == 0>>
	Contraceptives: ''off''. Can get pregnant; some scene alterations.
	[[Take contraceptives|Intro Summary][$PC.preg = -1]]
<<elseif $PC.preg > 0>>
	Contraceptives: ''<<print $PC.preg>>weeks pregnant''
<</if>>

<<if $PC.pregMood == 1>>
	Hormones affect mood: ''caring and motherly''. Sex scene alterations; slaves will trust you more, but may try to take advantage of your mercy.
	[[Change to no change|Intro Summary][$PC.pregMood = 0]] | [[Change to aggressive|Intro Summary][$PC.pregMood = 2]]
<<elseif $PC.pregMood == 0>>
	Hormones affect mood: ''no change''. Vanilla setting.
	[[Change to motherly|Intro Summary][$PC.pregMood = 1]] | [[Change to aggressive|Intro Summary][$PC.pregMood = 2]]
<<else>>
	Hormones affect mood: ''aggressive and domineering''. Sex scene alterations; slaves will fear you more, but will become more submissive to you.
	[[Change to no change|Intro Summary][$PC.pregMood = 0]] | [[Change to motherly|Intro Summary][$PC.pregMood = 1]]
<</if>>
<<if $PC.births > 0>>

	Number of births: ''$PC.births''
<</if>>
<</if>>

<<if $PC.boobs > 0>>
	Chest:
	<<if $PC.boobsBonus == 1>>
		''big <<if $PC.boobsImplant == 1>>fake <</if>>breasts''.
	<<elseif $PC.boobsBonus == 2>>
		''huge <<if $PC.boobsImplant == 1>>fake <</if>>breasts''.
	<<elseif $PC.boobsBonus == 3>>
		''<<if $PC.boobsImplant == 1>>fake <</if>>cow tits''.
	<<elseif $PC.boobsBonus == -0.5>>
		''noticable breasts''.
	<<elseif $PC.boobsBonus == -1>>
		''average breasts''.
	<<else>>
		''breasts''.
	<</if>>
<<else>>
	Chest: ''masculine''.
<</if>>

Age:
<<if $PC.actualAge >= 65>>
	''old''.
<<elseif $PC.actualAge >= 50>>
	''well into middle age''.
<<elseif $PC.actualAge >= 35>>
	''entering middle age''.
<<else>>
	''surprisingly young''.
<</if>>
<<set $PC.physicalAge = $PC.actualAge, $PC.visualAge = $PC.actualAge>>

<<if $playerAging == 2>>
	You will ''age naturally.''
	[[Disable aging|Intro Summary][$playerAging to 0]] |
	[[Semi aging|Intro Summary][$playerAging to 1]]
<<elseif $playerAging == 1>>
	You ''will'' celebrate birthdays, but ''not age.''
	[[Enable aging fully|Intro Summary][$playerAging to 2]] |
	[[Disable aging|Intro Summary][$playerAging to 0]]
<<else>>
	You will ''not age,'' and not experience birthdays.
	[[Enable aging|Intro Summary][$playerAging to 2]] |
	[[Semi aging|Intro Summary][$playerAging to 1]]
<</if>>
//This option cannot be changed during the game//

Change your name: <<textbox "$PCName" $PCName "Intro Summary">>

Nationality: ''$PC.nationality''.

Race: ''$PC.race''.

Skin: ''$PC.skin''.

Eye color: ''$PC.eyeColor''.

Hair color: ''$PC.hColor''.

Preferred refreshment: <<textbox "$PC.refreshment" $PC.refreshment "Intro Summary">> [[Cigars|Intro Summary][$PC.refreshment to "cigar",$PC.refreshmentType = 0]] | [[Whiskey|Intro Summary][$PC.refreshment to "whiskey",$PC.refreshmentType = 1]]

Preferred method of consumption: ''<<if $PC.refreshmentType == 0>>Smoked<<elseif $PC.refreshmentType == 1>>Drank<<elseif $PC.refreshmentType == 2>>Eaten<<elseif $PC.refreshmentType == 3>>Snorted<<else>>Injected<</if>>''.
[[Smoked|Intro Summary][$PC.refreshmentType = 0]] | [[Drank|Intro Summary][$PC.refreshmentType = 1]] | [[Eaten|Intro Summary][$PC.refreshmentType = 2]] | [[Snorted|Intro Summary][$PC.refreshmentType = 3]] | [[Injected|Intro Summary][$PC.refreshmentType = 4]]

<<if $PC.refreshmentType == 0>>//"Smoke" must fit into the following sentence: "I smoked a $PC.refreshment" to fit events properly//<</if>>

/*testtest PC mother and father */
<<if $familyTesting == 1>>

''PC ID'' //Remember this so you can create slaves related to you next//

<<print $PC.ID>>

''mother ID''

''father ID''
<</if>>

<</if>>

Image display
<<if $seeImages == 1>>
	''enabled.'' [[Disable|Intro Summary][$seeImages = 0]]

	<<if $imageChoice == 1>>
		''Vector art by NoX'' is selected. [[Switch to rendered imagepack|Intro Summary][$imageChoice = 0]]
	<<else>>
		''Rendered imagepack by Shokushu'' is selected. [[Switch to vector art|Intro Summary][$imageChoice = 1]]

		Slave summary fetish images
		<<if $seeMainFetishes == 1>>
			''enabled.'' [[Disable|Intro Summary][$seeMainFetishes = 0]]
		<<else>>
			''disabled.'' [[Enable|Intro Summary][$seeMainFetishes = 1]]
		<</if>>
	<</if>>

	Slave images in lists are
	<<if $seeSummaryImages == 1>>
		''enabled.'' [[Disable|Intro Summary][$seeSummaryImages = 0]]
	<<else>>
		''disabled.'' [[Enable|Intro Summary][$seeSummaryImages = 1]]
	<</if>>
<<else>>
	''disabled.'' [[Enable|Intro Summary][$seeImages = 1]] //Requires image resources.//
<</if>>

<<if $SFMODToggle == 1>>
	The Security Force Mod is ''enabled.''
[[Disable|Intro Summary][$SFMODToggle to 0]]
<<else>>
	The Security Force Mod is ''disabled.''
[[Enable|Intro Summary][$SFMODToggle to 1]]
<</if>>

// This mod from anon1888 offers a lategame security force, triggered around week 80. It is non-canon where it conflicts with canonical updates to the base game.//

[[Continue|init Nationalities][$girls to 2]]

[[Cheat Start|init Nationalities][$cash += 1000000,$girls to 3,$rep += 10000,$dojo += 1,$cheatMode to 1,$seeDesk to 0, $seeFCNN to 0, $sortSlavesBy to "devotion",$sortSlavesOrder to "descending",$sortSlavesMain to 0,$rulesAssistantMain to 1,$abbreviateDevotion to 1,$abbreviateRules to 1,$abbreviateClothes to 2,$abbreviateHealth to 1,$abbreviateDiet to 1,$abbreviateDrugs to 1,$abbreviateRace to 1,$abbreviateNationality to 1,$abbreviateGenitalia to 1,$abbreviatePhysicals to 1,$abbreviateSkills to 1,$abbreviateMental to 2]] | //Intended for debugging: may have unexpected effects//

/*

[[Aging Test Start|init Nationalities][$cash += 1000000,$girls to 3,$rep += 10000,$cheatMode to 1,$minimumSlaveAge to 3,$loliGrowth to 1,$ageMode to 1]] | //Intended for debugging the buggy slave aging feature: may have unexpected effects//
*/


code:
:: Location Intro

As the old countries crumble and technology stagnates, the gap between rich and poor increases. In order to continue living a good life without having their property taken by the mob, many of the wealthy and powerful come together to form 'Free Cities.' These are new cities on undeveloped land, in remote areas, or even afloat, fully free of any allegiance or law. These new cities are built on new ideas, with most buildings designed as futuristic, self-contained 'arcologies.' An arcology and everything in it is usually owned by a single person. And you're determined that you will soon be one of those single people. @@color:orange;In what part of the world is your new arcology going to be located?@@

[[North America|Intro Summary][$continent to "North America", $language to "English"]]
[[South America|Intro Summary][$continent to "South America", $language to "Spanish"]]
[[Brazil|Intro Summary][$continent to "Brazil", $language to "Portuguese"]]
[[Europe|Intro Summary][$continent to "Europe", $language to "German"]]
[[the Middle East|Intro Summary][$continent to "the Middle East", $language to "Arabic"]]
[[Africa|Intro Summary][$continent to "Africa", $language to "Arabic"]]
[[Asia|Intro Summary][$continent to "Asia", $language to "Chinese"]]
[[Australia|Intro Summary][$continent to "Australia", $language to "English"]]
[[Japan|Intro Summary][$continent to "Japan", $language to "Japanese", $PC.race to "asian", $PC.nationality to "Japanese", $PC.hColor to "black", $PC.eyeColor to "brown"]]
//Slaves from countries in the selected continent will appear more frequently.//

repo_name: TooSlow/fc


code:
:: PC Body Intro [nobr]

Most slaveowners in the Free Cities are male. The preexisting power structures of the old world have mostly migrated to the new, and it can often be very hard to be a free woman in the Free Cities. Some manage to make their way, but in many arcologies, men are the owners, and women are the owned. You'll cut a striking figure as the owner and leader of your arcology, but @@color:orange;what's under your business attire?@@

<<set $PC.actualAge to Math.clamp($PC.actualAge, 14, 80)>>

Under my suit jacket,
<<if $PC.boobs > 0>>
	''feminine breasts.''
	[[Remove breasts|PC Body Intro][$PC.boobs to 0]]
<<else>>
	''masculine muscles.''
	[[Add breasts|PC Body Intro][$PC.boobs to 1]]
<</if>>

Behind the front of my tailored
<<if $PC.dick == 1>>
	<<if $PC.vagina == 1>>
		slacks, ''both a penis and a vagina.''
		[[Remove the penis|PC Body Intro][$PC.dick to 0]] | [[Remove the vagina|PC Body Intro][$PC.vagina to 0]]
	<<else>>
		slacks, a ''penis.''
		[[Switch to vagina|PC Body Intro][$PC.dick to 0, $PC.vagina to 1]] | [[Add a vagina|PC Body Intro][$PC.vagina to 1]]
	<</if>>
<<else>>
	skirt, a ''vagina.''
	[[Switch to penis|PC Body Intro][$PC.dick to 1, $PC.vagina to 0]] | [[Add a penis|PC Body Intro][$PC.dick to 1]]
<</if>>

//These options will affect sex scenes. Feminine options will increase difficulty.//

Your slaves will refer to you as
<<if $PC.title > 0>>
	''Master.''
	[[Switch to Mistress|PC Body Intro][$PC.title to 0]]
<<else>>
	''Mistress.''
	[[Switch to Master|PC Body Intro][$PC.title to 1]]
<</if>>

//This option will affect scenes but will not change difficulty.//

@@color:orange;How old are you?@@

I'm
<<if $PC.actualAge >= 65>>
	getting up in years. I've made a legacy for myself, and I'm not done yet.
<<elseif $PC.actualAge >= 50>>
	well into middle age. I've made a name for myself, and I've still got it.
<<elseif $PC.actualAge >= 35>>
	entering middle age. I'm accomplished, and I retain some youthful vigor.
<<else>>
	surprisingly young. I'll need to prove myself, but I've got energy to burn.
<</if>>
My age: ''<<textbox "$PC.actualAge" $PC.actualAge "PC Body Intro">>''
<<set $PC.physicalAge = $PC.actualAge, $PC.visualAge = $PC.actualAge>>

//Older player characters start with more reputation and maintain reputation somewhat more easily, but have slightly less sexual energy.//

Name your character: <<textbox "$PCName" $PCName "PC Body Intro">>

//As with all text boxes in FC, press the enter key to commit your changes.//

Preferred refreshment: <<textbox "$PC.refreshment" $PC.refreshment "PC Body Intro">> [[Cigars|PC Body Intro][$PC.refreshment to "cigar",$PC.refreshmentType = 0]] | [[Whiskey|PC Body Intro][$PC.refreshment to "whiskey",$PC.refreshmentType = 1]]

Preferred method of consumption: ''<<if $PC.refreshmentType == 0>>Smoked<<elseif $PC.refreshmentType == 1>>Drank<<elseif $PC.refreshmentType == 2>>Eaten<<elseif $PC.refreshmentType == 3>>Snorted<<else>>Injected<</if>>''.
[[Smoked|PC Body Intro][$PC.refreshmentType = 0]] | [[Drank|PC Body Intro][$PC.refreshmentType = 1]] | [[Eaten|PC Body Intro][$PC.refreshmentType = 2]] | [[Snorted|PC Body Intro][$PC.refreshmentType = 3]] | [[Injected|PC Body Intro][$PC.refreshmentType = 4]]

//Flavor only; no mechanical effect. If entering a custom refreshment, please assign proper usage. <<if $PC.refreshmentType == 0>>"Smoke" must fit into the following sentence: "I smoked a $PC.refreshment" to fit events properly<</if>>//

<<if $PC.vagina == 1>>
[[Confirm player character customization|PC Preg Intro]]
<<else>>
[[Confirm player character customization|PC Appearance Intro]]
<</if>>

<<if $SFMODToggle == 1>>
	The Security Force Mod is ''enabled.''
[[Disable|PC Body Intro][$SFMODToggle to 0]]
<<else>>
	The Security Force Mod is ''disabled.''
[[Enable|PC Body Intro][$SFMODToggle to 1]]
<</if>>

// This mod from anon1888 offers a lategame security force, triggered around week 80. It should be considered non-canon if it conflicts with canonical updates to the base game. //


code:
:: PC Experience Intro [nobr]

<<if $PC.career == "arcology owner">>
	<<goto "PC Rumor Intro">>
<<else>>

You're a relative unknown in the Free Cities, but it's clear you're already accomplished. The meek and average cannot aspire to acquire arcologies. You've got all the necessary skills to take over an arcology and succeed as its owner, but you should be able to leverage the skills and experience you retain from your past, too. @@color:orange;What career brought you to the Free Cities?@@

[[Idle wealth|PC Rumor Intro][$PC.career to "wealth"]]

    //Start with extra money. Your starting slaves will have two free levels of sex skills available.//

[[Venture capitalism|PC Rumor Intro][$PC.career to "capitalist"]]

    //You will be more effective at business pursuits. Your starting slaves will have a free level of prostitution skill available.//

[[Private military work|PC Rumor Intro][$PC.career to "mercenary"]]

    //You retain mercenary contacts and security skills. Your starting slaves will have free trust available.//

[[Slaving|PC Rumor Intro][$PC.career to "slaver"]]

    //Your slave breaking experience will be useful. Your starting slaves will have free devotion available.//

[[Arcology engineering|PC Rumor Intro][$PC.career to "engineer"]]

    //Upgrading the arcology will be cheaper. Also, the arcology will start with basic economic upgrades already installed.//

[[Slave surgery|PC Rumor Intro][$PC.career to "medicine"]]

    //Surgery will be cheaper and healthier, and drug upgrades will be cheaper. Your starting slaves will have free implants available.//

[[Minor celebrity|PC Rumor Intro][$PC.career to "celebrity"]]

    //Start with extra reputation. Your starting slaves will have a free level of entertainment skill available.//

[[High class escort|PC Rumor Intro][$PC.career to "escort"]]

    //As an ex-whore, you will find it hard to maintain reputation. Your starting slaves will have a free level of sex skills available, along with a free level of entertainment and prostitution.//

[[Servant|PC Rumor Intro][$PC.career to "servant"]]

    //As an ex-servant, you will find it hard to maintain reputation. You know how to lower your upkeep, but not conduct business. Your starting slaves will have free trust and devotion.//

[[Gang Leader|PC Rumor Intro][$PC.career to "gang"]]

    //As a gang leader, you know how to haggle slaves, but you will find reputation quite hard to maintain. Your starting slaves will be fitter and posses a free level of combat skill.//

<</if>>


code:
:: PC Rumor Intro

Who you are is something that you will have to define for yourself through your actions. Once you own an arcology, no one will be in a position to apply moral scorekeeping to you. In the brave new world of the Free Cities, you will be free to define yourself as the sum of your actions, rather than as the product of your past. The first decision that will define who you are as an arcology owner is your choice of method in acquiring one. @@color:orange;What approach will you take?@@

[[A judicious application of funds|Takeover Target][$PC.rumor to "wealth"]]
    //Start with extra money, since you were wealthy enough to buy an arcology.//
[[Hard work and diligence|Takeover Target][$PC.rumor to "diligence"]]
    //New slaves will hate you less, since it will be known that you worked hard to earn your position.//
[[The remorseless use of force|Takeover Target][$PC.rumor to "force"]]
    //New slaves will fear you more, since rumors about your violent takeover will inevitably circulate.//
[[Clever social engineering|Takeover Target][$PC.rumor to "social engineering"]]
    //Start with the first societal option unlocked, since you manipulated the arcology's citizens.//
[[Blind luck|Takeover Target][$PC.rumor to "luck"]]
    //Start with a good reputation, since the story of your unlikely accession will be famous.//


code:
:: Terrain Intro [nobr]

<<unset $targetArcologies>>
<<if $targetArcology.type != "New">>
	<<set $terrain = $targetArcology.terrain, $continent = $targetArcology.continent>>
	<<switch $targetArcology.type>>
	<<case "RomanRevivalist">><<set $language = "Latin">>
	<<case "EgyptianRevivalist">><<set $language = "Ancient Egyptian">>
	<<case "EdoRevivalist">><<set $language = "Japanese">>
	<<case "ArabianRevivalist">><<set $language = "Arabic">>
	<<case "ChineseRevivalist">><<set $language = "Chinese">>
	<<default>>
		<<switch $terrain>>
		<<case "oceanic" "North America" "Australia">><<set $language = "English">>
		<<case "South America">><<set $language = "Spanish">>
		<<case "Brazil">><<set $language = "Portuguese">>
		<<case "the Middle East" "Africa">><<set $language = "Arabic">>
		<<case "Asia">><<set $language = "Chinese">>
		<<case "Europe">><<set $language = "German">>
		<<case "Japan">><<set $language = "Japanese">>
		<</switch>>
	<</switch>>
	<<goto "Intro Summary">>
<<else>>

The Free Cities are located wherever the rule of law is weak enough or permissive enough to allow a small area to secede, and where founders can afford to buy an area on which to build.

Many Free Cities are therefore located in marginal, rural terrain. Founding a Free City in such an area is easy, and can usually be accomplished with the indifference or even connivance of the old country from which it secedes. After all, the potential commercial benefits are great, and the loss of underused land is only significant in the moral sense.

Some Free Cities are located on water. Though some areas of shallow sea over the continental shelves hide valuable resources, others are neglected. Arcologies are such massive structures that it is very possible to design them to float anchored to the seabed.

Finally, a few Free Cities have been carved out from old world cities. Urban decay has left the hearts of many cities ripe for this. Many old world countries resist this kind of secession, but this rarest, smallest, and densest kind of Free City can offer its surrounding nation a great deal of economic advantage.

@@color:orange;Which kind of Free City hosts your arcology?@@

[[Urban|Location Intro][$terrain to "urban"]]

    @@color:yellow;Low@@ minimum slave value and initial @@color:yellow;bear market@@ for slaves.

    @@color:green;High@@ ease of commerce with the old world.

    @@color:green;High@@ access to refugees and other desperate people.

    @@color:red;Low@@ cultural independence.

[[Rural|Location Intro][$terrain to "rural"]]

    @@color:yellow;High@@ minimum slave value and initial @@color:yellow;bull market@@ for slaves.

    Moderate ease of commerce with the old world.

    Moderate access to refugees and other desperate people.

    Moderate cultural independence.

[[Ravine|Location Intro][$terrain to "ravine"]]

    @@color:yellow;High@@ minimum slave value and initial @@color:yellow;bull market@@ for slaves.

    @@color:red;Low@@ ease of commerce with the old world.

    @@color:red;Very low@@ access to refugees and other desperate people.

    @@color:green;High@@ cultural independence.

[[Marine|Location Intro][$terrain to "marine"]]

    Moderate minimum slave value and initially balanced market for slaves.

    Moderate ease of commerce with the old world.

    @@color:red;Low@@ access to refugees and other desperate people.

    @@color:green;High@@ cultural independence.

[[Oceanic|Intro Summary][$terrain to "oceanic"]]

    @@color:yellow;High@@ minimum slave value and initial @@color:yellow;bull market@@ for slaves.

    Moderate ease of commerce with the old world.

    @@color:red;Very low@@ access to refugees and other desperate people.

    @@color:green;Very high@@ cultural independence.

    Ensures access to slaves from all over the world and will not associate the arcology with a continent.

<</if>>


code:
:: Trade Intro [nobr]

Most of the Free Cities are run on radically libertarian or even anarcho-capitalist principles. The first Free Cities experimented with indentured servitude, and this rapidly developed into widespread slavery. By now, the Free Cities collectively are a fundamentally slaveowning society and maintain a thriving slave trade that feeds off the terrible conditions in parts of the old world. @@color:orange;What attitude have the old world countries generally taken towards this trade?@@

[[They've turned a blind eye, or even been complicit.|Extreme Intro][$internationalTrade to 1]] //Slaves from all across the world will appear.//

[[They've done what little they can to stop it.|Extreme Intro][$internationalTrade to 0]] //Almost all slaves will be from the continent where the arcology is located.//

<<link "Reactions have been mixed.">><<set $internationalTrade to 0, $customVariety to 1, $customWA = 1>><<goto "Customize Slave Trade">><</link>> //This will bypass arcology location restrictions, allowing you to adjust the nationalities encountered when buying non-customizable slaves.//


code:
:: Brothel Assignment Scene

<<nobr>>

<<set $nextButton to "Continue">>
<<set $nextLink to $returnTo>>

You could direct $assistantName to relay your orders to $activeSlave.slaveName, but you've decided to avoid relying too much on machine assistance. So, she is merely directed to report to your office. The
<<if $activeSlave.devotion > 95>>
	worshipful girl <<if $activeSlave.amp != 1>>hurries in as soon as she possibly can<<else>>comes in as soon as she can get another slave to carry her in<</if>>, happy her beloved <<if $PC.title == 1>>Master<<else>>Mistress<</if>> is taking an interest in her.
<<elseif $activeSlave.devotion > 50>>
	devoted girl <<if $activeSlave.amp != 1>>hurries in promptly<<else>>comes in as soon as she can get another slave to carry her in<</if>>, eager to do whatever you demand of her.
<<elseif $activeSlave.devotion > 20>>
	girl, broken to your will, <<if $activeSlave.amp != 1>>comes in promptly<<else>>comes in as soon as she can get another slave to carry her in<</if>>, clearly ready to follow orders.
<<elseif ($activeSlave.trust < -20) && ($activeSlave.devotion > -10)>>
	fearful slave <<if $activeSlave.amp != 1>>comes in promptly<<else>>comes in as soon as she can get another slave to carry her in<</if>>, afraid of what will happen to her if she doesn't.
<<elseif ($activeSlave.trust < -50)>>
	terrified slave <<if $activeSlave.amp != 1>>comes in hurriedly<<else>>comes in as soon as she can get another slave to carry her in<</if>>, almost paralyzed by terror of what will happen to her if she doesn't.
<<else>>
	rebellious slave <<if $activeSlave.amp != 1>>comes in slowly, having decided that she can always decide to resist once she hears what you want<<else>>comes in as soon as you order another slave to carry her in, since she can't exactly resist this without limbs<</if>>.
<</if>>
You tell her she's to report to <<if $Madam != 0>>$Madam.slaveName immediately, to serve in the $brothelName<<else>>the $brothelName immediately, to serve there<</if>> until further notice.

<<if $activeSlave.devotion > 50>>

<<if ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish != "none")>>
	She looks excited. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>, I hoped you would <<if SlaveStatsChecker.checkForLisp($activeSlave)>>thend<<else>>send<</if>> me down there <<if SlaveStatsChecker.checkForLisp($activeSlave)>>thometime<<else>>sometime!<</if>>
	<<if ($activeSlave.fetish is "submissive")>>
		I mean, I'll have to do whatever the customer<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> pay for, right?" Her eyes go a little unfocused. "And, they'll hold me down..." She trails off.
	<<elseif ($activeSlave.fetish is "masochist")>>
		I mean, it'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> hard being a brothel whore, right? And when I get tired or <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ore, I'll <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>till be <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>old. Even when it hurt<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> me to fuck any more." Her eyes glow with an unhealthy light.
	<<elseif ($activeSlave.fetish is "cumslut")>>
		I mean," she licks her lips unconsciously,
		<<if $activeSlave.attrXX > $activeSlave.attrXY>>
			"I hear there are <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ome nice ladie<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> that go there for lunchtime cunnilingu<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>."
		<<else>>
			"the blowjob<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>. Ju<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t, the blowjob<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>. That'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> all."
		<</if>>
	<<elseif ($activeSlave.fetish is "humiliation")>>
		There'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> a window that face<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> the hallway there, right? <<if $Madam != 0>>Do you think $Madam.slaveName would let me<<else>>Could I<</if>> get fucked there? Where everyone could <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ee me being fucked for money?"
	<<elseif ($activeSlave.fetish is "buttslut")>>
		I mean," and she shifts her weight, her mind obviously on her backdoor,
		<<if $activeSlave.attrXX > $activeSlave.attrXY>>
			"there have to be ladie<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> who want to buttfuck a whore, right? At lea<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t, I really hope there are."
		<<else>>
			"the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> tell me that whore<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there get fucked up the a<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>ss<</if>> all day and all night. <<if SlaveStatsChecker.checkForLisp($activeSlave)>>Th<<else>>S<</if>>ounds like fun to me."
		<</if>>
	<<elseif ($activeSlave.fetish is "boobs")>>
		I mean," and she sticks out her chest a little,
		<<if $activeSlave.attrXX > $activeSlave.attrXY>>
			"I hear from the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> thi<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> nice lady who goes there every morning and pay<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> to have a whore <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>uck her nipple<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> for, like, an hour. I," she licks her lips, "could do that."
		<<else>>
			"the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> tell me that whore<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there get tittyfucked all the time. <<if SlaveStatsChecker.checkForLisp($activeSlave)>>Th<<else>>S<</if>>ounds like fun to me."
		<</if>>
	<<elseif ($activeSlave.fetish is "pregnancy")>>
		I mean," she says meditatively,
		<<if $activeSlave.attrXX > $activeSlave.attrXY>>
			"I hear from the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> thi<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> pregnant lady who goes there every night and pay<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> to have a whore cuddle her. Ju<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t cuddle, all night. That would be kind of hard, ju<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t cuddling, but I could do it."
		<<elseif $activeSlave.vagina is -1>>
			"<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ince it'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> all bareback, I'm going to have a fuckton of cum in me. I wonder how much cum it take<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> to get a butthole pregnant? I'm gonna try, anyway."
		<<elseif isFertile($activeSlave)>>
			"<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ince it'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> all bareback, I'm going to have a fuckton of cum in me. I wonder how much cum it would take to get my poor womb pregnant?"
		<<elseif $activeSlave.preg > 0>>
			"I'm going to be a pregnant whore. That'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> pretty fucking <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>exy."
		<<else>>
			"I'm can't wait till I can get pregnant. That'd be pretty fucking <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>exy."
		<</if>>
	<<elseif ($activeSlave.fetish is "dom")>>
		I heard from the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> that <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ome citizen<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> bring their girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there. Ju<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t to make them take it from a whore."
	<<elseif ($activeSlave.fetish is "sadist")>>
		I heard from the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> that <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ome citizen<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> bring their girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there. Because nobody know<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> how to hurt a bitch like a whore doe<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>." She shivers.
	<</if>>
<<else>>
	She looks determined. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>, I will do my be<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t to be a good whore, and get lot<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> of citizen<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> to pay good money for my body."
<</if>>

<<elseif ($activeSlave.devotion > 20) || (($activeSlave.devotion >= -20) && ($activeSlave.trust < -20) && ($activeSlave.trust >= -50))>>

<<if ($activeSlave.fetishKnown == 1) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetishStrength > 60) && ($activeSlave.fetish != "none")>>
	She looks cautiously excited. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>,
	<<if ($activeSlave.fetish is "submissive")>>
		I'll have to do whatever the customer<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> pay for, right?" Her eyes go a little unfocused. "And, they'll hold me down..." She trails off.
	<<elseif ($activeSlave.fetish is "masochist")>>
		it'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> hard being a brothel whore, right? And when I get tired or <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ore, I'll <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>till be <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>old. Even when it hurt<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> me to fuck any more." Her eyes glow with an unhealthy light.
	<<elseif ($activeSlave.fetish is "cumslut")>>
		<<if $activeSlave.attrXX > $activeSlave.attrXY>>
			"I hear there are <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ome nice ladie<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> that go there for lunchtime cunnilingu<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>."
		<<else>>
			"the blowjob<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>. Ju<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t, the blowjob<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>. That'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> all."
		<</if>>
	<<elseif ($activeSlave.fetish is "humiliation")>>
		there'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> a window that face<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> the hallway there, right? <<if $Madam != 0>>Do you think $Madam.slaveName would let me<<else>>Could I<</if>> get fucked there? Where everyone could <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ee me being fucked for money?"
	<<elseif ($activeSlave.fetish is "buttslut")>>
		uh," and she shifts her weight, her mind obviously on her backdoor,
		<<if $activeSlave.attrXX > $activeSlave.attrXY>>
			"there have to be ladie<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> who want to buttfuck a whore, right? At lea<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t, I really hope there are."
		<<else>>
			"the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> tell me that whore<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there get fucked up the a<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>ss<</if>> all day and all night. <<if SlaveStatsChecker.checkForLisp($activeSlave)>>Th<<else>>S<</if>>ounds like fun to me."
		<</if>>
	<<elseif ($activeSlave.fetish is "boobs")>>
		er," and she sticks out her chest a little,
		<<if $activeSlave.attrXX > $activeSlave.attrXY>>
			"I hear from the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> thi<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> nice lady who goes there every morning and pay<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> to have a whore <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>uck her nipple<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> for, like, an hour. I," she licks her lips, "could do that."
		<<else>>
			"the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> tell me that whore<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there get tittyfucked all the time. <<if SlaveStatsChecker.checkForLisp($activeSlave)>>Th<<else>>S<</if>>ounds like fun to me."
		<</if>>
	<<elseif ($activeSlave.fetish is "pregnancy")>>
		<<if $activeSlave.attrXX > $activeSlave.attrXY>>
			I hear from the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> thi<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> pregnant lady who goes there every night and pay<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> to have a whore cuddle her. Ju<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t cuddle, all night. That would be kind of hard, ju<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t cuddling, but I could do it."
		<<elseif $activeSlave.vagina is -1>>
			<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ince it'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> all bareback, I'm going to have a fuckton of cum in me. I wonder how much cum it take<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> to get a butthole pregnant? I'm gonna try, anyway."
		<<elseif isFertile($activeSlave)>>
			<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ince it'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> all bareback, I'm going to have a fuckton of cum in me. I wonder how much cum it would take to get my poor womb pregnant?"
		<<elseif $activeSlave.preg > 0>>
			I'm going to be a pregnant whore. That'<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> pretty fucking <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>exy."
		<<else>>
			"I'm can't wait till I can get pregnant. That'd be pretty fucking <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>exy."
		<</if>>
	<<elseif ($activeSlave.fetish is "dom")>>
		I heard from the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> that <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ome citizen<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> bring their girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there. Ju<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t to make them take it from a whore."
	<<elseif ($activeSlave.fetish is "sadist")>>
		I heard from the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> that <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ome citizen<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> bring their girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> there. Because nobody know<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> how to hurt a bitch like a whore doe<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>." She shivers.
	<</if>>
<<elseif $activeSlave.sexualFlaw != "none">>
	"Yes, <<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>," she says obediently. She hesitates, looking concerned.
	<<if ($activeSlave.sexualFlaw is "hates oral")>>
		"I - I'm going to h-have to <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>uck a lot of dick there, aren't I." She swallows nervously. Her lower lip quivers, and she does her best not to cry in front of you.
	<<elseif ($activeSlave.sexualFlaw is "hates anal")>>
		"<<if SlaveStatsChecker.checkForLisp($activeSlave)>>C-cuthtomerth<<else>>C-customers<</if>> are really going to ream me up the butt hole, aren't they." She <<if $activeSlave.amp == 1>>shifts uncomfortably, unconsciously trying to shield her rear as best she can manage without limbs.<<else>>unconsciously reaches around behind herself, not quite shielding her anus with her hands.<</if>> Her lower lip quivers, and she does her best not to cry in front of you.
	<<elseif ($activeSlave.sexualFlaw is "hates penetration")>>
		"<<if SlaveStatsChecker.checkForLisp($activeSlave)>>C-cuthtomerth<<else>>C-customers<</if>> are really going to fuck me <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ore, aren't they." She <<if $activeSlave.amp == 1>>shifts uncomfortably, unconsciously trying to shield her rear as best she can manage without limbs.<<elseif $activeSlave.vagina > 0>>unconsciously lets her hands fall to her crotch, but catches herself and doesn't quite shield her pussy.<<else>>unconsciously reaches around behind herself, not quite shielding her anus with her hands.<</if>> Her lower lip quivers, and she does her best not to cry in front of you.
	<<elseif ($activeSlave.sexualFlaw is "repressed")>>
		"Being a whore is a <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>in," she says quietly, half to herself. "I'm going t-to b-be <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>o dirty. I'm going to h-hell." She starts to cry quietly. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>>Th-th<<else>>S-s<</if>>orry, <<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>. I'll do my be<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t."
	<<elseif ($activeSlave.sexualFlaw is "idealistic")>>
		"I'm going to be <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>old for <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ex," she says quietly, half to herself. "Men are going to pay, and then they're g-going to <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>tick their dick<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> in me, and then they're going to leave." She starts to cry quietly. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>>Th-th<<else>>S-s<</if>>orry, <<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>. I'll do my be<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t."
	<<elseif ($activeSlave.sexualFlaw is "shamefast")>>
		"I'm going to be meat in a brothel," she says quietly, half to herself. "I'm going to <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>tand there naked with the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>, and men will pick me and then u<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>e my body. Over and over." She starts to cry quietly. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>>Th-th<<else>>S-s<</if>>orry, <<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>. I'll do my be<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t."
	<<elseif ($activeSlave.sexualFlaw is "apathetic")>>
		"I gue<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>ss<</if>> I'll lie there," she sighs quietly, half to herself. "A man will pay and then he'll come in to my room where I'm lying on the bed, and he'll <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>tick his cock in me and cum and leave. And then the next man will come in." She starts to cry quietly. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>>Th-th<<else>>S-s<</if>>orry, <<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>. I'll do my be<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t."
	<<elseif ($activeSlave.sexualFlaw is "crude")>>
		"Okay," she says, thinking. "My poor cornhole is going to be <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>uch a <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>eminal <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ewer." She looks doubtful. "Should I not have <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>aid that, <<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>?"
	<<elseif ($activeSlave.sexualFlaw is "judgemental")>>
		"Gro<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>ss<</if>>," she says curtly. "Well, no more hand<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ome boy<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> for me, then. Fat pathetic guy<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> who patronize whore<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>, all the way down. Fuck."
	<</if>>
<<else>>
	She tries to be brave. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>, I will do my be<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>t to be a good whore." Then, half to herself, she adds in a small voice, "I can do thi<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>."
<</if>>

<<elseif ($activeSlave.trust < -20)>>

<<if $activeSlave.sexualFlaw != "none">>
	"Yes, <<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>," she says automatically. She's badly frightened, and says in a small voice, half to herself,
	<<if ($activeSlave.sexualFlaw is "hates oral")>>
		"I - I'm going to h-have to <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>uck a lot of dick, aren't I." She swallows and tries to control herself out of fear, but finally gasps out, "Oh God, I'm <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>cared," and bursts into tears.
	<<elseif ($activeSlave.sexualFlaw is "hates anal")>>
		"<<if SlaveStatsChecker.checkForLisp($activeSlave)>>C-cuthtomerth<<else>>C-customers<</if>> are really going to ream me up the butt hole, aren't they." She <<if $activeSlave.amp == 1>>shifts uncomfortably, unconsciously trying to shield her rear as best she can manage without limbs.<<else>>unconsciously reaches around behind herself, not quite shielding her anus with her hands.<</if>> Her lower lip quivers and she tries to control herself out of fear, but finally gasps out, "Oh God, I'm <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>cared," and bursts into tears.
	<<elseif ($activeSlave.sexualFlaw is "hates penetration")>>
		"<<if SlaveStatsChecker.checkForLisp($activeSlave)>>C-cuthtomerth<<else>>C-customers<</if>> are really going to fuck me <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ore, aren't they." She <<if $activeSlave.amp == 1>>shifts uncomfortably, unconsciously trying to shield her rear as best she can manage without limbs.<<elseif $activeSlave.vagina > 0>>unconsciously lets her hands fall to her crotch, but catches herself and doesn't quite shield her pussy.<<else>>unconsciously reaches around behind herself, not quite shielding her anus with her hands.<</if>> Her lower lip quivers, and she tries to control herself out of fear, but finally gasps out, "Oh God, I'm <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>cared," and bursts into tears.
	<<elseif ($activeSlave.sexualFlaw is "repressed")>>
		"Being a whore is a <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>in," she says quietly, half to herself. "I'm going t-to b-be <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>o dirty. I'm going to h-hell." She starts to cry quietly. She tries to get herself back under control, out of fear, but finally wails, "Oh God, I'm <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>orry, p-plea<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>e forgive me God," and dissolves into sobbing.
	<<elseif ($activeSlave.sexualFlaw is "idealistic")>>
		"I'm going to be <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>old for <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ex," she says quietly, half to herself. "Men are going to pay, and then they're g-going to <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>tick their dick<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> in me, and then they're going to leave." She starts to cry openly. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>>Th-th<<else>>S-s<</if>>orry, <<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>. P-plea<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>se don't beat me. I'll do it."
	<<elseif ($activeSlave.sexualFlaw is "shamefast")>>
		"I'm going to be meat in a brothel," she says quietly, half to herself. "I'm going to <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>tand there naked with the other girl<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>, and men will pick me and then u<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>e my body. Over and over." She starts to cry openly. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>>Th-th<<else>>S-s<</if>>orry, <<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>. P-plea<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>se don't beat me. I'll do it."
	<<elseif ($activeSlave.sexualFlaw is "apathetic")>>
		"I gue<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>ss<</if>> I'll lie there," she sighs quietly, half to herself. "A man will pay and then he'll come in to my room where I'm lying on the bed, and he'll <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>tick his cock in me and cum and leave. And then the next man will come in." She starts to cry quietly. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>>Th-th<<else>>S-s<</if>>orry, <<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>. P-plea<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>se don't beat me. I'll let it happen."
	<<elseif ($activeSlave.sexualFlaw is "crude")>>
		"Okay," she says, thinking. "My poor cornhole is going to be <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>uch a <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>eminal <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ewer." She looks doubtful. "Should I not have <<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>aid that, <<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>?"
	<<elseif ($activeSlave.sexualFlaw is "judgemental")>>
		"Gro<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>ss<</if>>," she says curtly. "Well, no more hand<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>ome boy<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> for me, then. Fat pathetic guy<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>> who patronize whore<<if SlaveStatsChecker.checkForLisp($activeSlave)>>th<<else>>s<</if>>, all the way down. Fuck."
	<</if>>
<<else>>
	She does her best to control herself and avoid punishment. "<<if SlaveStatsChecker.checkForLisp($activeSlave)>><<if def $PC.customTitleLisp>>$PC.customTitleLisp<<elseif $PC.title != 0>>Mathter<<else>>Mithtreth<</if>><<else>><<if def $PC.customTitle>>$PC.customTitle<<elseif $PC.title != 0>>Master<<else>>Mistress<</if>><</if>>, I will." She holds herself together until you dismiss her; as she turns away to go, the tears come fast, and she almost runs into the doorframe on her way out, blind with weeping.
<</if>>

<<else>>

She manages to get "Oh fuck n-" out before the compliance systems activate and she's poleaxed to the ground. Anticipating this, you had <<if $Madam != 0>>$Madam.slaveName <<else>>another, more obedient slave<</if>> standing by to haul her away. It'll take a couple of hundred customers, but being sold in a brothel for rape should knock the resistance out of her.

<</if>> /* CLOSES DEVOTION */

<</nobr>>


code:
:: accordionStyleSheet [stylesheet]
/* Accordion 000-250-006 */

@import url('https://fonts.googleapis.com/css?family=Share+Tech|Share+Tech+Mono');

.passage h1 {
    font-family: 'Share Tech Mono', monospace;
    text-align: right;
}

button.accordion {
    cursor: pointer;
    padding: 5px;
    width: 100%;
    margin-bottom: 10px;
    border-bottom: 2px double grey;
    border-right: none;
    border-left: none;
    border-top: none;
    text-align: left;
    outline: none;
    transition: 0.4s;
    -webkit-transition-duration: 0.4s; /* Safari */
    background-color: transparent;
    font-weight: 900;
}

button.accordion.active {
    background-color: transparent;
}

button.accordion:hover {
    background-color: #2E2E2E;
}

button.accordion:before {
    content: '\002B';
    color: #777;
    font-weight: bold;
    float: left;
    margin-right: 5px;
}

.unStaffed {
    background-color: transparent;
    padding: .5em .2em;
    margin-bottom: 1em;
    border-bottom: thin inset grey;
}

.unStaffed:before {
    content: '\00D7';
    color: #777;
    font-weight: bold;
    color: red;
    float: left;
    margin-right: 5px;
}

.unStaffed:after {
    content: attr(data-after);
    float: right;
    margin-left: 2em;
    font-weight: strong;
    color: green;
}

button.accordion:after {
    content: attr(data-after);
    float: right;
    margin-left: 2em;
    font-weight: normal;
    color: green;
}

button.accordion.active:before {
    content: "\2212";
}

.accHidden {
    padding: 0 18px;
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.2s ease-out;
}

.macro-include {
    clear: both;
}


code:
:: Main stylesheet [stylesheet]

/* clears SugarCube's default transition */
.passage {
    transition: none;
    -webkit-transition: none;
}

/* default is 54em */
#passages {
    max-width: 76em;
}

.imageRef {
    display: flex;
    flex-direction: column;
    flex-wrap: wrap;
    align-items: flex-start;
    position: relative;
}

.tinyImg {
    height: 120px;
    width: 120px;
    float: left;
}
.smlImg {
    height: 150px;
    width: 150px;
    float: left;
}

.medImg {
    height: 300px;
    width: 300px;
    float: right;
}

.lrgImg {
    height: 600px;
    width: 600px;
	margin-right: -100px;
	margin-left: -100px;
    float: right;
}

object {
    object-fit: scale-down;
    position: absolute;
}


code:
:: Alpha disclaimer

<<set $ui to "start">>\
//v. $ver//
@@color:green;//Mod: expanded age ranges and other tweaks 2016-08-30//@@ @@color:darkred;+SV@@
@@color:green;//Mod: extra preg content and other crap//@@

''This is an alpha.'' That means the game is missing content, is full of bugs, is imbalanced, and is generally in an incomplete state. The game will keep a start of turn autosave. If you encounter a bug, I strongly recommend you reload your start of turn autosave immediately. Bugs will occasionally cause a bugged slave named $activeSlave.slaveName (or similar) to appear. If this happens, use the "Discard her" option on the slave menu to get rid of her. Then, please report the circumstances (especially what random event you just saw) to the dev. Please submit your feedback and bug reports at https://www.reddit.com/r/freecitiesgame/ or at http://freecitiesblog.blogspot.com/.

An in-game encyclopedia is available from the sidebar (or [[here|Encyclopedia][$nextButton to "Back", $nextLink to passage()]] if you'd prefer to have a look before starting), with answers to most basic gameplay questions.

__Important note for new players, and a reminder for FC veterans:__ when the player is offered a set of choices, the ''Continue'' button at the top of the left sidebar will almost always remain available. Using this to decline all the options presented is //not cheating.// If it's available, it's supposed to be available. It represents the player character politely bowing out of the situation.

If you enjoy FC and feel like using your real-life ¤ to express gratitude, you can do so at https://www.patreon.com/freecitiesdev?ty=h. It's a tip jar, not support for more content. I'm doing this for fun; let's keep it that way.

''Saves from versions prior to 0.6 are not compatible.''

@@color:yellow;This is a text-based game that includes descriptions of sexual activity, graphic violence, drug use, and other subjects not suitable for persons under the age of 18. This is a work of fiction; any resemblance to actual persons, places, or events is unintended.@@

[[I am 18 or more years of age, I understand, and I wish to continue|Economy Intro]]


code:
:: accordionJS.tw [script]
/* Accordion 000-250-006 */

/*
 * We're making changes to the DOM, so we need to make them *after* everything has been generated
 * Sticking this all in postdisplay calls reduces the chance of there being a timing conflict
 *   with other scripts, since anything poking the DOM here will be done last
 *
 * Dev Note: The accordion mod should be able to turn *anything* into an accordion. This iteration
 *   is configured tightly for the end of week report runs, but it shouldn't be that hard to adapt for
 *   other uses, like character bios. For now, I'll see what other extra-long passages of cosmetic text
 *   might benefit.
 *
 * 000-250-006 03092017
*/

postdisplay["doAccordionSet"] = function (content) {
    if (variables().useAccordion == 1) {
        Array.prototype.slice.call(document.querySelectorAll('.macro-include'))
        .forEach(function(element) {
            element.classList.add('accHidden');
        });
    }
}

postdisplay["doAccordion"] = function (content) {
    var acc = document.getElementsByClassName("accordion");
    var i;

    for (i = 0; i < acc.length; i += 1) {
        acc[i].onclick = function () {
            this.classList.toggle("active");
            var panel = this.nextElementSibling;
            if (panel.style.maxHeight) {
                panel.style.maxHeight = null;
            } else {
                panel.style.maxHeight = panel.scrollHeight + "px";
            }
        };
    }
};


code:
:: BetterRA_JS [script]
//Imported to pregmod from unknown author added this to original FC at some point (0.9.5.4). I don't write this by myself (pregmodfan).

// Implements a Top Down Operator Precedence parser, also know as a Pratt
// parser, after its "inventor", Vaughan Pratt.  The one implemented here
// closely follows what's presented here,
//     * http://javascript.crockford.com/tdop/tdop.html
// by Douglas Crockford.  He uses that parser in JSLint.  Other relevant
// resources on the interweb
//     * http://effbot.org/zone/simple-top-down-parsing.htm
//     * http://eli.thegreenplace.net/2010/01/02/top-down-operator-precedence-parsing
//     * http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers-expression-parsing-made-easy/
//     * https://higherlogics.blogspot.gr/2009/11/extensible-statically-typed-pratt.html
//     * https://github.com/fholm/Vaughan
// included here mostly as bookmarks for potential future reference.
//
// With regards to the lexer, I mostly copied
//     * http://eli.thegreenplace.net/2013/06/25/regex-based-lexical-analysis-in-python-and-javascript/
// not without changes though.
//
// Other useful things, to complement my lacking JavaScript knowledge were
//     * https://plainjs.com/javascript/utilities/merge-two-javascript-objects-19/
//     * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
// Some I actually use, some I do not

function panic(index, msg) {
    throw {index: index, message: msg};
}

function escapeRegExp(s){
    return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

var Lexer = function(skipWhitespace) {
    this.rules = [];
    this.index = 0;
    this.buffer = "";
    this.skipWhitespace = skipWhitespace ? /\S/ : null;
}

Lexer.prototype.addRule = function(id, defn) {
    var pattern = (defn && defn.pattern) || escapeRegExp(id);
    this.rules.push({
        id: id,
        pattern: new RegExp('^' + pattern)
    });
}

Lexer.prototype.feed = function(buffer) {
    this.buffer = buffer;
    this.index = 0;
}

Lexer.prototype.nextInterestingChar = function() {
    if (this.skipWhitespace) {
        var match = this.skipWhitespace.exec(this.buffer.substr(this.index));
        return match ? this.index + match.index
                     : this.buffer.length;
    }
    return this.index;
}

Lexer.prototype.next = function() {
    this.index = this.nextInterestingChar();

    if (this.index >= this.buffer.length)
        return { done: true };

    for (var i = 0; i < this.rules.length; ++i) {
        var rule = this.rules[i],
            match = rule.pattern.exec(this.buffer.substr(this.index));
        if (match) {
            var token = {
                id: rule.id,
                value: match[0],
                index: this.index,
            };
            this.index += token.value.length;
            return { done: false, value: token };
        }
    }

    panic(this.index, "illegal character");
}

var BaseSymbol = {
    lbp: 0,
    nud: function() { panic(this.index, "Undefined"); },
    led: function() { panic(this.index, "Missing operator"); }
};

var Parser = function(eofToken) {
    this.lexer = new Lexer(true);
    this.currentSymbol = null;

    this.eofToken = eofToken;
    this.symbolTable = {
        [this.eofToken]: Object.create(BaseSymbol, {id: {value: this.eofToken}})
    };
}

Parser.prototype.addSymbol = function(id, defn) {
    var s = this.symbolTable[id];
    if (s) {
        if (defn && defn.lbp !== undefined && defn.lbp >= s.lbp) s.lbp = defn.lbp;
        if (defn && defn.nud !== undefined) s.nud = defn.nud;
        if (defn && defn.led !== undefined) s.led = defn.led;
    } else {
        s = Object.create(BaseSymbol);
        s.id = id;
        if (defn && defn.lbp !== undefined) s.lbp = defn.lbp;
        if (defn && defn.nud) s.nud = defn.nud;
        if (defn && defn.led) s.led = defn.led;
        this.symbolTable[id] = s;
        this.lexer.addRule(id, defn);
    }
    return this;
}

Parser.prototype.addInfix = function(id, lbp, callback) {
    this.addSymbol(id, {
        lbp: lbp,
        led: function(p, left) { return callback(this, left, p.parse(lbp)); }
    });
    return this;
}

Parser.prototype.addInfixR = function(id, lbp, callback) {
    this.addSymbol(id, {
        lbp: lbp,
        led: function(p, left) { return callback(this, left, p.parse(lbp-1)); }
    });
    return this;
}

Parser.prototype.addPrefix = function(id, callback) {
    this.addSymbol(id, {
        // FIXME: is the rbp (in parse) always 70?
        nud: function (p) { return callback(p.parse(70)); }
    });
    return this;
}

Parser.prototype.advance = function(id) {
    if (id && this.currentSymbol.id !== id)
        panic(this.currentSymbol.index, "expected '" + id + "'");

    var iter = this.lexer.next(),
        token = iter.value;
    if (iter.done)
        token = {
            id: this.eofToken,
            value: "",
            index: this.lexer.buffer.length
        };

    var symbol = this.symbolTable[iter.done ? this.eofToken : token.id];
    if (!symbol)
        panic(token.index, "unknown token " + token.id);

    var newSymbol = Object.create(symbol);
    newSymbol.value = token.value;
    newSymbol.index = token.index;
    return this.currentSymbol = newSymbol;
}

Parser.prototype.parse = function(rbp) {
    var symbol = this.currentSymbol;
    this.advance();
    var left = symbol.nud(this);

    rbp = rbp || 0;
    while (rbp < this.currentSymbol.lbp) {
        symbol = this.currentSymbol;
        this.advance();
        left = symbol.led(this, left);
    }
    return left;
}

Parser.prototype.parseString = function(string) {
    this.lexer.feed(string);
    this.advance();  // "kickstart" the lexer
    return this.parse();
}

var BaseExpression = {
    check: function(env) { panic("Wrong!"); },
    eval: function(env) { panic("Do no know how to eval " + this); }
};

var DeferredEvalParserBuilder = function(eofToken) {
    this.parser = new Parser(eofToken);
}

DeferredEvalParserBuilder.prototype.addSymbol = function(id, extra) {
    this.parser.addSymbol(id, extra);
    return this;
}

DeferredEvalParserBuilder.prototype.addInfix = function(id, lbp, func) {
    this.parser.addInfix(id, lbp, function(symbol, left, right) {
        var expr = Object.create(BaseExpression);
        expr.first = left;
        expr.second = right;
        expr.eval = function(env) {
            return func(this.first.eval(env), this.second.eval(env));
        };
        return expr;
    });
    return this;
}

DeferredEvalParserBuilder.prototype.addInfixR = function(id, lbp, func) {
    this.parser.addInfixR(id, lbp, function(symbol, left, right) {
        var expr = Object.create(BaseExpression);
        expr.first = left;
        expr.second = right;
        expr.eval = function(env) {
            return func(this.first.eval(env), this.second.eval(env));
        };
        return expr;
    });
    return this;
}

DeferredEvalParserBuilder.prototype.addPrefix = function(id, func) {
    this.parser.addPrefix(id, function (symbol) {
        var expr = Object.create(BaseExpression);
        expr.val = symbol;
        expr.eval = function(env) { return func(this.val.eval(env)); };
        return expr;
    });
    return this;
}

var op = {
    add: function(a, b) { return a + b; },
    sub: function(a, b) { return a - b; },
    mul: function(a, b) { return a * b; },
    div: function(a, b) { return a / b; },
    pow: function(a, b) { return Math.pow(a, b); },  // for completeness

    neg: function(a) { return -a; },

    lt: function(a, b) { return a < b; },
    le: function(a, b) { return a <= b; },
    gt: function(a, b) { return a > b; },
    ge: function(a, b) { return a >= b; },
    eq: function(a, b) { return a === b; },
    neq: function(a, b) { return a !== b; },

    not: function(a) { return !a; },
    or: function(a, b) { return a || b; },
    and: function(a, b) { return a && b; },
};

var parserBuilder = new DeferredEvalParserBuilder('(end)')
    .addSymbol('(int)', {
        pattern: '\\d+',
        nud: function() {
            var expr = Object.create(BaseExpression);
            expr.val = parseInt(this.value);
            expr.eval = function() { return this.val; };
            return expr;
        }
    })
    .addSymbol('(name)', {
        pattern: '[a-zA-Z]\\w*',
        nud: function(p) {
            var expr = Object.create(BaseExpression);
            expr.name = this.value;
            expr.eval = function(env) { return env[this.name]; };
            return expr;
        }
    })

    .addInfix("+", 50,  op.add)
    .addInfix("-", 50,  op.sub)
    .addInfix("*", 60,  op.mul)
    .addInfix("/", 60,  op.div)
    .addInfixR("^", 70, op.pow)

    .addPrefix("-", op.neg)

    .addInfix("<=", 30, op.le)
    .addInfix("<",  30, op.lt)
    .addInfix(">=", 30, op.ge)
    .addInfix(">",  30, op.gt)
    .addInfix("!=", 30, op.neq)
    .addInfix('=',  30, op.eq)

    .addPrefix("!", op.not)
    .addInfix('||', 30, op.or)
    .addInfix('&&', 30, op.and)

    .addSymbol(")")
    .addSymbol("(", {
        nud: function(p) {
            var expr = p.parse(0);
            p.advance(")");
            return expr;
        }
    });

window.parser = parserBuilder.parser;
window.parseAndEvaluate = function(text, env) {
    var expr = parser.parseString(text);
    return expr.eval(env);
}


code:
:: EconomyJS [script]

window.LivingRule = Object.freeze({LUXURIOUS: 'luxurious', NORMAL: 'normal', SPARSE: 'sparse'});
window.Job = Object.freeze({
	DAIRY: 'work in the dairy', MASTER_SUITE: 'serve in the master suite', CONCUBINE: 'be your concubine',
	BABY_FACTORY: 'labor in the production line', BROTHEL: 'work in the brothel'});

window.getSlaveCost = function(s) {
	if(!s) { return 0; }
	// Data duplicated from Cost Report
	var cost = 0;
	var rulesCost = State.variables.rulesCost;
	var foodCost = State.variables.foodCost;
	var drugsCost = State.variables.drugsCost;

	// Living expenses
	if(s.livingRules === LivingRule.LUXURIOUS) {
		cost += rulesCost * (s.relationship >= 4 ? 3 : 4);
	} else if(s.livingRules == LivingRule.NORMAL) {
		cost += rulesCost * 2;
	} else {
		cost += rulesCost;
	}

	// Food
	cost += foodCost * 4;
	switch(s.diet) {
		case 'fattening': case 'muscle building':
			cost += foodCost;
			break;
		case 'restricted': case 'slimming':
			cost -= foodCost;
	}
	if(s.weight > 50) {
		cost += foodCost;
	} else if(s.weight < -50) {
		cost -= foodCost;
	}
	if(s.lactation > 0) {
		cost += foodCost * (1 + s.lactation * (1 + Math.trunc(s.boobs/10000)));
	}
	if(s.preg > 5) {
		if(s.assignment === Job.DAIRY && State.variables.dairyFeedersSetting > 0) {
			// Extra feeding costs to support pregnancy are covered by dairy feeders.
			// TODO: Include them here anyway?
		} else if((s.assignment === Job.MASTER_SUITE || s.assignment === Job.CONCUBINE)
			&& State.variables.masterSuiteUpgradePregnancy === 1) {
			// Extra feeding costs to support pregnancy are covered by master suite luxuries.
			// TODO: Include them here anyway?
		} else {
			cost += foodCost * s.pregType * (s.pregControl === 'speed up' ? 3 : 1);
		}
	}
	if(s.diet === 'XX' || s.diet === 'XY') {
		cost += 25;
	} else if(s.diet === 'XXY') {
		cost += 75;
	}

	// Accessibility costs
	if(State.variables.boobAccessibility !== 1 && s.boobs > 7500
		&& (s.assignment != Job.DAIRY || State.variables.dairyRestraintsSetting < 2)) {
		cost += 50;
	}
	if(State.variables.pregAccessibility !== 1
		&& ((s.preg > 30 && s.pregType >= 2) || (s.preg > 20 && s.pregType >= 10) || (s.preg > 10 && s.pregType >= 20) || s.bellyImplant >= 10000)
		&& s.assignment != Job.BABY_FACTORY) {
		cost += 100;
	}
	if(State.variables.dickAccessibility != 1 && s.dick > 45) {
		cost += 50;
	}
	if(State.variables.ballsAccessibility != 1 && s.balls > 90) {
		cost += 50;
	}
	if(State.variables.buttAccessibility != 1 && s.butt > 15) {
		cost += 50;
	}
	if(!canSee(s)) {
		cost += 50;
	} else if(s.eyes <= -1) {
		cost += 25;
	} else if(s.eyewear === 'blurring glasses' || s.eyewear === 'blurring contacts') {
		cost += 25;
	}
	if(s.amp !== 0) {
		if(s.amp === 1) {
			cost += rulesCost;
		} else {
			cost += rulesCost / 2;
		}
	} else if(!canWalk(s)) {
		cost += rulesCost;
	}

	// Maintenance
	if(s.boobs > 10000 && s.boobsImplantType === 1) {
		cost += 50;
	}
	if(s.butt > 10 && s.buttImplantType === 1) {
		cost += 50;
	}
	if(s.preg > 25 && s.universalRulesBirthing === 1) {
		cost += 50;
	}

	// Retirement account
	if(State.variables.CitizenRetirement === 1) {
		cost += 250;
	}

	if(s.inflationType === 'water') {
		switch(s.inflation) {
			case 3:
				cost += 100;
				break;
			case 2:
				cost += 50;
				break;
			case 1:
				cost += 25;
				break;
		}
	}

	// Drugs
	if(s.drugs === 'anti-aging cream') {
		cost += drugsCost * 10;
	} else if(s.drugs === 'female hormone injections' || s.drugs === 'male hormone injections') {
		cost += drugsCost * 5;
	} else if(s.drugs != 'no drugs') {
		cost += drugsCost + 2;
	}
	if(s.curatives > 0) {
		cost += drugsCost * (1 + s.curatives);
	}
	if(s.aphrodisiacs > 0) {
		cost += drugsCost * s.aphrodisiacs;
	}
	if(s.hormones !== 0) {
		cost += Math.trunc(drugsCost * Math.abs(s.hormones) * 0.5);
	}
	if(s.preg === -1 && isFertile(s)) {
		cost += Math.trunc(drugsCost * 0.5);
	}

	// Promotion costs
	if(State.variables.studio === 1) {
		if(s.pornFameSpending > 0) {
			cost += s.pornFameSpending;
		}
	}

	if(isNaN(cost)) {
		throw new Error('Cost calculation for slave ' + s.slaveName + ' (' + s.ID + ') failed.');
	}
	return cost;
};

window.getSlaveStatisticData = function(s, facility) {
	if(!s || !facility) {
		// Base data, even without facility
		return {
			ID: s.ID, slaveName: s.slaveName, customLabel: s.customLabel,
			income: 0, adsIncome: 0, rep: 0, cost: getSlaveCost(s),
			customers: 0 /* brothel, club, ... */
		};
	}

	if(!facility.income) {
		facility.income = new Map();
	}

	if(facility.income.has(s.ID)) {
		return facility.income.get(s.ID);
	} else {
		var data = {
			ID: s.ID, slaveName: s.slaveName, customLabel: s.customLabel,
			income: 0, adsIncome: 0, rep: 0, cost: getSlaveCost(s),
			customers: 0 /* brothel, club, ... */
		};
		facility.income.set(s.ID, data);
		return data;
	}
};

window.initFacilityStatistics = function(facility) {
	facility = facility || {};
	facility.adsIncome = 0;
	facility.maintenance = 0;
	facility.totalIncome = 0;
	facility.totalExpenses = 0;
	facility.profit = 0;
	facility.income = new Map();
	return facility;
}

Number.prototype.toFixedHTML = function() {
	return Number.prototype.toFixed.apply(this, arguments).replace(/\.0+$/, '$&');
}