Jump to content
Cheri Song

[mod] Carnalitas - Unified Sex Mod Framework for CK3

Recommended Posts

Hello, I downloaded Carnalitas but the game does not detect it. Is perfect installed and in the launcher it is activated, but when opening the game it does not detect it, nor can I change the game rules because there are no new ones. I have reinstalled the game and it still does not work.

Link to post
5 minutes ago, EvvPillín said:

Hello, I downloaded Carnalitas but the game does not detect it. Is perfect installed and in the launcher it is activated, but when opening the game it does not detect it, nor can I change the game rules because there are no new ones. I have reinstalled the game and it still does not work.

Often the problem occurs because the game is overwriting the file Carnalitas.mod . You should make sure it contains - "path="mod/Carnalitas". If the entire path is written, replace it with this one. Then choose in the file properties - read-only.

Link to post
17 minutes ago, Yrgy said:

Often the problem occurs because the game is overwriting the file Carnalitas.mod . You should make sure it contains - "path="mod/Carnalitas". If the entire path is written, replace it with this one. Then choose in the file properties - read-only.

I don't know what path you are referring to. What file do you mean?

Link to post
1 hour ago, EvvPillín said:

I don't know what path you are referring to. What file do you mean?

Open with a txt editor in Carnalitas.mod,  change the path= line from an absolute path ( C:\users\USERNAME\... ) on your system to a relative path like path="mod/Carnalitas".

You need a file called - Carnalitas.mod. This is the mod file. You can find it where you put the mod. Look what you downloaded from the site, you will see it.

Link to post
11 hours ago, Yrgy said:

Open with a txt editor in Carnalitas.mod,  change the path= line from an absolute path ( C:\users\USERNAME\... ) on your system to a relative path like path="mod/Carnalitas".

You need a file called - Carnalitas.mod. This is the mod file. You can find it where you put the mod. Look what you downloaded from the site, you will see it.

It works! Thanks a lot.

Link to post
42 minutes ago, bozzard1327 said:

Hey I did everything you told and the mod is the only one in the playset but it doesn't work. What should I do?

If Carnalitas.mod file is not read-only in properties, fix it. In addition, this is a basic mod, for a varied game you should have a submodes.

Link to post
4 hours ago, Ozvelpoon said:

Someone uploaded Canalitas to the Steamworkshop... Good news is it is one of the most popular mods? If this was intentional feel free to ignore me.

 

 

Important Notice

 

Carnalitas is being stolen and reposted on the Steam Workshop here.

  • None of the Carnalitas contributors were informed. This is a single unaffiliated person acting on their own initiative.
  • Our work is stolen without credit. Although Carnalitas is distributed under the GPL 3.0 license, this distribution is against the terms of that license because it does not give credit to the original authors of the work.
  • It also breaks the terms of the GPL 3.0 license because it is distributed under the Steam Workshop license, when GPL 3.0 only extends the right to distribute intellectual property if the new distribution is also provided under the GPL 3.0 license.

Basically this is a really scummy thing to do, and you should not support the Steam Workshop upload in any way, shape or form. On a totally unrelated note, I will also point our that it's against Steam's Terms of Service to upload porn, and there is a convenient report button on the mod page which I am in no way encouraging any of you to use.

EDIT:

 

The mod appears to have been updated with credits for myself, Triskelia, and Ernie Collins.

 

To the mod submitter, if you're reading this: Please note that we are not the only people who have contributed to Carnalitas. A full list of contributors can be found at https://gitgud.io/cherisong/carnalitas/-/wikis/99.-Credits

 

Also, if you're reading this, please contact me directly so we can discuss this further.

Link to post
3 hours ago, Cheri Song said:

 

 

Important Notice

 

Carnalitas is being stolen and reposted on the Steam Workshop here.

  • None of the Carnalitas contributors were informed. This is a single unaffiliated person acting on their own initiative.
  • Our work is stolen without credit. Although Carnalitas is distributed under the GPL 3.0 license, this distribution is against the terms of that license because it does not give credit to the original authors of the work.
  • It also breaks the terms of the GPL 3.0 license because it is distributed under the Steam Workshop license, when GPL 3.0 only extends the right to distribute intellectual property if the new distribution is also provided under the GPL 3.0 license.

Basically this is a really scummy thing to do, and you should not support the Steam Workshop upload in any way, shape or form. On a totally unrelated note, I will also point our that it's against Steam's Terms of Service to upload porn, and there is a convenient report button on the mod page which I am in no way encouraging any of you to use.

EDIT:

 

The mod appears to have been updated with credits for myself, Triskelia, and Ernie Collins.

 

To the mod author, if you're reading this: Please note that we are not the only people who have contributed to Carnalitas. A full list of contributors can be found at https://gitgud.io/cherisong/carnalitas/-/wikis/99.-Credits

 

Also, if you're reading this, please contact me directly so we can discuss this further.

Just curious, whats the GPL 3.0 license

Link to post

UPDATE: The mod submitter (Xiao Wu) has contacted me and we have resolved the situation amicably. Their misunderstanding has been cleared up and mod is no longer available on Steam Workshop.

Link to post

I have a question which I will post here because I suspect it has to do with the had_sex_with_effect scripted effect as modified by Carnalitas.

I am using this in a mod I am working on.

 

The question is as follows:

 

I have modified the rape character_interaction from Tosca's mod so that  ai characters also use it. I am now working on an event chain which is triggered when my player character is imprisoned and raped by the ai jailor.

 

I want an event to trigger when my player character is imprisoned and raped by the ai jailor.

 

Spoiler

test_rape_prisoner_rape_interaction = {
    common_interaction = yes
    category = interaction_category_prison
    desc = test_prisoner_rape_interaction_desc
    cooldown_against_recipient = { days = 7 }
    use_diplomatic_range = yes
    ignores_pending_interaction_block = yes
    
    ai_targets = {
            ai_recipients = prisoners        # Available lists are in the "ai_targets" section of this file (trying to add an invalid list will trigger an error message with all available )
            chance = 1                                
    }
    ai_target_quick_trigger = {
        adult = yes
        prison = yes
    }
    ai_frequency = 12 #was 6

    
    auto_accept = yes

    is_shown = {
        scope:recipient = { is_imprisoned_by = scope:actor }
        scope:recipient = { is_adult = yes }
        scope:recipient = { sex_opposite_of = scope:actor }
        scope:actor = { is_adult = yes }

        
    }


    is_valid_showing_failures_only = {
        scope:recipient = { is_imprisoned_by = scope:actor }
    }

        on_accept = {
            scope:recipient = {
                custom_tooltip = RAPE_PRISONER
                custom_tooltip = IMPRISONMENT_RELATIVES_EFFECT_RAPE

                add_character_flag = {
                                    flag = is_naked
                                    days = 1
                }
                set_global_variable = {
                        name = victim_of
                        value = scope:actor
                        
                }
                


                hidden_effect = {
                    every_close_or_extended_family_member = {
                        limit = {
                            NOT = { scope:actor = this }
                        }
                        add_opinion = {
                            modifier = opinion_raped_family
                            target = scope:actor
                        }
                    }
                    add_opinion = {
                        modifier = opinion_raped_me
                        target = scope:actor
                    }
                }
                if = {
                    limit = {
                            is_ai = no
                    }        
                    trigger_event = {        ## added to get an event in case player is raped by the ai this fires for the player character
                                on_action = test_on_rape

                    }    
                                
                                    
                }
            }
            scope:actor = {
                stress_impact = {
                compassionate = medium_stress_impact_gain
                forgiving = medium_stress_impact_gain
                sadistic = medium_stress_impact_loss
                wrathful = minor_stress_impact_loss
                }
                hidden_effect = {
                        send_interface_message = {
                            type = event_generic_neutral
                            title = test_rape.1.t
                            right_icon = scope:recipient
                            custom_tooltip = RAPE_PRISONER
                        }
                }
                if = {
                    limit = {
                            is_ai = no
                    }
                    trigger_event = test_rape.001 #this fires for the player character
                }        
            }
        }    
        
        ai_potential = { always = yes }
        
        auto_accept = {
            custom_description = {
                text = auto_accept_interaction_ai    
                object = scope:recipient
                scope:recipient = {
#                    is_ai = yes
                }
            }
        }

        ai_will_do = {
                base = 100 #was 50
                
                modifier = {
                    factor = 0
                    scope:actor = {
                        OR = {
                            has_trait = infirm
                            has_trait = chaste
                            has_trait = compassionate
#                            has_trait = temperate
                        }
                    }
                }
                modifier = {
                    factor = 0.25
                    scope:actor = {
                                var:current_sex_drive >= 1
                                var:current_sex_drive < 2
                    }            
                }
                modifier = {
                    factor = 0.75
                    scope:actor = {
                                var:current_sex_drive >= 2
                                var:current_sex_drive < 3
                                has_trait = lustful
                    }            
                }
                modifier = {
                    factor = 0.55
                    scope:actor = {                    
                            var:current_sex_drive >= 2
                            var:current_sex_drive < 3
                            OR = {    
                                has_trait = rapist
                                has_trait = sadistic
                            }
                    }
                }
                modifier = {
                    factor = 1
                    scope:actor = {
                                var:current_sex_drive >= 3
                                var:current_sex_drive < 4
                                OR = {
                                    has_trait = beauty_good_1
                                    has_trait = beauty_good_2
                                    has_trait = beauty_good_1
                                }
                    }            
                }
                modifier = {
                    factor = 1.25
                    scope:actor = {
                                var:current_sex_drive >= 4
                                var:current_sex_drive < 5
                    }            
                }
                modifier = {
                    factor = 1.5
                    scope:actor = {
                                
                                var:current_sex_drive >= 4
                                var:current_sex_drive < 5
                                    
                    }        
                    scope:recipient = {
                        OR = {
                            has_trait = beauty_good_1
                            has_trait = beauty_good_2
                            has_trait = beauty_good_1
                        }
                    }                    
                }
                modifier = {
                    factor = 2
                    scope:actor = {                    
                                var:current_sex_drive >= 5
                                OR = {    
                                has_trait = rapist
                                has_trait = sadistic
                                has_trait = rakish
                            }
                    }
                    scope:recipient = {
                        OR = {
                            has_trait = beauty_good_3
                            has_trait = beauty_good_2
                            has_trait = beauty_good_1
                        }
                    }    
                }    
        }
}

 

As you can see the event is triggered by an on_action in the scope:recipient.

 

The event successfully triggers:

Spoiler

#event for raped player character
test_rape.015 = {
    type = character_event
    title = test_rape.015.t
    desc = {
            desc = test_rape.015.intro.desc
            first_valid = {
                        triggered_desc = {
                            trigger = {
                                scope:recipient = {
                                    is_female = yes
                                    has_character_flag = fucked
                                }    
                            }
                            desc = test_rape.015.vag.desc.female
                        }
                        triggered_desc = {
                            trigger = {
                                scope:recipient = {    
                                    is_female = yes
                                    has_character_flag = sodomized
                                }    
                            }
                            desc = test_rape.015.anal.desc.female
                        }
                        triggered_desc = {
                            trigger = {
                                scope:recipient = {    
                                    is_male = yes
                                    has_character_flag = sodomized
                                }    
                            }
                            desc = test_rape.015.anal.desc.male
                        }        
            }    
            desc = test_rape.015.end.desc
    }    
    theme = prison
    override_icon = {
        reference = "gfx/interface/event_window/type_intimidation.dds"
    }   
    override_background = {
        event_background = dungeon
    }
    left_portrait = {
        character = scope:recipient
        animation = disgust
        remove_default_outfit = yes
    }
    right_portrait = {
        character = scope:actor
        animation = schadenfreude
        remove_default_outfit = yes
    }
    trigger = {
        scope:recipient = {
                        NOT = { has_character_flag = recently_raped }
        }                
        test_sex_scene_is_noncon = yes
        test_sex_scene_is_dom_player = yes
        test_sex_scene_is_giving_player = yes
        test_sex_scene_matches_requested_flags_trigger = yes
    }
    immediate = {
        scope:recipient = {
                        if = {
                            limit = {
                                    is_ai = no
                            }
                            save_scope_as = test_sex_target
                        }
        }
        scope:actor = {
                    if = {
                            limit = {
                                    is_ai = yes
                            }
                            save_scope_as = test_sex_player
                    }

        }                
        random_list = {
                    80 = {
                        test_sex_scene_is_giving_player = yes
                        test_sex_scene_is_noncon = yes
                        test_sex_scene_is_painful = yes
                        test_sex_scene_is_vaginal = yes
                        scope:test_sex_player = {
                                    test_had_sex_with_effect = {
                                            CHARACTER_1 = scope:actor
                                            CHARACTER_2 = root
                                            C1_PREGNANCY_CHANCE = 0
                                            C2_PREGNANCY_CHANCE = pregnancy_chance
                                            STRESS_EFFECTS = yes
                                            DRAMA = no
                                    }
                        }
                    }
                    20 = {
                        test_sex_scene_is_giving_player = yes
                        test_sex_scene_is_noncon = yes
                        test_sex_scene_is_painful = yes
                        test_sex_scene_is_anal = yes
                        scope:test_sex_player = {
                                    test_had_sex_with_effect = {
                                            CHARACTER_1 = scope:actor
                                            CHARACTER_2 = scope:recipient
                                            C1_PREGNANCY_CHANCE = 0
                                            C2_PREGNANCY_CHANCE = pregnancy_chance
                                            STRESS_EFFECTS = yes
                                            DRAMA = no
                                    }
                        }
                    }
        }            
    }
                
    option = {
        name = {
            trigger = { is_female = yes }
            text = test_rape.015.a.female
        }
        name = {
            trigger = { is_female = no }
            text = test_rape.015.a.male
        }
        scope:recipient = {
                        add_character_modifier = {
                                            modifier = recently_raped
                                            years = 5
                        }
                        add_character_flag = {
                                            flag = recently_raped
                                            days = 150
                        }
                        if = {
                            limit = {
                                    scope:actor = {
                                                OR = {
                                                    has_trait = callous
                                                    has_trait = vengeful
                                                    has_trait = sadistic
                                                }    
                                    }
                            }        
                            increase_wounds_effect = { REASON = beaten }
                        }
            set_variable = { name = rape_count value = 1 }            
        }
        scope:actor = {
                add_trait = rapist                        
        }
    }
    after = {
        test_clear_sex_scene_flags_effect = yes
        test_clear_sex_impact_flags_effect = yes
    }    
}

 

The problem is that although the scope of the player character is correctly set as scope:recipient and that of the ai jailer as scope:actor, so that the portraits are correct,

the event also stubbornly sees the player as scope:sex_player and the ai character as scope:sex_target messing up the rest of the event. I have tried everything to change this

(the highlighted part is only one of the many things I have tried but nothing helps. Leaving out the whole <save_scope_as> part makes no difference.

I hope someone can give me an idea of where I am going wrong.

 

Link to post
21 minutes ago, joemann said:

I hope someone can give me an idea of where I am going wrong.

Possibly a daft question, but could you not just use the following if the order of who is scope:sex_player and and scope:sex_target matters?

 

test_had_sex_with_effect = {
	CHARACTER_1 = scope:recipient
	CHARACTER_2 = scope:actor
	C1_PREGNANCY_CHANCE = pregnancy_chance
	C2_PREGNANCY_CHANCE = 0
	STRESS_EFFECTS = yes
	DRAMA = no
}

As to shy its happening, I suspect it's a timing issue. AFACIT, basically the game appears to run all effects requiring custom tooltips before anything else, so it runs test_had_sex_with_effect and then applies your code about changing scopes afterwards. There is some documentation about this is the set_secret code buts it's pretty obscure. I have honestly had to rewrite about two-thirds of the events in my mod due to this.

Link to post
53 minutes ago, Dagulus said:

Possibly a daft question, but could you not just use the following if the order of who is scope:sex_player and and scope:sex_target matters?

 


test_had_sex_with_effect = {
	CHARACTER_1 = scope:recipient
	CHARACTER_2 = scope:actor
	C1_PREGNANCY_CHANCE = pregnancy_chance
	C2_PREGNANCY_CHANCE = 0
	STRESS_EFFECTS = yes
	DRAMA = no
}

As to shy its happening, I suspect it's a timing issue. AFACIT, basically the game appears to run all effects requiring custom tooltips before anything else, so it runs test_had_sex_with_effect and then applies your code about changing scopes afterwards. There is some documentation about this is the set_secret code buts it's pretty obscure. I have honestly had to rewrite about two-thirds of the events in my mod due to this.

The question is justified, however I added some effects to the test_had_sex_with_effect which make it important that the correct characters are respectively  Character_1 and Character_2. Among others it compares traits. If not it messes up the localization.

 

Does sex_with_effect require custom tool-tips? It contains 3 tool-tips

Spoiler

if = {
            limit = { this = $CHARACTER_1$ }
            custom_tooltip = test_had_sex_with_effect.first_person.tt
        }
        else_if = {
            limit = { this = $CHARACTER_2$ }
            custom_tooltip = test_had_sex_with_effect.other_person.tt
        }
        else = {
            custom_tooltip = test_had_sex_with_effect.third_person.tt

but what if I just delete them?

 

 

Link to post

Tried it, didn't work. The strange thing is that the character_ interaction does not create the scopes sex_player and sex_target, only actor and recipient. The scopes sex_player and sex_target in the event are created by sex_with_effect in the immediate block and only then applied  to the event. But sex_with_effect sets them as follows

Spoiler

test_had_sex_with_effect = {
    $CHARACTER_1$ = { save_scope_as = test_sex_player }
    $CHARACTER_2$ = { save_scope_as = test_sex_target }
  

So how is it possible that $CHARACTER_1$ (which is scope:actor) then becomes scope:sex_target and not scope_sex_player? What creates the switch? It can't be a timing issue since I have deleted the highlighted blocks.

Link to post

I just noticed that at the very end sex_with_effect also contains the following

 

Spoiler

# hook into new on_action
        $CHARACTER_1$ = {
            $CHARACTER_2$ = { save_scope_as = test_sex_player }
            trigger_event = {
                on_action = test_on_sex
            }
        }
        $CHARACTER_2$ = {
            $CHARACTER_1$ = { save_scope_as = test_sex_target }
            trigger_event = {
                on_action = test_on_sex
            }
        }

Suddenly Character_2 becomes the sex_player ( I don't really understand why ). This could be the origin of my problem.

Link to post
On 2/19/2021 at 1:02 AM, joemann said:

The problem is that although the scope of the player character is correctly set as scope:recipient and that of the ai jailer as scope:actor, so that the portraits are correct,

the event also stubbornly sees the player as scope:sex_player and the ai character as scope:sex_target messing up the rest of the event.

This is intended behavior. It's literally in the name of the scope: carn_sex_player is supposed to be the player character who is seeing the sex event appear.

 

In my opinion, you should modify your code to work with Carnalitas's output scopes, rather than modifying Carnalitas functionality to kludge together code that rests on a faulty assumption.

  

On 2/18/2021 at 8:12 PM, Bazgeron said:

Hello, I have a question. I installed the mod, the launcher sees it, but there are no changes inside the game. No in-game rules, no new traits. Tell me, what is the problem?

Check the last question in the FAQ. Also make sure that Carnalitas is actually in your mod playlist when you launch the game.

Link to post
On 2/20/2021 at 8:10 PM, JosephShin said:

Now someone uploaded it to Paradox Mods.

I'll just put a disclaimer on the mod page saying we aren't affiliated with them. I'm too tired to do this song and dance again.

Link to post

Hi, I'm enjoying this framework mod, and your great work is really appreciated..  Now, I am afraid my daughters would inherit my penis trait.  Please see the pic attached.  For some reasons of the role play I add the Player Character a small dick trait and the daughter inherit it.   The same applied to the other daughters. 

Mod version 1.3.6.

Would it be a bug or Is it related to CircMod installed or anything else?

 

Thanks for your help.

無題.jpg

Link to post

I would like to suggest introducing an additional 2 indicators: Love and Passion.
For example:
When a player is very similar to another character and they have a good relationship, then the NPC may have a love for the player. It further increases the ratio and decreases over time. With love, the NPC is more likely to agree with the player's wishes and give in to him in controversial issues.

When a player is very attractive, the NPC may have a passion-the desire to sleep with the player. The NPC can hate the player, but want to get his body in any other way.

With love, the NPC takes more effort to become the player's spouse, sends him offers, tries to woo. If he feels passion at the same time, he may start to go crazy and use violence, and then repent of it. The player can use the lover to gain influence over him and use him for their own purposes.

When an NPC experiences passion, it does not disdain any means to achieve its goal-violence, blackmail, deception, kidnapping, intimidation, but all for the sake of one thing, to get the player's body.

Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...