Jump to content

CK3-Quick Modding Qustions


Recommended Posts

7 hours ago, joemann said:

I found your file; remove_outfit_modifiers. No need to answer. I'm trying to combine them into a single outfit tag now.

I think all you would have to do is add the outfit tag into the modifers I made like this.

no_cloak = {
    usage = game
    no_cloak = {
        dna_modifiers = {
            accessory = {
                mode = add 
                
                gene = cloaks
                template = no_cloak
                range = { 0 1 }
            }
        }
        outfit_tags = { no_cloak no clothes }
        require_outfit_tags = yes
        weight = {
            base = 100
        }
    }
}

Link to comment
1 hour ago, bobbily said:

Does anyone know how to (temporarily) get rid of the bars over a prisoner's portrait?  They're kind of unsightly, and superfluous in a prison event.

The prison bars are set in the gui. This code is from the window_event file in the gui. But Gui modding is annoying. From what I can tell you have to overwrite whole files to make it work. So if any other mod you have modifies the window_event file you have to merge them yourself.

 

                                highlight_icon = {
                                    name = "prison_bars"
                                    visible = "[Character.IsImprisoned]"
                                    size = { 280 500 }
                                    parentanchor = bottom|left
                                    effectname = "NoHighlight"
                                    spriteType = corneredTiled
                                    texture_density = 1.5
                                    texture = "gfx/portraits/portrait_prison_body.dds"

                                    modify_texture = {
                                        name = "mask"
                                        texture =  "gfx/portraits/portrait_mask_event.dds"
                                        spriteType = Corneredstretched
                                        blend_mode = alphamultiply
                                    }
                                }

Link to comment

I have a question concerning character_interactions. A character_interaction has two scopes actor and recipient. Actor is the initiator of the interaction which targets recipient.

If the character_interaction permits the ai to initiate the interaction and the recipient is also a non player character, how do I call the player into the event.

 

Example: I have a rape_prisoner_interaction. The ai can also rape its prisoners. I would like to trigger an event when the ai has imprisoned the spouse or child of the player and has raped them.

 

I tried the following (in scope:recipient):

Spoiler

if = {
                    limit = {
                            is_female = yes
                            OR = {
                                is_consort_of = this
                                is_child_of = this
                            }    
                    }        
                    trigger_event = {        ## added to get an event in case player's consort or daughter is raped by the ai
                                on_action = test_on_rape_of_consort
                    }                                                                        
                }

I hoped that <this> would be the player scope, but apparently it isn't. actor and root are the ai and recipient is the consort, but who is the player?

Link to comment
10 hours ago, joemann said:

I have a question concerning character_interactions. A character_interaction has two scopes actor and recipient. Actor is the initiator of the interaction which targets recipient.

If the character_interaction permits the ai to initiate the interaction and the recipient is also a non player character, how do I call the player into the event.

 

Example: I have a rape_prisoner_interaction. The ai can also rape its prisoners. I would like to trigger an event when the ai has imprisoned the spouse or child of the player and has raped them.

 

I tried the following (in scope:recipient):

  Hide contents

if = {
                    limit = {
                            is_female = yes
                            OR = {
                                is_consort_of = this
                                is_child_of = this
                            }    
                    }        
                    trigger_event = {        ## added to get an event in case player's consort or daughter is raped by the ai
                                on_action = test_on_rape_of_consort
                    }                                                                        
                }

I hoped that <this> would be the player scope, but apparently it isn't. actor and root are the ai and recipient is the consort, but who is the player?

This calls the currently scoped entity. Root (I only mention it because its similar) calls the originally scoped entity of the event/on_action chain (sometimes when it moves from one chain to another is fuzzy to me). 

To get the player you would say any_player to pull a list of all players in the game, don't know if there is something singular but I think the game is designed this way to make sure things work in multiplayer too. You probably don't want any player though.

I would think a better way to code it would be the other way around. 

every parent = (
{ limit = is_ai = no }
trigger_event . . . .
}

And then you would repeat for every_consort

You would also want to put the trigger event command inside the list command, that way the on_action gets called in the players scope and not in the ai character's scope. You would also not need to nest this inside an if = command.

Link to comment
On 3/26/2021 at 8:53 AM, Mange2020 said:

This calls the currently scoped entity. Root (I only mention it because its similar) calls the originally scoped entity of the event/on_action chain (sometimes when it moves from one chain to another is fuzzy to me). 

To get the player you would say any_player to pull a list of all players in the game, don't know if there is something singular but I think the game is designed this way to make sure things work in multiplayer too. You probably don't want any player though.

I would think a better way to code it would be the other way around. 

every parent = (
{ limit = is_ai = no }
trigger_event . . . .
}

And then you would repeat for every_consort

You would also want to put the trigger event command inside the list command, that way the on_action gets called in the players scope and not in the ai character's scope. You would also not need to nest this inside an if = command.

Thanks, it worked. Appreciate the help.

Link to comment

I am trying to add a piety penalty  to my rape interaction by including a new scripted_effect in the Carnalitas rape_effects file.

 

Spoiler

test_rapist_piety_effect = {
                        scope:test_rape_rapist = {
                                    if = {
                                        limit = {
                                            faith = {
                                                OR = {
                                                    has_doctrine = test_doctrine_other_rape_accepted
                                                    has_doctrine = test_doctrine_same_rape_accepted
                                                }
                                            }
                                        }    
                                            if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value > faith_fully_accepted_level
                                                        }                
                                                    }
                                                }
                                                add_piety = { value = miniscule_piety_loss }                    
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                        target = scope:test_rape_victim.faith
                                                                        value >= faith_astray_level
                                                        }
                                                    }
                                                }
                                                add_piety = { value = minor_piety_gain }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                            target = scope:test_rape_victim.faith
                                                                            value >= faith_hostile_level
                                                        }
                                                    }        
                                                }
                                                add_piety = { value = medium_piety_gain }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                        target = scope:test_rape_victim.faith
                                                                        value >= faith_evil_level
                                                        }
                                                    }    
                                                }
                                                add_piety = { value = major_piety_gain }
                                            }
                                            else = {  }
                                    }
                                    else_if = {
                                        limit = {
                                            faith = {
                                                OR = {
                                                    has_doctrine = test_doctrine_other_rape_shunned
                                                    has_doctrine = test_doctrine_same_rape_shunned
                                                }                                                
                                            }
                                        }    
                                            if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value > faith_fully_accepted_level
                                                        }                
                                                    }
                                                }
                                                add_piety = { value = medium_piety_loss    }                
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                            target = scope:test_rape_victim.faith
                                                                            value >= faith_astray_level
                                                        }
                                                    }
                                                }
                                                add_piety = { value = minor_piety_loss }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                            target = scope:test_rape_victim.faith
                                                                            value >= faith_hostile_level
                                                        }
                                                    }
                                                }
                                                add_piety = { value = miniscule_piety_loss }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                        target = scope:test_rape_victim.faith
                                                                        value >= faith_evil_level
                                                        }
                                                    }    
                                                }
                                                add_piety = { value = minor_piety_gain }
                                            }
                                            else = { }
                                    }
                                    else_if = {
                                        limit = {
                                                faith = {
                                                        OR = {
                                                            has_doctrine = test_doctrine_other_rape_crime
                                                            has_doctrine = test_doctrine_same_rape_crime
                                                        }
                                                }        
                                        }        
                                            if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value > faith_fully_accepted_level
                                                        }                
                                                    }
                                                }
                                                add_piety = { value = major_piety_loss }                
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                            target = scope:test_rape_victim.faith
                                                                            value >= faith_astray_level
                                                        }
                                                    }
                                                }
                                                add_piety = { value = medium_piety_loss }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                            target = scope:test_rape_victim.faith
                                                                            value >= faith_hostile_level
                                                        }
                                                    }
                                                }
                                                add_piety = { value = minor_piety_loss }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                        target = scope:test_rape_victim.faith
                                                                        value >= faith_evil_level
                                                        }
                                                    }    
                                                }
                                                add_piety = { value = miniscule_piety_gain }
                                            }
                                            else = { }
                                    
                                    }
                        }
}                   

Although the error log doesn't come up with any errors, in game there is no effect. Anybody spot the problem?

Link to comment
22 hours ago, joemann said:

I am trying to add a piety penalty  to my rape interaction by including a new scripted_effect in the Carnalitas rape_effects file.

 

  Reveal hidden contents

test_rapist_piety_effect = {
                        scope:test_rape_rapist = {
                                    if = {
                                        limit = {
                                            faith = {
                                                OR = {
                                                    has_doctrine = test_doctrine_other_rape_accepted
                                                    has_doctrine = test_doctrine_same_rape_accepted
                                                }
                                            }
                                        }    
                                            if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value > faith_fully_accepted_level
                                                        }                
                                                    }
                                                }
                                                add_piety = { value = miniscule_piety_loss }                    
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                        target = scope:test_rape_victim.faith
                                                                        value >= faith_astray_level
                                                        }
                                                    }
                                                }
                                                add_piety = { value = minor_piety_gain }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                            target = scope:test_rape_victim.faith
                                                                            value >= faith_hostile_level
                                                        }
                                                    }        
                                                }
                                                add_piety = { value = medium_piety_gain }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                        target = scope:test_rape_victim.faith
                                                                        value >= faith_evil_level
                                                        }
                                                    }    
                                                }
                                                add_piety = { value = major_piety_gain }
                                            }
                                            else = {  }
                                    }
                                    else_if = {
                                        limit = {
                                            faith = {
                                                OR = {
                                                    has_doctrine = test_doctrine_other_rape_shunned
                                                    has_doctrine = test_doctrine_same_rape_shunned
                                                }                                                
                                            }
                                        }    
                                            if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value > faith_fully_accepted_level
                                                        }                
                                                    }
                                                }
                                                add_piety = { value = medium_piety_loss    }                
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                            target = scope:test_rape_victim.faith
                                                                            value >= faith_astray_level
                                                        }
                                                    }
                                                }
                                                add_piety = { value = minor_piety_loss }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                            target = scope:test_rape_victim.faith
                                                                            value >= faith_hostile_level
                                                        }
                                                    }
                                                }
                                                add_piety = { value = miniscule_piety_loss }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                        target = scope:test_rape_victim.faith
                                                                        value >= faith_evil_level
                                                        }
                                                    }    
                                                }
                                                add_piety = { value = minor_piety_gain }
                                            }
                                            else = { }
                                    }
                                    else_if = {
                                        limit = {
                                                faith = {
                                                        OR = {
                                                            has_doctrine = test_doctrine_other_rape_crime
                                                            has_doctrine = test_doctrine_same_rape_crime
                                                        }
                                                }        
                                        }        
                                            if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value > faith_fully_accepted_level
                                                        }                
                                                    }
                                                }
                                                add_piety = { value = major_piety_loss }                
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                            target = scope:test_rape_victim.faith
                                                                            value >= faith_astray_level
                                                        }
                                                    }
                                                }
                                                add_piety = { value = medium_piety_loss }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                            target = scope:test_rape_victim.faith
                                                                            value >= faith_hostile_level
                                                        }
                                                    }
                                                }
                                                add_piety = { value = minor_piety_loss }
                                            }
                                            else_if = {
                                                limit = {
                                                    faith = {
                                                        faith_hostility_level = {
                                                                        target = scope:test_rape_victim.faith
                                                                        value >= faith_evil_level
                                                        }
                                                    }    
                                                }
                                                add_piety = { value = miniscule_piety_gain }
                                            }
                                            else = { }
                                    
                                    }
                        }
}                   

Although the error log doesn't come up with any errors, in game there is no effect. Anybody spot the problem?

I changed quit a lot and got it working:

Spoiler

test_rapist_piety_effect = {
                        scope:test_rape_rapist = {
                                    if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 0
                                                    }
                                                    has_doctrine_parameter = same_rape_accepted                                                
                                            }
                                        }
                                        add_piety = { value = minor_piety_loss }
                                    }    
                                    else_if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 1
                                                    }
                                                    has_doctrine_parameter = same_rape_accepted                                                
                                            }
                                        }
                                        add_piety = { value = miniscule_piety_loss }
                                    }
                                    else_if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 0
                                                    }
                                                    has_doctrine_parameter = same_rape_shunned                                                
                                            }
                                        }
                                        add_piety = { value = minor_piety_loss }
                                    }
                                    else_if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 1
                                                    }
                                                    has_doctrine_parameter = same_rape_shunned                                            
                                            }
                                        }
                                        add_piety = { value = miniscule_piety_loss }
                                    }
                                    else_if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 0
                                                    }
                                                    has_doctrine_parameter = same_rape_illegal                                            
                                            }
                                        }
                                        add_piety = { value = medium_piety_loss }
                                    }    
                                    else_if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 1
                                                    }
                                                    has_doctrine_parameter = same_rape_illegal                                            
                                            }
                                        }
                                        add_piety = { value = minor_piety_loss }
                                    }
                                    else_if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 2
                                                    }
                                                    has_doctrine_parameter = other_rape_accepted                                                
                                            }
                                        }
                                        add_piety = { value = minor_piety_gain }
                                    }
                                    else_if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 3
                                                    }
                                                    has_doctrine_parameter = other_rape_accepted                                                
                                            }
                                        }
                                        add_piety = { value = medium_piety_gain }
                                    }
                                    else_if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 2
                                                    }
                                                    has_doctrine_parameter = other_rape_shunned                                                
                                            }
                                        }
                                        add_piety = { value = miniscule_piety_gain }
                                    }
                                    else_if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 3
                                                    }
                                                    has_doctrine_parameter = other_rape_shunned                                            
                                            }
                                        }
                                        add_piety = { value = minor_piety_gain }
                                    }
                                    else_if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 2
                                                    }
                                                    has_doctrine_parameter = other_rape_illegal                                            
                                            }
                                        }
                                        add_piety = { value = miniscule_piety_loss }
                                    }
                                    else_if = {
                                        limit = {
                                            faith = {
                                                    faith_hostility_level = {
                                                                    target = scope:test_rape_victim.faith
                                                                    value != 3
                                                    }
                                                    has_doctrine_parameter = other_rape_illegal                                            
                                            }
                                        }
                                        add_piety = { value = minor_piety_loss }
                                    }
                                    else = { }        # no impact on piety
                                            
                        }
}                   

There is one remaining problem:  the effect  <add_piety = { value = minor_piety_loss }>  systematically produces the opposite effect in game. piety_loss is added to my overall piety level  and piety_gain is deducted from my overall piety level. Does anybody have the explanation for this?

Link to comment

Anyone know if this is possible. I want to make some of the health effects cover the entire body. Like Scaley, syphilis. Like if someone is scaley I want them scaley all over when naked and not just the head. One file seems to use a [body parts] tag to add the diffuse layer for the diseases. I just dont know what the nomenclature would be. Or which file is the best to edit

Link to comment
17 minutes ago, Lux Lux said:

Anyone know if this is possible. I want to make some of the health effects cover the entire body. Like Scaley, syphilis. Like if someone is scaley I want them scaley all over when naked and not just the head. One file seems to use a [body parts] tag to add the diffuse layer for the diseases. I just dont know what the nomenclature would be. Or which file is the best to edit

There's no file you can edit to just make that happen. Those are diffuses that are layered on the head specifically. They are mapped to the head vertices specifically. In order to do that you would need to make an entirely new diffuse mapped to the body (the game totally separates the head from the body). If you make the texture you would need to just add it to the scaly gene. Out of curiosity why the syphilitic gene? I always mod that out, to me its just like ahistorical nightmare fuel.

Link to comment
35 minutes ago, Mange2020 said:

There's no file you can edit to just make that happen. Those are diffuses that are layered on the head specifically. They are mapped to the head vertices specifically. In order to do that you would need to make an entirely new diffuse mapped to the body (the game totally separates the head from the body). If you make the texture you would need to just add it to the scaly gene. Out of curiosity why the syphilitic gene? I always mod that out, to me its just like ahistorical nightmare fuel.

thanks, it looked like more of a sprite. like for bubonic plague. i guess since there wasnt a mesh I just assumed it was an overlay you could apply to different parts, I really just want people too look consistent. It bugs me everything stops at the neck. So I would have go into the body file and hand apply graphically rather than coding. 

Link to comment

That's fair, the lack of consistency annoys me too generally, i just can't handle that one look personally. The decal is located here in this file game\gfx\models\portraits\decals\visual_traits, the gene that scripts the decal into the game is here game\common\genes (visual traits) and the modifier that causes a character to have it is here game\gfx\portraits\trait_portrait_modifiers you might actually just be able to change the gene file to where it says body_part = head to body_part = body but I'm not sure

Link to comment

Along the same line I have a question. I would like slaves to have a brand-mark ( a simplified version of the coa would be nice) but for starters any brand would do. How do I apply this.

Can I just "draw" something on the decal  giving it a different name?

Link to comment
3 hours ago, joemann said:

Along the same line I have a question. I would like slaves to have a brand-mark ( a simplified version of the coa would be nice) but for starters any brand would do. How do I apply this.

Can I just "draw" something on the decal  giving it a different name?

I would think so? I've honestly had no luck with decals and diffuses. I just vaguely know about them because of my work on the models. But I tried to change the textures and just totally failed. Stuff like tatoos would be awesome if we could do it.

Link to comment
5 minutes ago, Hernite said:

Probably a silly question but, how do I change the mod load order? Do I need a mod to implement this or am I overlooking something?

When your hover your mouse on a mod in the launcher you should see the mod number change to arrows is just a matter just dragging it.

Link to comment
  • 2 weeks later...
if = {
			limit = {
				current_date <= 1000.1.1 # No need to check this in later starts
				NOT = { has_global_variable = portuguese_culture_creation }
				current_date >= 900.1.1
			}

What do I need to add to these conditions to let Portuguese culture split from Galician only if there is an independent Portugal?

Link to comment
On 4/12/2021 at 4:45 PM, AlexWyrmin said:

if = {
			limit = {
				current_date <= 1000.1.1 # No need to check this in later starts
				NOT = { has_global_variable = portuguese_culture_creation }
				current_date >= 900.1.1
			}

What do I need to add to these conditions to let Portuguese culture split from Galician only if there is an independent Portugal?

I would try exists = k_portugal not sure if that would work though

Link to comment
On 3/30/2021 at 4:15 AM, Lux Lux said:

Anyone know if this is possible. I want to make some of the health effects cover the entire body. Like Scaley, syphilis. Like if someone is scaley I want them scaley all over when naked and not just the head. One file seems to use a [body parts] tag to add the diffuse layer for the diseases. I just dont know what the nomenclature would be. Or which file is the best to edit

I managed to get the wounded effect applied to the whole body by creating the following file in genes/special_visual_traits:

 

Spoiler

special_genes = {

  morph_genes = {
                            gene_whipped = {
                                        whipped = {
                                                        index = 0
                                                        male = {
                                                            setting = { attribute = "bs_wounded_3"  value = { min = 1.0 max = 1.0 }    }
                                                            decal = {                                            
                                                                body_part = torso
                                                                textures = {
                                                                    diffuse = "gfx/models/portraits/decals/visual_traits/decal_wounded_3_diffuse.dds"
                                                                    normal = "gfx/models/portraits/decals/visual_traits/decal_wounded_3_normal.dds"
                                                                    properties = "gfx/models/portraits/decals/visual_traits/decal_wounded_3_properties.dds"
                                                                }
                                                                blend_modes = {                 #overlay/replace/hard_light/multiply
                                                                    diffuse = hard_light
                                                                    normal = overlay
                                                                    properties = overlay
                                                                }
                                                                # age = {
                                                                #     mode = multiply
                                                                #     curve = {
                                                                #         { 0.0 0.0 }
                                                                #         { 0.38 0.0 }
                                                                #         { 0.7 0.8 }
                                                                #     }
                                                                # }
                                                                priority = 10
                                                            }
                                                        }
                                                        female = male
                                                        boy = male
                                                        girl = male
                                                        
                                        }
                            }
                }

}

Basically you create a new special_gene (in my case <whipped> and apply the decal you want to the torso rather than to the head.

If the decal exists in the vanilla game it is easy, new effects need new decals and I have no idea how to create these.

I tried using existing coat_of_arms decals to simulate tattoos or brands but apparently they are not in the correct format ( I think it has to do with the number of mimaps ). I couldn't solve it.

Link to comment

Does anyone have any modeling tutorials? I'm stumbling through trying to make edits to the existing models. I figured out how to edit alpha transparency so I tried to make a few sheer dresses and I noticed that some clothing render the body beneath and some don't. Is this a flag somewhere that can be changed?

You can also punch a hole through clothes (or selectively remove elements) by editing the alpha but it doesn't always look great.

Link to comment
On 4/16/2021 at 9:06 AM, disposabletemp said:

Does anyone have any modeling tutorials? I'm stumbling through trying to make edits to the existing models. I figured out how to edit alpha transparency so I tried to make a few sheer dresses and I noticed that some clothing render the body beneath and some don't. Is this a flag somewhere that can be changed?

You can also punch a hole through clothes (or selectively remove elements) by editing the alpha but it doesn't always look great.

The models are rendered under all clothing, though its usually a slightly different model than the one you see when the character is naked. All female characters are given different gene template that has no breast shape added and has perkier breasts to give the effect of being held up by clothing.

All characters have their body shape modified as well, for most clothing its changed to average_clothed which gives the character a skeletal skinny appearance. This is so the models are less likely to poke through the clothing, because the hands are usually visible they are unaffected.

For any clothing that shows significant amounts of skin (like the female indian clothing) the body is changed to body_shape_average. Unlike average_clothed average is actually a shape that a character can have naturally its just that the game removes any more unique body shapes (triangle, apple, rectangle, hourglass, pear) again to prevent clipping through the clothing.

It sounds like you are working more with making clothing transparent through decals, diffuses and textures than the models themselves so the body looking like it is not there was probably the result of the specific diffuse for that clothing item. I have short tutorial on animating buried on this forum somewhere that is pretty out of date (I've since learned more about the models) but the software is the same for animating and modeling. Its mostly that I thought there was a glitch with the importer for blender 2.92 but its fine as long as you don't import the height animation (the height animation requires an additional step that its not worth getting into). So anyway.

https://www.blender.org/

https://github.com/ross-g/io_pdx_mesh

You can import the body models into there directly and also import the clothing models and they will appear on top of the body. Heads and bodies are separate, you can combine them in the program but you need to separate them before importing back. I've played around with removing vertexes to remove parts of clothing, with some success, just haven't had time to finish it. It basically works as long as you are strategic in how you remove the parts of the clothing models. 

Link to comment
  • 3 weeks later...

I made an event which does nor raise any issues in the error log but never fires. Can't figure out why not.

 

It is fired by an on action:

Spoiler


# Fires when a character joins a court. Not fired for just generated characters
##root is character
##scope:new_employer is their new employer
on_join_court = {
            on_actions = {
                        test_on_join_court
            }
}
test_on_join_court = {
                    events = {
                        test_arousal.0003        
    }
}
# Called when a pool character has appeared at the court. See guest_management in common/courtier_guest_management.
# root, scope:guest: the guest
# host: their host (owner of the court)
# characters: list of all characters moving together. Includes the root character.
on_guest_arrived_from_pool = {
                        on_actions = {
                                test_on_guest_arrived_from_pool
                        }
}
test_on_guest_arrived_from_pool = {
                                events = {
                                    test_arousal.0003        
                                }
}

The event itself:

Spoiler

#"sexy" guest arrives at court triggered by on_action on_guest_arrived_from_pool

test_arousal.0003 = {

    type = character_event
    title = test_arousal.0003.t
    theme = lust
    background = throne_room
    desc = test_arousal.0003.desc
    left_portrait =  {
        character = scope:test_sex_player
        remove_default_outfit = no    
        animation = personality_bold
            
    }
    right_portrait =  {
        character = scope:test_sex_target
        remove_default_outfit = no
        animation = flirtation
    }
    trigger = {
        scope:test_sex_player = {
                            var:sexual_desire >= 50
                            is_attracted_to_gender_of = scope:test_sex_target
        }
    }
    immediate = {
#                scope:new_employer = { save_scope_as = test_sex_player }
                scope:host = { save_scope_as = test_sex_player }
                root = { save_scope_as = test_sex_target }
#                characters = { save_scope_as = test_sex_target }        ##is it possible to give several characters the same scope name?
                scope:test_sex_target = {
                            add_libido_start_variables  = yes
                            update_female_libido = yes
                            update_male_libido = yes
                }            
                scope:test_sex_player = {
                    if = {
                        limit = {        
                                is_attracted_to_gender_of = scope:test_sex_target
                                is_at_same_location = scope:test_sex_target
                                is_adult = yes
                                var:current_sex_drive >= 25
                                var:current_sex_drive < 35
                                NOT = {
                                    has_trait = infirm
                                    has_trait = ill
                                    has_trait = eunuch    
                                }            
                                scope:test_sex_target = {
                                                is_stimulus_value_high = yes
                                }        
                        }
                        change_variable = { name = sexual_desire add = 20 }
                    }
                    else_if = {
                            limit = {
                                    is_attracted_to_gender_of = scope:test_sex_target
                                    is_at_same_location = scope:test_sex_target
                                    is_adult = yes
                                    var:current_sex_drive >= 35
                                    NOT = {
                                        has_trait = infirm
                                        has_trait = ill
                                        has_trait = eunuch    
                                    }                
                                    scope:test_sex_target = {
                                                    is_stimulus_value_medium = yes
                                    }
                            }    
                            change_variable = { name = sexual_desire add = 40 }
                    }
                }
    }            
    option = {        # do nothing
            name = test_arousal.0003.A
    }        
    option = {        # romance
            name = test_arousal.0003.B            
    }
    option = {        # seduce
            name = test_arousal.0003.C
    }
}   

Maybe a fresh eye will see the issue. Thanks

Link to comment
  • 3 weeks later...
On 4/19/2021 at 6:05 PM, Mange2020 said:

The models are rendered under all clothing, though its usually a slightly different model than the one you see when the character is naked. All female characters are given different gene template that has no breast shape added and has perkier breasts to give the effect of being held up by clothing.

All characters have their body shape modified as well, for most clothing its changed to average_clothed which gives the character a skeletal skinny appearance. This is so the models are less likely to poke through the clothing, because the hands are usually visible they are unaffected.

For any clothing that shows significant amounts of skin (like the female indian clothing) the body is changed to body_shape_average. Unlike average_clothed average is actually a shape that a character can have naturally its just that the game removes any more unique body shapes (triangle, apple, rectangle, hourglass, pear) again to prevent clipping through the clothing.

It sounds like you are working more with making clothing transparent through decals, diffuses and textures than the models themselves so the body looking like it is not there was probably the result of the specific diffuse for that clothing item. I have short tutorial on animating buried on this forum somewhere that is pretty out of date (I've since learned more about the models) but the software is the same for animating and modeling. Its mostly that I thought there was a glitch with the importer for blender 2.92 but its fine as long as you don't import the height animation (the height animation requires an additional step that its not worth getting into). So anyway.

https://www.blender.org/

https://github.com/ross-g/io_pdx_mesh

You can import the body models into there directly and also import the clothing models and they will appear on top of the body. Heads and bodies are separate, you can combine them in the program but you need to separate them before importing back. I've played around with removing vertexes to remove parts of clothing, with some success, just haven't had time to finish it. It basically works as long as you are strategic in how you remove the parts of the clothing models. 

 

Thanks for the reply. I'm probably not willing to put in the time necessary to learn 3D modelling but I do enjoy tinkering with it.

 

I'm having some issues with the pdx importer/exporter in blender though. I can import models and view them just fine but when I export them (even without making any changes) the clothing is invisible in the game (like it didn't load properly).  Are there specific settings I need to use for the import/export?

Link to comment
On 5/22/2021 at 1:23 PM, disposabletemp said:

 

Thanks for the reply. I'm probably not willing to put in the time necessary to learn 3D modelling but I do enjoy tinkering with it.

 

I'm having some issues with the pdx importer/exporter in blender though. I can import models and view them just fine but when I export them (even without making any changes) the clothing is invisible in the game (like it didn't load properly).  Are there specific settings I need to use for the import/export?

I don't this there are specific settings. But unfortunately there are a few easy mistakes you could have made that I've ran across. Looking at the error log will help. 

Probably the most likely issue isn't an error at all on your part. Sometimes importing and exporting the files changes the vertex count slightly. It doesn't actually change the way the model looks but it does make the model incompatible with its blendshapes, which causes it to not load correctly. Even more frustratingly it happens with some but not all models. To make it work you have to import and export not only the base model and all the blendshapes of the model. (This is basically why my sex animations mod is so big).

Link to comment

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
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use