<!-- This tutorial is about private parts, which can be observed in nudity tab from the right.
Common recomendation: If you struggle to understand how to write corectly, inspect predefined opinions.

Path for predefined private parts opinions:
From Observer perspective (I have seen Pawns private parts...)
NudityMattersMore_opinions\Defs\PrivatePartsOpinionDefs
YoungPawnsAndGeneral
MiddleAgedToOlderPawnsAddon

Here are predefined private parts opinions from Self perspective (My own genitals are...)
NudityMattersMore_opinions\Defs\PrivatePartsOpinionDefs\SelfPrivatePartsOpinion

How it is working:
Mod checks for different conditions and calculates weight for opinons to have propability to be selected. 
The more specific condition you have, propability to select your opinion when conditions are met is very high.
BUT REMEMBER! IF ONE OF THE CONDITIONS YOU SETTED UP WILL NOT MATCH, YOU OPINOIN WILL BE SKIPED! This helps to filter specific opinonis from others, and helps create unique scenarios.

In the first example we are writing for Observer perspective (I saw Pawns private parts).
And for auto replace tokens we are focused on OBSERVED tokens. 

By the way, this symbols is used to add comentary in xml <!-- Your text -->

<!-- !!!!You can skip to next chapter if you dont need in depth explanation (beginner friendly), and go for full possible conditions.!!!! -->



<!-- CHAPTER 1. In depth explanation. -->



<!-- Start your custom XML addon like that: -->
<?xml version="1.0" encoding="utf-8"?> <!-- Start of our document, needed only once, or you will get errors!-->
<Defs> <!-- Start of our Defs data base, needed only once, or you will get errors!-->

		<!-- Start of our first custom opinion --> 
	<Def Class="NudityMattersMore_opinions.OpinionDef_SexPart" ParentName="BaseSexPartOpinionDef">
        <defName>Custom_Private_part_opinion</defName> <!-- Your defname, must be unique name! Make it understandable -->
		<label>Your name for Female Average Breasts (Negative)</label> <!-- Your label name, must be unique name!  Make it understandable -->
        <targetBodyPart>Chest</targetBodyPart> <!-- Which body part you would like to write about? Possible private parts: Genitals, Chest, Anus. -->
        <opinionCategory>Negative</opinionCategory> <!-- Opinon category. Possible categories: Positive, Neutral, Negative. -->
        <severityRange>0.40~0.60</severityRange> <!-- For what size we are writing our opinion? See rjw\1.5\Defs\HediffDefs\Hediffs_PrivateParts\Hediffs_PrivateParts.xml for sizes. You can target from 0.01 to 2 at once, for all sizes coverage(not recomended) -->
		<genitalFamily>Breasts</genitalFamily> <!-- Define genital family, possible values: Breasts, Penis, Vagina, Anus (for anus you can skip genitalFamily check, and simply not use this field at all), Undefined (undefined is not recomended to use) -->
		<!-- Now is a juicy part, specific conditions, to triger this opinion, if one of the requered will not match in game, opinioin will be skiped! -->
		<modExtensions>
            <li Class="NudityMattersMore_opinions.OpinionConditionExtension">
			<isSelfOpinion>False</isSelfOpinion> <!-- Self explenatory, is this opinion for self or someone else? Possible value: True, False -->
			<!-- We will stop here, and later explore down below a more specified conditoins. -->
            </li>
        </modExtensions>
		<opinionTexts>
            <li>Ugh, {OBSERVED_nameShortPossessive} breasts are saggy and ugly, not for my liking.</li> <!-- Here you will write your text, remember we are selected observer perspective, so all text must be about another pawn -->
            <!-- And in game we will see this: Ugh, Anna's breasts are saggy and ugly, not for my liking.-->
            <li></li> <!-- You can have this <li></li> as much as you like -->
        </opinionTexts>
    </Def> <!-- End of our first custom opinion -->
	
</Defs> <!-- !!!!!!!!! Remember, if you have in one document multiple defs, like i have in predifined opinions, close this label at very bottom of document, or XML errors will occur -->


<!-- Now for AUTO REPLACE TOKENS. You can incude them in you text, to explicetly refer to a observed pawn -->
<!--
By default common auto replace tokens are incuded, and they will refer to observed in Private parts scenario, 
but i higly suggest you to use OBSERVED/OBSERVER tokens. (for my shame i invented them for my self for too late in private parts)

Default tokens, refers to OBSERVED pawn in this scenario (not self opinion).
{PAWN_nameShort} - Short pawn name, example: John, Sara...
{PAWN_possessive} - Possessive pronoun of pawn. Example: {PAWN_nameShort} and {PAWN_possessive} ego. -> John and his ego.
{PAWN_nameShortPossessive} - Possessive name of pawn. Example: {PAWN_nameShortPossessive} ample chest. -> Anna's ample chest.
{PAWN_nameFull} - Full pawn name, example Todd Howard, the skyrim seller. (not recomended to use all full name tokens).
{PAWN_gender} - Gender of observed pawn. Example: {PAWN_nameShort} {PAWN_gender} -> Anna female (trap, futa or custom also will be displayed if matched.)
{PAWN_pronoun} - He, she, it. example: That smile was cute, {PAWN_pronoun} is adorable. -> That smile was cute, she is adorable.
{PAWN_objective} - His, her, their. (well this field mostly matter in other languages)
{PAWN_kindDef} - Pawn kind, example: I noticed Colonist near the lake.
{PAWN_faction} - Faction of pawn. example: John from Panty stealers orange union.


OBSERVER - who saw genitals.
Same as above. I will only include examples here.

{OBSERVER_nameShort} - John
{OBSERVER_nameShortPossessive} - John's
{OBSERVER_gender} - Male
{OBSERVER_possessive} - his
{OBSERVER_pronoun} - he
{OBSERVER_objective} - his
{OBSERVER_nameFull} - John Smith pussy slayer
{OBSERVER_kindDef} - colonist, hostile, prisoner...
{OBSERVER_faction} - Orange union of citrus lovers
{OBSERVER_ageBiologicalYears} - 69
{OBSERVER_needSexState} - (Ahegao, Satisfied, Neutral, Horny, Frustrated)

OBSERVED - who genitals was seen.
Same as above. I will only include examples here.

{OBSERVED_nameShort} - John
{OBSERVED_nameShortPossessive} - John's
{OBSERVED_gender} - Male
{OBSERVED_possessive} - his
{OBSERVED_pronoun} - he
{OBSERVED_objective} - his
{OBSERVED_nameFull} - John Smith pussy slayer
{OBSERVED_kindDef} - colonist, hostile, prisoner...
{OBSERVED_faction} - Orange union of citrus lovers
{OBSERVED_ageBiologicalYears} - 69
{OBSERVED_needSexState} - (Ahegao, Satisfied, Neutral, Horny, Frustrated)
-->

<!-- Final clean look for reference: -->

<?xml version="1.0" encoding="utf-8"?>
<Defs>

	<Def Class="NudityMattersMore_opinions.OpinionDef_SexPart" ParentName="BaseSexPartOpinionDef">
        <defName>Custom_Private_part_opinion</defName> 
		<label>Your name for Female Average Breasts (Negative)</label> 
        <targetBodyPart>Chest</targetBodyPart>
        <opinionCategory>Negative</opinionCategory>
		<severityRange>0.40~0.60</severityRange>
		<genitalFamily>Breasts</genitalFamily>
		<modExtensions>
            <li Class="NudityMattersMore_opinions.OpinionConditionExtension">
			<isSelfOpinion>False</isSelfOpinion>
            </li>
        </modExtensions>
		<opinionTexts>
            <li>Ugh, {OBSERVED_nameShortPossessive} breasts are saggy and ugly, not for my liking.</li>
            <li>{OBSERVED_nameShortPossessive} {OBSERVED_gender} melons are just a joke for {OBSERVED_possessive} {OBSERVED_ageBiologicalYears} years.</li>
        </opinionTexts>
    </Def>
	
	<!-- Example of multiple opinoins in one document -->
	<Def Class="NudityMattersMore_opinions.OpinionDef_SexPart" ParentName="BaseSexPartOpinionDef">
        <defName>Custom_Private_part_opinion_for_nipples</defName> 
		<label>Your name for Female Nipples (Positive)</label> 
        <targetBodyPart>Chest</targetBodyPart>
        <opinionCategory>Positive</opinionCategory>
		<severityRange>0.01</severityRange>
		<genitalFamily>Breasts</genitalFamily>
		<modExtensions>
            <li Class="NudityMattersMore_opinions.OpinionConditionExtension">
			<isSelfOpinion>False</isSelfOpinion>
            </li>
        </modExtensions>
		<opinionTexts>
            <li>{OBSERVED_nameShort} with {OBSERVER_possessive} nipples out, is looking so sexy.</li>
        </opinionTexts>
    </Def>
	
</Defs>

<!-- CHAPTER 2. All possible conditions. (for observer to give opinion) -->

<!-- Take a note, that we can set up conditions also for observer, for example <requiredObserverTrait> take a closer look at this(<required !-> Observer <-! Trait>), this field says only OBSERVER WITH THIS TRAIT CAN GIVE AN OPINION! -->
<!-- YOU ARE NOT OBLIGATED TO FILL ALL OF THE CONDITIONS in your normal xml, you can skip and just not to include specific conditions -->

<?xml version="1.0" encoding="utf-8"?>
<Defs>
<Def Class="NudityMattersMore_opinions.OpinionDef_SexPart" ParentName="BaseSexPartOpinionDef">
        <defName>Opinion_FullExample_DemonicGenitalia</defName> <!-- Unique name!!! -->
        <label>Example: Demon Penis (Positive, Specific)</label> <!-- Unique name!!! -->
		<!-- Observed pawn private parts conditions (his penis was...)-->
        <targetBodyPart>Genitals</targetBodyPart> <!-- Genitals, Chest, Anus. -->
        <opinionCategory>Positive</opinionCategory> <!-- Positive, Neutral, Negative. -->
        <severityRange>0.80~2</severityRange> <!-- Range, from 0.01 till 1, for monster sizes, till 2, For exact match see RJW Hediffs_PrivateParts.xml-->
        <genitalFamily>Penis</genitalFamily> <!-- Breasts, Penis, Vagina, Anus, Undefined -->
        <modExtensions>
            <li Class="NudityMattersMore_opinions.OpinionConditionExtension">
				<isSelfOpinion>false</isSelfOpinion> <!-- We are giving opinoin, not talking about self, thats why it is false -->
				
				<!-- Requerements for observer, to give this specific opinioin -->
                <requiredObserverTrait>Nudist</requiredObserverTrait> <!-- Observer need to have this trait, you can include other mods traits, not only vanilla Kind, Psychopath etc. but also like NMM_Prude and others -->
				<requiredObserverGender>Female</requiredObserverGender> <!-- Male, Female, None, or just dont include this field if this dosent matter -->
				<requiredObserverLifeStage>HumanlikeAdult</requiredObserverLifeStage> <!-- Observer Life stage requered HumanlikeBaby, HumanlikeChild, HumanlikeTeenager, HumanlikeAdult or custom, but better use biological age -->
				<requiredObserverQuirk>DemonLoverQuirk</requiredObserverQuirk> <!-- Observer Quirks from mods or RJW, see you desired mod correct def name for quirks-->
                <minBiologicalAge>30</minBiologicalAge> <!-- observer min years to give this opinion -->
                <maxBiologicalAge>70</maxBiologicalAge> <!-- observer max years to give this opinion, you can skip this if doesent matter age gap-->
                <requiredObserverNeedSexState>Horny</requiredObserverNeedSexState> <!-- observer need to be in this sex mood to triger opinon. Ahegao, Satisfied, Neutral, Horny, Frustrated-->
				
				<!-- Requerements for observed, to recieve this specific opinioin -->
                <requiredObservedHediffDef>DemonPenis</requiredObservedHediffDef> <!-- Penis, DogPenis, DemonPenis, TentaclePenis... Observed pawn needs to have specific health heddif-->
                <requiredObservedGeneDef>rjw_genes_demon_genitalia</requiredObservedGeneDef> <!-- examples rjw_genes_canine_genitalia, rjw_genes_demon_genitalia, rjw_genes_succubus_genitalia. or other gene defs, not only body parts-->
                <requiredObservedGender>Male</requiredObservedGender> <!-- male, female, None, or skip -->
                <requiredObservedLifeStage>HumanlikeAdult</requiredObservedLifeStage>  <!-- Observed Life stage requered HumanlikeBaby, HumanlikeChild, HumanlikeTeenager, HumanlikeAdult or custom -->
                <requiredObservedMinBiologicalAge>18</requiredObservedMinBiologicalAge> <!-- observed biological age minimal plank. You are possible include only one if you like, min or max, to take into account all ages from that point or till that point if in max -->
                <requiredObservedMaxBiologicalAge>60</requiredObservedMaxBiologicalAge> <!-- observed biological age maximal cap -->
                <requiredObservedNeedSexState>Ahegao</requiredObservedNeedSexState> <!-- observed sex mood to triger this opinioin. Ahegao, Satisfied, Neutral, Horny, Frustrated -->
            </li>
        </modExtensions>

        <opinionTexts>
            <li>As a {OBSERVER_kindDef} and a devoted {OBSERVER_nameShortPossessive} Demon Lover quirk,
                {OBSERVER_nameShortPossessive} find this {OBSERVED_gender} in {OBSERVED_possessive} adult stage
                with {OBSERVED_nameShortPossessive} magnificent demonic parts absolutely divine!
                {OBSERVER_nameShortPossessive} biological age ({OBSERVER_ageBiologicalYears} years) is just right to appreciate this.
                The observed {OBSERVED_nameShort} is clearly in an {OBSERVED_needSexState} state, how captivating!</li>
            <li>By the void, such a huge demonic appendage on an adult {OBSERVED_kindDef}!
                Truly captivating for a {OBSERVER_gender} like {OBSERVER_nameShort} (aged {OBSERVER_ageBiologicalYears}),
                especially when {OBSERVED_possessive} in an {OBSERVED_needSexState} state!</li>
        </opinionTexts>
    </Def>
</Defs>


<!-- CHAPTER 3. All possible conditions. (for self opinion) -->
<!-- Now tricky part, SELF opinon is combination, as pawns who looks (observer) and pawn who was watched (observed) is the same pawn. You can skip gender checks, to target non binary pawns, but in the example they will be present -->

<?xml version="1.0" encoding="utf-8"?>
<Defs>
   <Def Class="NudityMattersMore_opinions.OpinionDef_SexPart" ParentName="BaseSexPartOpinionDef">
        <defName>Opinion_Self_Huge_Breasts_Satisfied</defName> <!-- Unique name!!! -->
        <label>Self-Opinion: Huge Breasts (Satisfied)</label> <!-- Unique name!!! -->
        <targetBodyPart>Breasts</targetBodyPart>
        <opinionCategory>Positive</opinionCategory>
        <severityRange>0.80~1</severityRange> <!-- for example Huge breasts -->
        <genitalFamily>Breasts</genitalFamily>
        <modExtensions>
            <li Class="NudityMattersMore_opinions.OpinionConditionExtension">
                <isSelfOpinion>true</isSelfOpinion> <!-- As it is self opinoin, this now is true -->
                <requiredObserverGender>Female</requiredObserverGender>
                <requiredObservedGender>Female</requiredObservedGender>
                <requiredObserverNeedSexState>Satisfied</requiredObserverNeedSexState>
                <requiredObservedNeedSexState>Satisfied</requiredObservedNeedSexState>
				<minBiologicalAge>30</minBiologicalAge>
				<maxBiologicalAge>70</maxBiologicalAge>
				<requiredObservedMinBiologicalAge>18</requiredObservedMinBiologicalAge>
				<requiredObservedMaxBiologicalAge>60</requiredObservedMaxBiologicalAge>
				<requiredObserverNeedSexState>Ahegao</requiredObserverNeedSexState>
                <requiredObservedNeedSexState>Ahegao</requiredObservedNeedSexState>
            </li>
        </modExtensions>
        <opinionTexts>
            <li>My breasts feel so full and delightful when I'm full in ahegao state.</li> <!-- technicly could include replace TOKENS like {OBSERVER_needSexState}, as observer and observed is one face, but not tested -->
            <li>Looking at my own chest, I feel a wave of pleasure. So round!</li>
            <li>These are truly perfect breasts. So content right now.</li>
        </opinionTexts>
    </Def>
</Defs>



<!-- And the last cahpter. Just cleat templates, for you to copy/paste and modify. Create txt document, rename it to your desired name like example.xml aproving file change, and copy paste one of desired templates. -->
<!-- multiple Def can be included in a single document, just remember to give them unique name -->

<!-- Simple basic OBSERVER opinion template -->

<?xml version="1.0" encoding="utf-8"?>
<Defs>
	<Def Class="NudityMattersMore_opinions.OpinionDef_SexPart" ParentName="BaseSexPartOpinionDef">
        <defName>Custom DEF name</defName> 
		<label>Custom Label name</label> 
        <targetBodyPart>Chest</targetBodyPart>
        <opinionCategory>Negative</opinionCategory>
		<severityRange>0.40~0.60</severityRange>
		<genitalFamily>Breasts</genitalFamily>
		<modExtensions>
            <li Class="NudityMattersMore_opinions.OpinionConditionExtension">
			<isSelfOpinion>False</isSelfOpinion>
            </li>
        </modExtensions>
		<opinionTexts>
            <li></li>
        </opinionTexts>
    </Def>
</Defs>

<!-- All conditions OBSERVER opinion template -->

<?xml version="1.0" encoding="utf-8"?>
<Defs>
	<Def Class="NudityMattersMore_opinions.OpinionDef_SexPart" ParentName="BaseSexPartOpinionDef">
        <defName>Opinion_FullExample_DemonicGenitalia</defName>
        <label>Example: Demon Penis (Positive, Specific)</label>
        <targetBodyPart>Genitals</targetBodyPart>
        <opinionCategory>Positive</opinionCategory>
        <severityRange>0.80~2</severityRange>
        <genitalFamily>Penis</genitalFamily>
        <modExtensions>
            <li Class="NudityMattersMore_opinions.OpinionConditionExtension">
				<isSelfOpinion>false</isSelfOpinion>
				<!-- Requerements for observer, to give this specific opinioin -->
                <requiredObserverTrait>Nudist</requiredObserverTrait>
				<requiredObserverGender>Female</requiredObserverGender>
				<requiredObserverLifeStage>HumanlikeAdult</requiredObserverLifeStage>
				<requiredObserverQuirk>DemonLoverQuirk</requiredObserverQuirk>
                <minBiologicalAge>30</minBiologicalAge>
                <maxBiologicalAge>70</maxBiologicalAge>
                <requiredObserverNeedSexState>Horny</requiredObserverNeedSexState>
				<!-- Requerements for observed, to recieve this specific opinioin -->
                <requiredObservedHediffDef>DemonPenis</requiredObservedHediffDef>
                <requiredObservedGeneDef>rjw_genes_demon_genitalia</requiredObservedGeneDef>
                <requiredObservedGender>Male</requiredObservedGender>
                <requiredObservedLifeStage>HumanlikeAdult</requiredObservedLifeStage>
                <requiredObservedMinBiologicalAge>18</requiredObservedMinBiologicalAge>
                <requiredObservedMaxBiologicalAge>60</requiredObservedMaxBiologicalAge>
                <requiredObservedNeedSexState>Ahegao</requiredObservedNeedSexState>
            </li>
        </modExtensions>
        <opinionTexts>
            <li></li>
        </opinionTexts>
    </Def>
</Defs>

<!-- All conditions for SELF opinion template -->

<?xml version="1.0" encoding="utf-8"?>
<Defs>
   <Def Class="NudityMattersMore_opinions.OpinionDef_SexPart" ParentName="BaseSexPartOpinionDef">
        <defName>Opinion_Self_Huge_Breasts_Satisfied</defName>
        <label>Self-Opinion: Huge Breasts (Satisfied)</label>
        <targetBodyPart>Breasts</targetBodyPart>
        <opinionCategory>Positive</opinionCategory>
        <severityRange>0.80~1</severityRange>
        <genitalFamily>Breasts</genitalFamily>
        <modExtensions>
            <li Class="NudityMattersMore_opinions.OpinionConditionExtension">
                <isSelfOpinion>true</isSelfOpinion>
                <requiredObserverGender>Female</requiredObserverGender>
                <requiredObservedGender>Female</requiredObservedGender>
                <requiredObserverNeedSexState>Satisfied</requiredObserverNeedSexState>
                <requiredObservedNeedSexState>Satisfied</requiredObservedNeedSexState>
				<minBiologicalAge>30</minBiologicalAge>
				<maxBiologicalAge>70</maxBiologicalAge>
				<requiredObservedMinBiologicalAge>18</requiredObservedMinBiologicalAge>
				<requiredObservedMaxBiologicalAge>60</requiredObservedMaxBiologicalAge>
				<requiredObserverNeedSexState>Ahegao</requiredObserverNeedSexState>
                <requiredObservedNeedSexState>Ahegao</requiredObservedNeedSexState>
            </li>
        </modExtensions>
        <opinionTexts>
            <li></li>
        </opinionTexts>
    </Def>
</Defs>