Obsidian
Parchment
Dusk
Rosewood
Moonveil
Sakura
Verdigris
  • you can have maybe 2 kids simultaneously (since girls have 2 breasts). age limit is from 0 to 6. maybe for African blood male/futa getting breast fed will give chance to get BBC trait. while the girls can have a small chance of getting black curiosity, if her mom is fucking BBC while breastfeeding her. breast feeding will give stats to the baby (0-6 years old).
  • A Decision/Scenario/Laws that forbid feeding white male babies, maybe feed them with BBC's Cum instead. the result of doing this is, white male babies will gain some sort penalty/trait (black curiosity).
  • Tattoo "Black Baby Feeders" or "Black Baby Only"

the idea for the UI: if you at the relation page inside window_character.gui it should display 2 empty boxes (floating, you can drag and drop, always shows on top of other window). only shows for lactating adult female. add lactation mechanics. UI also should display the lactation amount of the character.

setup a new relation like ward and guardian. make character interaction for player character and court character just like education. make custom UI window for it. slot 1 slot 2 can be left breast and right breast. try to get the portrait shown from behind to mimic breast feeding. could also show amount of milk

investigate this:


widget = {
                        name = "first_row"
                        layoutpolicy_horizontal = expanding
                        layoutpolicy_vertical = expanding
                        maximumsize = { -1 110 }
                        scissor = yes

                        hbox = {
                            vbox_character_row_item = {
                                name = "wards"
                                visible = "[CharacterWindow.GetCharacter.IsAdult]"
                                layoutpolicy_vertical = expanding

                                blockoverride "portrait_datamodel" {
                                    datamodel = "[CharacterWindow.GetRelationsOfType( GetRelation( 'ward' ) )]"
                                }

                                blockoverride "header_text"
                                {
                                    text = "WARDS_LABEL"
                                }

                                blockoverride "expand_button" {}

                                ### WARD FINDER
                                blockoverride "find_partner"
                                {

                                    ### FIND WARD FOR ME
                                    fixedgridbox = {
                                        name = "educate_ward"
                                        datamodel = "[GetNullCharacterDataModel( CharacterWindow.CalcUnusedRelationSlots( GetRelation( 'ward' ), '(int32)2' ) )]"
                                        visible = "[Character.IsPlayerInteractionShown('educate_child_interaction')]"

                                        flipdirection = yes
                                        addcolumn = 85
                                        addrow = 90
                                        maxverticalslots = 1

                                        item = {
                                            container = {
                                                portrait_head_small = {
                                                    blockoverride "portrait_button_template_onclick"
                                                    {
                                                        onclick = "[CharacterWindow.GetCharacter.OpenPlayerInteraction( 'educate_child_interaction' )]"

                                                        button_icon = {
                                                            parentanchor = center
                                                            alwaystransparent = yes
                                                            size = { 26 26 }
                                                            position = {-2 -4}
                                                            texture = "gfx/interface/icons/flat_icons/plus.dds"
                                                        }
                                                    }
                                                    blockoverride "portrait_button_template_tooltip"
                                                    {
                                                        tooltip = "[CharacterWindow.GetCharacter.GetPlayerInteractionTooltip( 'educate_child_interaction' )]"
                                                    }
                                                }
                                            }
                                        }
                                    }

                                    ### FIND WARD FOR COURTIER
                                    fixedgridbox = {
                                        name = "find_ward"
                                        datamodel = "[GetNullCharacterDataModel( CharacterWindow.CalcUnusedRelationSlots( GetRelation( 'ward' ), '(int32)2' ) )]"
                                        visible = "[Character.IsPlayerInteractionShown('offer_ward_interaction')]"

                                        flipdirection = yes
                                        addcolumn = 85
                                        addrow = 90
                                        maxverticalslots = 1

                                        item = {
                                            container = {
                                                portrait_head_small = {
                                                    blockoverride "portrait_button_template_onclick"
                                                    {
                                                        onclick = "[CharacterWindow.GetCharacter.OpenPlayerInteraction( 'offer_ward_interaction' )]"
                                                        enabled = "[CharacterWindow.GetCharacter.IsPlayerInteractionValid( 'offer_ward_interaction' )]"

                                                        button_icon = {
                                                            parentanchor = center
                                                            alwaystransparent = yes
                                                            size = { 20 20 }
                                                            position = {-2 -5}
                                                            texture = "gfx/interface/icons/flat_icons/plus.dds"
                                                        }
                                                    }
                                                    blockoverride "portrait_button_template_tooltip"
                                                    {
                                                        tooltip = "[CharacterWindow.GetCharacter.GetPlayerInteractionTooltip( 'offer_ward_interaction' )]"
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            vbox_character_row_item = {
                                name = "diarch"
                                datacontext = "[CharacterWindow.GetCharacter.GetDiarchy.GetDiarch]"
                                visible = "[CharacterWindow.GetCharacter.HasActiveDiarchy]"
                                layoutpolicy_vertical = expanding

                                blockoverride "minimum_width" {
                                    min_width = 120
                                }

                                blockoverride "gridbox" {
                                    portrait_head_small = {

                                        blockoverride "portrait_button"
                                        {
                                            using = tooltip_ne
                                        }
                                        blockoverride "glow_visible"
                                        {
                                            visible = no
                                        }
                                    }
                                }

                                blockoverride "header_text"
                                {
                                    text = "[CharacterWindow.GetCharacter.GetDiarchTitle]"
                                    max_width = 110
                                }

                                blockoverride "expand_button" {}
                            }

                            ### LOVERS 5 PORTRAITS
                            vbox_character_row_relationship_item = {
                                name = "lovers_no_diarchy"
                                visible = "[And( And( CharacterWindow.GetCharacter.IsAdult, Not( CharacterWindow.GetCharacter.HasActiveDiarchy ) ), Not( GreaterThan_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'elder' ) ) ), '(int32)0' ) ) )]"
                                layoutpolicy_vertical = expanding
                                layoutpolicy_horizontal = expanding

                                blockoverride "portrait_datamodel" {
                                    datamodel = "[CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) )]"
                                }

                                blockoverride "header_text"
                                {
                                    text = "LOVERS_LABEL"
                                }

                                blockoverride "remaining_items"
                                {
                                    visible = "[GreaterThan_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) ) ), '(int32)5' )]"
                                    text = "[GetNumberAbove_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) ) ), '(int32)5' )|=]"
                                }

                                blockoverride "expand_button_inside" {
                                    visible = "[GreaterThan_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) ) ), '(int32)5' )]"
                                    onclick = "[CharacterWindow.ToggleExpandedRelation( 'lovers' )]"
                                }

                                blockoverride "gridbox_slots"
                                {
                                    maxhorizontalslots = 5
                                }
                            }

                            ### LOVERS 4 PORTRAITS (FOR WHEN REGENT OR ELDER PORTRAIT IS VISIBLE)
                            vbox_character_row_relationship_item = {
                                name = "lovers_diarchy"
                                visible = "[Or( And( And( CharacterWindow.GetCharacter.IsAdult, CharacterWindow.GetCharacter.HasActiveDiarchy ), Not( GreaterThan_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'elder' ) ) ), '(int32)0' ) ) ), And( GreaterThan_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'elder' ) ) ), '(int32)0' ), And( CharacterWindow.GetCharacter.IsAdult, Not( CharacterWindow.GetCharacter.HasActiveDiarchy ) ) ) )]"
                                layoutpolicy_vertical = expanding
                                layoutpolicy_horizontal = expanding

                                blockoverride "portrait_datamodel" {
                                    datamodel = "[CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) )]"
                                }

                                blockoverride "header_text"
                                {
                                    text = "LOVERS_LABEL"
                                }

                                blockoverride "remaining_items"
                                {
                                    visible = "[GreaterThan_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) ) ), '(int32)4' )]"
                                    text = "[GetNumberAbove_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) ) ), '(int32)4' )|=]"
                                }

                                blockoverride "expand_button_inside" {
                                    visible = "[GreaterThan_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) ) ), '(int32)4' )]"
                                    onclick = "[CharacterWindow.ToggleExpandedRelation( 'lovers' )]"
                                }

                                blockoverride "gridbox_slots"
                                {
                                    maxhorizontalslots = 4
                                }
                            }

                            ### LOVERS 3 PORTRAITS (FOR WHEN REGENT AND ELDER PORTRAIT IS VISIBLE)
                            vbox_character_row_relationship_item = {
                                name = "lovers_diarchy_and_elder"
                                visible = "[And( And( CharacterWindow.GetCharacter.IsAdult, CharacterWindow.GetCharacter.HasActiveDiarchy ), GreaterThan_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'elder' ) ) ), '(int32)0' ) )]"
                                layoutpolicy_vertical = expanding
                                layoutpolicy_horizontal = expanding

                                blockoverride "portrait_datamodel" {
                                    datamodel = "[CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) )]"
                                }

                                blockoverride "header_text"
                                {
                                    text = "LOVERS_LABEL"
                                }

                                blockoverride "remaining_items"
                                {
                                    visible = "[GreaterThan_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) ) ), '(int32)3' )]"
                                    text = "[GetNumberAbove_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) ) ), '(int32)3' )|=]"
                                }

                                blockoverride "expand_button_inside" {
                                    visible = "[GreaterThan_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'lover' ) ) ), '(int32)3' )]"
                                    onclick = "[CharacterWindow.ToggleExpandedRelation( 'lovers' )]"
                                }

                                blockoverride "gridbox_slots"
                                {
                                    maxhorizontalslots = 3
                                }
                            }

                            vbox_character_row_item = {
                                name = "guardian"
                                visible = "[Not(CharacterWindow.GetCharacter.IsAdult)]"
                                layoutpolicy_vertical = expanding

                                blockoverride "portrait_datamodel" {
                                    datamodel = "[CharacterWindow.GetRelationsOfType( GetRelation( 'guardian' ) )]"
                                }

                                blockoverride "header_text"
                                {
                                    text = "GUARDIAN_LABEL"
                                }

                                blockoverride "expand_button" {}

                                ### GUARDIAN FINDER
                                blockoverride "find_partner"
                                {
                                    ### FIND GUARDIAN FOR ME
                                    fixedgridbox = {
                                        name = "educate_child"
                                        datamodel = "[GetNullCharacterDataModel( CharacterWindow.CalcUnusedRelationSlots( GetRelation( 'guardian' ), '(int32)1' ) )]"
                                        visible = "[Character.IsPlayerInteractionShown( 'educate_child_interaction' )]"

                                        flipdirection = yes
                                        addcolumn = 85
                                        addrow = 90
                                        maxverticalslots = 1

                                        item = {
                                            container = {
                                                portrait_head_small = {
                                                    blockoverride "portrait_button_template_onclick"
                                                    {
                                                        onclick = "[CharacterWindow.GetCharacter.OpenPlayerInteraction( 'educate_child_interaction' )]"

                                                        button_icon = {
                                                            parentanchor = center
                                                            alwaystransparent = yes
                                                            size = { 20 20 }
                                                            position = {-2 -5}
                                                            texture = "gfx/interface/icons/flat_icons/plus.dds"
                                                        }
                                                    }
                                                    blockoverride "portrait_button_template_tooltip"
                                                    {
                                                        tooltip = "[CharacterWindow.GetCharacter.GetPlayerInteractionTooltip( 'educate_child_interaction' )]"
                                                    }
                                                }
                                            }
                                        }
                                    }

                                    ### GUARDIAN FINDER FOR COURTIER
                                    fixedgridbox = {
                                        name = "find_guardian"
                                        datamodel = "[GetNullCharacterDataModel( CharacterWindow.CalcUnusedRelationSlots( GetRelation( 'guardian' ), '(int32)1' ) )]"
                                        visible = "[Character.IsPlayerInteractionShown( 'offer_guardianship_interaction' )]"

                                        flipdirection = yes
                                        addcolumn = 85
                                        addrow = 90
                                        maxverticalslots = 1

                                        item = {
                                            container = {
                                                portrait_head_small = {
                                                    blockoverride "portrait_button_template_onclick"
                                                    {
                                                        onclick = "[CharacterWindow.GetCharacter.OpenPlayerInteraction( 'offer_guardianship_interaction' )]"
                                                        enabled = "[CharacterWindow.GetCharacter.IsPlayerInteractionValid( 'offer_guardianship_interaction' )]"
                                                        button_icon = {
                                                            parentanchor = center
                                                            alwaystransparent = yes
                                                            size = { 26 26 }
                                                            position = {-2 -4}
                                                            texture = "gfx/interface/icons/flat_icons/plus.dds"
                                                        }
                                                    }
                                                    blockoverride "portrait_button_template_tooltip"
                                                    {
                                                        tooltip = "[CharacterWindow.GetCharacter.GetPlayerInteractionTooltip( 'offer_guardianship_interaction' )]"
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }

                            vbox_character_row_item = {
                                name = "crushes"
                                visible = "[Not(CharacterWindow.GetCharacter.IsAdult)]"
                                layoutpolicy_vertical = expanding

                                blockoverride "portrait_datamodel" {
                                    datamodel = "[CharacterWindow.GetRelationsOfType( GetRelation( 'crush' ) )]"
                                }

                                blockoverride "header_text"
                                {
                                    text = "CRUSHES_LABEL"
                                }

                                blockoverride "expand_button" {}
                            }

                            ### ELDER PORTRAIT
                            vbox_character_row_item = {
                                name = "elder"
                                visible = "[GreaterThan_int32( GetDataModelSize( CharacterWindow.GetRelationsOfType( GetRelation( 'elder' ) ) ), '(int32)0' )]"
                                layoutpolicy_vertical = expanding

                                blockoverride "minimum_width" {
                                    min_width = 110
                                }

                                blockoverride "portrait_datamodel" {
                                    datamodel = "[CharacterWindow.GetRelationsOfType( GetRelation( 'elder' ) )]"
                                }

                                blockoverride "header_text"
                                {
                                    text = "ELDER_LABEL"
                                    max_width = 75
                                }

                                blockoverride "expand_button" {}
                            }

                            expand = {}
                        }
                    }

{}
}
}

```