Jump to content

Recommended Posts

Posted
3 hours ago, hamimobe said:

Maybe you could try triggered_opinion? Make two of them, one for males, the other for females, and apply attraction_opinion differently in each of them.

Apparently triggered_opinion doesn't work. Or specifically it only works in tenets. Pretty weird. Hopefully it'll be fixed soon.

Posted
7 hours ago, kalleklovn said:

And I don't want to create two versions; making inheritance work would be a pain.

It will not be that hard, but worse than one trait. But in case triggered_opinion doesn't work, it's your only choice.

Posted

What would it take to add grey skin into the game and make it available via a morph? Same question for: demonic horns (evil), angelic halo (good)?

 

Edit: I figured out the skin, now would like to know how to apply black lipstick at least.

Posted

I'm having a problem getting a scripted_effect full of variables working. It worked in CK2 but they have changed so much in the language that I'm going crazy. I'm not a natural but with lot's of practice I became reasonably comfortable with modding CK2. I have the feeling I have to start all over again, with a half empty wiki, no validator and no charinfo. The latter I really don't understand. It was incredibly useful for checking if flags and variables were correctly added, if your events did not work or appeared not to work. Now you are completely in the dark. Sorry for the rant, but I had to get it of my chest.

 

My scripted_effect is as follows ( it is used in an event that is triggered by an on_action on_game_start_after_lobby )

 

Spoiler

test_libido.001 = {

    hidden = yes
    
    trigger = {
            NOT = { has_variable = basic_sex_drive }
    }        
    immediate = {
                root = { save_scope_as = receiver }
                add_libido_start_variables = yes
    }    
}   

The scripted_effect is as follows

Spoiler

add_libido_start_variables  = {
 
    # Mother's side first
    
    scope:receiver = {
            if = {
                limit = {
                    mother = {
                                has_variable = basic_sex_drive
                        }                                                 # If the mother has a variable, then we'll use it.
                }
                scope:receiver = {
                        set_variable = { name = basic_sex_drive value = prev }
                }
                
            }
            else = {
                scope:receiver = {
                    set_variable = { name = basic_sex_drive value = 3 } # "normal" basic_sex_drive
                }
            }
            # Father's side next
            if = {
                limit = {
                    real_father = { has_variable = basic_sex_drive }    
                }
                scope:receiver = {
                        set_variable = { name = basic_sex_drive value = prev }
                    }
                
            }
            else = {
                scope:receiver = {
                    set_variable = { name = basic_sex_drive value = 3 }
                }
            }
            # Calculate character's sex-drive
            change_variable = {
                            name = basic_sex_drive
                            divide = 2
            }
            if = {
                limit = {
                        scope:receiver = {
                                    is_female = yes
                        }            
                }
                random_list = {
                    19 = { change_variable = { name = basic_sex_drive subtract = 2 } }
                    11 = { change_variable = { name = basic_sex_drive subtract = 1 } }
                    55 = {  } # No change
                    6 = { change_variable = { name = basic_sex_drive add = 1 } }
                    9 = { change_variable = { name = basic_sex_drive add = 2 } }
                }
            }
            if = {
                limit = {
                        scope:receiver = {
                                    is_female = no
                        }            
                }
                random_list = {
                    4 = { change_variable = { name = basic_sex_drive subtract = 2 } }
                    10 = { change_variable = { name = basic_sex_drive subtract = 1 } }
                    79 = {  } # No change
                    10 = { change_variable = { name = basic_sex_drive add = 1 } }
                    12 = { change_variable = { name = basic_sex_drive add = 2 } }
                }
            }        
            # We ensure the sex-drive didn't fall to less than 1 and more than 5
            clamp_variable = {
                        name = basic_sex_drive
                        max = 5
                        min = 1
            }
    }    
}

error_log  throws up the following errors

Spoiler

17:01:46][jomini_script_system.cpp:169]: Script system error!
  Error: mother trigger [ Failed context switch ]
  Script location: file:  file: events/test_libido_initialization_events.txt line: 12; add_libido_start_variables line: 5
[17:01:46][jomini_script_system.cpp:169]: Script system error!
  Error: real_father trigger [ Failed context switch ]
  Script location: file:  file: events/test_libido_initialization_events.txt line: 12; add_libido_start_variables line: 20

[17:01:47][jomini_script_system.cpp:169]: Script system error!
  Error: clamp_variable effect [ Variable not of the 'value' scope type. Type: Character CorrA_du de Athen of  (Internal ID: 18527 - Historical ID 235190) [18527] ]
  Script location: file:  file: events/test_libido_initialization_events.txt line: 12; add_libido_start_variables line: 63

I would much appreciate somebody pointing me in the right direction.

Posted
1 hour ago, joemann said:

I have the feeling I have to start all over again, with a half empty wiki, no validator and no charinfo. The latter I really don't understand. It was incredibly useful for checking if flags and variables were correctly added, if your events did not work or appeared not to work. Now you are completely in the dark. Sorry for the rant, but I had to get it of my chest.

Wrong, if you launch the game in debug mode you can see hidden flags and variables (if you hover over the "AI values" text). You can also see hidden variables in events and interactions.

 

I think the problem is here:

Quote

set_variable = { name = basic_sex_drive value = prev }

I'm not sure what you're trying to achieve here, prev is just the previous scope, it's not a number. You should try something like: 

value = scope:mother.var:basic_sex_drive

 

 

Posted

You're a champ! You solved two of my problems. I'm really glad to have my charinfo tool back. I always play in debug mode but never noticed the "AI values" .

You also fixed my scripted_effect. I found the variable under AI values. It still needs some fixing because I'm not convinced by the results it yields but that is just tweaking.

The result I'm looking for is to equip all characters with a sex_drive value based on the average of that of their parents, corrected on a random basis, based on "real" statistics ( at this stage it doesn't add up the parents' values before dividing by 2 so I end up too low).

 

I want to translate  the sex_drive value which is a constant, into a current_sex_drive value  which will vary over time based on the characters stats such as stress, health etc. I can then use this variable to  drive the characters' behaviors in events, etc. In a sense it replaces traits such as lustful and chaste by something more elaborate.

 

Thanks for your help.

Posted

The error log still keeps having problems with the mother and real_father. A question, if you have a basic scope such as root, mother and real_father do you still need to precede them with <scope:> or is that only the case for saved scopes?

Posted
26 minutes ago, joemann said:

The error log still keeps having problems with the mother and real_father. A question, if you have a basic scope such as root, mother and real_father do you still need to precede them with <scope:> or is that only the case for saved scopes?

It works but the log still reports it? Is the error the same?

 

Probably scope is not needed in this case. I believe scope: is necessary only for saved scopes, but not for natural/hardcoded scopes like mother/father/faith.

Posted
Spoiler

add_libido_start_variables  = {
 
    # Mother's side first
    
    scope:receiver = {
            if = {
                limit = {
                    mother = {
                                has_variable = basic_sex_drive
                        }                                                 # If the mother has a variable, then we'll use it.
                }
                scope:receiver = {
                        set_variable = { name = basic_sex_drive_1 value = scope:receiver.mother.var:basic_sex_drive }
                }
                
            }
            else = {
                scope:receiver = {
                    set_variable = { name = basic_sex_drive_1 value = 3 } # "normal" basic_sex_drive
                }
            }
            # Father's side next
            if = {
                limit = {
                    real_father = { has_variable = basic_sex_drive }    
                }
                scope:receiver = {
                        set_variable = { name = basic_sex_drive_2 value = scope:receiver.real_father.var:basic_sex_drive }
                    }
                
            }
            else = {
                scope:receiver = {
                    set_variable = { name = basic_sex_drive_2 value = 3 }
                }
            }
            # Calculate character's sex-drive
            set_variable = { name = basic_sex_drive value = 0 }
            change_variable = {
                            name = basic_sex_drive
                            add = var:basic_sex_drive_1
            }                
            change_variable = {
                            name = basic_sex_drive
                            add = var:basic_sex_drive_2
            }
            change_variable = {
                            name = basic_sex_drive
                            divide = 2
            }
            remove_variable = basic_sex_drive_1
            remove_variable = basic_sex_drive_2
            if = {
                limit = {
                        scope:receiver = {
                                    is_female = yes
                        }            
                }
                random_list = {
                    19 = { change_variable = { name = basic_sex_drive subtract = 2 } }
                    11 = { change_variable = { name = basic_sex_drive subtract = 1 } }
                    55 = {  } # No change
                    6 = { change_variable = { name = basic_sex_drive add = 1 } }
                    9 = { change_variable = { name = basic_sex_drive add = 2 } }
                }
            }
            if = {
                limit = {
                        scope:receiver = {
                                    is_female = no
                        }            
                }
                random_list = {
                    4 = { change_variable = { name = basic_sex_drive subtract = 2 } }
                    10 = { change_variable = { name = basic_sex_drive subtract = 1 } }
                    79 = {  } # No change
                    10 = { change_variable = { name = basic_sex_drive add = 1 } }
                    12 = { change_variable = { name = basic_sex_drive add = 2 } }
                }
            }        
            # We ensure the sex-drive didn't fall to less than 1 and more than 5
            
    }    
}

I ended up with this. The error_log goes crazy with the same error notification for every character that gets the variable on startup, but the basic_sex_drive values the in_game characters end up with are satisfactory. Apparently the script does what it should be doing. I would like to understand what the error is so if anybody sees it I would be grateful.

This is these are the error messages:

Spoiler

[21:20:28][jomini_script_system.cpp:169]: Script system error!
  Error: mother trigger [ Failed context switch ]
  Script location: file:  file: events/test_libido_initialization_events.txt line: 12; add_libido_start_variables line: 5
[21:20:28][jomini_script_system.cpp:169]: Script system error!
  Error: real_father trigger [ Failed context switch ]
  Script location: file:  file: events/test_libido_initialization_events.txt line: 12; add_libido_start_variables line: 20

[21:20:28][jomini_script_system.cpp:169]: Script system error!
  Error: has_variable trigger [ This scope doesn't support variables. Scope: Character Landolfo Caetani of  (Internal ID: 16126 - Historical ID 167501) [16126] ]
  Script location: file:  file: events/test_libido_initialization_events.txt line: 12; add_libido_start_variables line: 20

 

Posted

First of all, even though it's not an error, you don't need to write scope:receiver if you're already in that scope. if and limit aren't new scopes.

 

As for those mistakes, it's probably because some people don't have parents. You'll have to check for that.

 

 

Posted

Oh that makes sense. I believe there is no <real_father_even_if_dead> scope anymore, though you could create one. But in the case of a game start even dead parents usually don't exist

I suppose.

 

The problem with these errors is that the error_log gets longer and longer.

 

One more question. I want the variables to be in a range of 1 to 5. How do I do that?

I was thinking of

Spoiler

if = {

        scope:receiver: = {

                                  has_variable = { name = basic_sex_drive value > 5 }

          }

  }

         set_variable = { name = basic_sex_drive value = 5 }

But that is old school CK2 and no longer works.

 

Instead there is a clamp_variable = { name = basic_sex_drive max = 5 min = 1 }. It looks convincing but I have no idea how it works. If it rounds up to one and down to 5 then that would be fine, but is that what it does?

Posted
29 minutes ago, joemann said:

Oh that makes sense. I believe there is no <real_father_even_if_dead> scope anymore, though you could create one. But in the case of a game start even dead parents usually don't exist

I suppose.

 

The problem with these errors is that the error_log gets longer and longer.

 

One more question. I want the variables to be in a range of 1 to 5. How do I do that?

I was thinking of

  Reveal hidden contents

if = {

        scope:receiver: = {

                                  has_variable = { name = basic_sex_drive value > 5 }

          }

  }

         set_variable = { name = basic_sex_drive value = 5 }

But that is old school CK2 and no longer works.

 

Instead there is a clamp_variable = { name = basic_sex_drive max = 5 min = 1 }. It looks convincing but I have no idea how it works. If it rounds up to one and down to 5 then that would be fine, but is that what it does?

Well, you found it, try it out. According to ck3 wiki it should do what you want. If it doesn't work you can always check the value yourself and change it.

Posted

It worked and you were right about the errors being linked to the characters not having parents. When I resumed the game the errors had disappeared.

 

I have another issue about what replaces the Men Time To Happen trigger. According to the wiki you can use random. However, I can't get it to work correctly.

 

here is my event:

 

Spoiler

test_cycle.013 = {

    hidden = yes

 

    trigger = {
            is_female = yes
            has_character_flag = test_for_menopause
            age = 40
    
    }
    immediate = {
            #    increase the chances if factor > 1
            #    decrease the chances if factor < 1
            #    annihilate the chances if factor = 0
            
            random = {
                    chance = 20
                    modifier = {
                            factor = 1  # 20%
                            age == 40
                            OR = {
                                any_child = { count = 2 }    # these factors decrease the chance of early menopause
                                has_trait = temperate
                            }                
                    }
                    modifier = {
                            factor = 1.75 # 35%
                            age == 40
                            OR = {
                                any_child = { count == 0 } # these factors increase the chance of early menopause
                                has_trait = gluttonous
                                current_weight = 50 # obese
                            }
                                            
                    }            
                    modifier = {
                            factor = 1.5    # 30%
                            age == 41
                            OR = {
                                any_child = { count = 2 }
                                has_trait = temperate    
                            }                
                    }
                    modifier = {
                            factor = 1.8 # 36%
                            age == 41
                            OR = {
                                any_child = { count == 0 }
                                current_weight = 50
                                has_trait = gluttonous
                            }                         
                    }
                            
                      etc 
                          
            }
                remove_character_flag = has_cycle
                remove_character_flag = menstruating
                remove_character_flag = ovulating
                add_character_flag = menopausal
    }
    
}

In the CK2 version this was a mean time to happen event which produced its effects randomly over a 10 year period, now it is triggered by  the yearly global on_action.

 

I get the impression that the modifiers sometimes accumulate giving a much higher success rate than intended. Does anybody know how to make this work?

Posted
On 10/21/2020 at 11:18 AM, joemann said:

It worked and you were right about the errors being linked to the characters not having parents. When I resumed the game the errors had disappeared.

 

I have another issue about what replaces the Men Time To Happen trigger. According to the wiki you can use random. However, I can't get it to work correctly.

 

here is my event:

 

  Reveal hidden contents

test_cycle.013 = {

    hidden = yes

 

    trigger = {
            is_female = yes
            has_character_flag = test_for_menopause
            age = 40
    
    }
    immediate = {
            #    increase the chances if factor > 1
            #    decrease the chances if factor < 1
            #    annihilate the chances if factor = 0
            
            random = {
                    chance = 20
                    modifier = {
                            factor = 1  # 20%
                            age == 40
                            OR = {
                                any_child = { count = 2 }    # these factors decrease the chance of early menopause
                                has_trait = temperate
                            }                
                    }
                    modifier = {
                            factor = 1.75 # 35%
                            age == 40
                            OR = {
                                any_child = { count == 0 } # these factors increase the chance of early menopause
                                has_trait = gluttonous
                                current_weight = 50 # obese
                            }
                                            
                    }            
                    modifier = {
                            factor = 1.5    # 30%
                            age == 41
                            OR = {
                                any_child = { count = 2 }
                                has_trait = temperate    
                            }                
                    }
                    modifier = {
                            factor = 1.8 # 36%
                            age == 41
                            OR = {
                                any_child = { count == 0 }
                                current_weight = 50
                                has_trait = gluttonous
                            }                         
                    }
                            
                      etc 
                          
            }
                remove_character_flag = has_cycle
                remove_character_flag = menstruating
                remove_character_flag = ovulating
                add_character_flag = menopausal
    }
    
}

In the CK2 version this was a mean time to happen event which produced its effects randomly over a 10 year period, now it is triggered by  the yearly global on_action.

 

I get the impression that the modifiers sometimes accumulate giving a much higher success rate than intended. Does anybody know how to make this work?


If you put days/months/years = { x y } right after trigger events it kind of works like mean time.

 

What you could do is this, create a starter event that looks like this

 

startevent = {

        Trigger_event= {

       Testcycle.13 = yes/root/whatever

        Days = { 45 90 }
}
}
 

and then have your test cycle event trigger startevent forming a loop where every 45-90 days or whatever long you want your test cycle event is fired.

 

finally when you want it to stop set up a condition where once it’s met instead of firing the startevent again the loop is broken.

       

Posted

I am trying to make an event chain similar to the one Doc Tosca made for CK2 whereby after a siege you can capture women and have your way with them.

 

I am using as an example the capture after siege event from the vanilla game. <siege.0001 etc >

 

I have made two scripted triggers:

 

Spoiler

scripted_trigger test_war_1000_character_is_desirable_for_capture_sex = {    

        scope:primary_siege_defender = {
                                    any_courtier_or_guest = {                #does any courtier meet these conditions?
                                                    is_female = yes
                                                    is_male = no
                                                    age >= 16
                                                    age <= 40
                    #                                        OR = {
                    #                                            has_trait = beauty_good_1
                    #                                            has_trait = beauty_good_3
                    #                                            is_consort_of = scope:primary_siege_defender
                    #                                            is_close_family_of = scope:primary_siege_defender     
                    #                                        }
                    #                                        # Reasons to exclude characters from the capture pool:
                                                    NOR = {
                                                        has_trait = scarred
                                                        has_trait = clubfooted
                                                        has_trait = hunchbacked
                                                        has_trait = wheezing
                                                        has_trait = scaly
                                                        has_trait = albino
                                                        has_trait = spindly
                                                        has_trait = dwarf
                                                    }
                                                
                                    }    
        }
                            
}
    

scripted_trigger test_war_1000_can_be_captured = {
                                        # Captured characters must be located in the raided barony itself.
                                            location = scope:barony.title_province
                                            scope:primary_siege_defender = {
                                                                            any_courtier_or_guest = {            
                                                                                                    is_female = yes
                                                                                                    # Reasons to exclude characters from the capture pool:
                                                                                                    NOR = {
                                                                                                        is_male = yes
                                                                                                        age < 16
                                                                                                        age > 40
                                                                                                    }                            

                                                                            }
                                            }    
}

Which are called further on in an event to make lists and selections from the list.

Spoiler

###BUILD CAPTURE ATTEMPT LIST###
        #Add capture targets from all occupied baronies if it is someone's capital
        every_in_list = {
            list = occupied_baronies
            limit = {
                exists = holder
                save_temporary_scope_as = list_barony
                holder = { capital_barony = { this = scope:list_barony } }
            }
            holder = {
                if = {
                    limit = { test_war_1000_can_be_captured = yes }
                    add_to_list = capture_attempt_targets
                }
                every_courtier = {
                    limit = { test_war_1000_can_be_captured = yes }
                    add_to_list = capture_attempt_targets
                }
            }
        }

 

###BUILD SUCCESSFUL CAPTURE LIST###
        #Calculate capture success
        every_in_list = {
            list = capture_attempt_targets
            random = {    
                chance = test_siege_base_capture_sex_chance # 35 becomes 20 for average intrigue and prowess, can go as low as 5 at very high intrigue and prowess

                # Capture Modifiers
                compare_modifier = { #Adds -20 for 20 intrigue, adds -10 for 10 intrigue
                    #target = this
                    value = intrigue
                    multiplier = -1
                    min = -20
                    }
                compare_modifier = { #Adds -10 for 20 prowess, -5 for 10 prowess
                    #target = this
                    value = prowess
                    multiplier = -0.5
                    min = -15
                }

                # Capture Effects
                if = {
                    limit = {
                        test_war_1000_character_is_desirable_for_capture_sex  = yes
                    }
                    add_to_list = captured_targets_effects
                }
                else = {
                    add_to_list = killed_targets
                }
            }
        }

Although the event triggers and works correctly most of the time, I still get prisoners that do not meet the criteria I believe I set in the scripted triggers. I get men and woman over 40.

 

What am I doing wrong?

I am wondering if, if there are not enough targets that meet the criteria, the maximum number of prisoners (3) gets made up by adding others that do not meet the criteria. But where would that be scripted?

Posted
2 hours ago, joemann said:

I am trying to make an event chain similar to the one Doc Tosca made for CK2 whereby after a siege you can capture women and have your way with them.

 

I am using as an example the capture after siege event from the vanilla game. <siege.0001 etc >

 

I have made two scripted triggers:

 

  Reveal hidden contents

scripted_trigger test_war_1000_character_is_desirable_for_capture_sex = {    

        scope:primary_siege_defender = {
                                    any_courtier_or_guest = {                #does any courtier meet these conditions?
                                                    is_female = yes
                                                    is_male = no
                                                    age >= 16
                                                    age <= 40
                    #                                        OR = {
                    #                                            has_trait = beauty_good_1
                    #                                            has_trait = beauty_good_3
                    #                                            is_consort_of = scope:primary_siege_defender
                    #                                            is_close_family_of = scope:primary_siege_defender     
                    #                                        }
                    #                                        # Reasons to exclude characters from the capture pool:
                                                    NOR = {
                                                        has_trait = scarred
                                                        has_trait = clubfooted
                                                        has_trait = hunchbacked
                                                        has_trait = wheezing
                                                        has_trait = scaly
                                                        has_trait = albino
                                                        has_trait = spindly
                                                        has_trait = dwarf
                                                    }
                                                
                                    }    
        }
                            
}
    

scripted_trigger test_war_1000_can_be_captured = {
                                        # Captured characters must be located in the raided barony itself.
                                            location = scope:barony.title_province
                                            scope:primary_siege_defender = {
                                                                            any_courtier_or_guest = {            
                                                                                                    is_female = yes
                                                                                                    # Reasons to exclude characters from the capture pool:
                                                                                                    NOR = {
                                                                                                        is_male = yes
                                                                                                        age < 16
                                                                                                        age > 40
                                                                                                    }                            

                                                                            }
                                            }    
}

Which are called further on in an event to make lists and selections from the list.

  Reveal hidden contents

###BUILD CAPTURE ATTEMPT LIST###
        #Add capture targets from all occupied baronies if it is someone's capital
        every_in_list = {
            list = occupied_baronies
            limit = {
                exists = holder
                save_temporary_scope_as = list_barony
                holder = { capital_barony = { this = scope:list_barony } }
            }
            holder = {
                if = {
                    limit = { test_war_1000_can_be_captured = yes }
                    add_to_list = capture_attempt_targets
                }
                every_courtier = {
                    limit = { test_war_1000_can_be_captured = yes }
                    add_to_list = capture_attempt_targets
                }
            }
        }

 

###BUILD SUCCESSFUL CAPTURE LIST###
        #Calculate capture success
        every_in_list = {
            list = capture_attempt_targets
            random = {    
                chance = test_siege_base_capture_sex_chance # 35 becomes 20 for average intrigue and prowess, can go as low as 5 at very high intrigue and prowess

                # Capture Modifiers
                compare_modifier = { #Adds -20 for 20 intrigue, adds -10 for 10 intrigue
                    #target = this
                    value = intrigue
                    multiplier = -1
                    min = -20
                    }
                compare_modifier = { #Adds -10 for 20 prowess, -5 for 10 prowess
                    #target = this
                    value = prowess
                    multiplier = -0.5
                    min = -15
                }

                # Capture Effects
                if = {
                    limit = {
                        test_war_1000_character_is_desirable_for_capture_sex  = yes
                    }
                    add_to_list = captured_targets_effects
                }
                else = {
                    add_to_list = killed_targets
                }
            }
        }

Although the event triggers and works correctly most of the time, I still get prisoners that do not meet the criteria I believe I set in the scripted triggers. I get men and woman over 40.

 

What am I doing wrong?

I am wondering if, if there are not enough targets that meet the criteria, the maximum number of prisoners (3) gets made up by adding others that do not meet the criteria. But where would that be scripted?

Your triggers are not checking if a character is suitable. They check if the defender has courtiers that are suitable. Obviously, they won't work.

Posted

Thanks for your help.

 

So should it be as follows?

 

Spoiler

scripted_trigger test_war_1000_character_is_desirable_for_capture_sex = {    
                                                            every_courtier_or_guest = {
                                                                            OR = {
                                                                                is_courtier_of = holder
                                                                                is_foreign_court_or_pool_guest_of = holder    
                                                                            }        
                                                                            is_female = yes
                                                                            is_male = no
                                                                            age >= 16
                                                                            age <= 40
                                            #                                        OR = {
                                            #                                            has_trait = beauty_good_1
                                            #                                            has_trait = beauty_good_3
                                            #                                            is_consort_of = scope:primary_siege_defender
                                            #                                            is_close_family_of = scope:primary_siege_defender     
                                            #                                        }
                                            #                                        # Reasons to exclude characters from the capture pool:
                                                                            NOR = {
                                                                                has_trait = scarred
                                                                                has_trait = clubfooted
                                                                                has_trait = hunchbacked
                                                                                has_trait = wheezing
                                                                                has_trait = scaly
                                                                                has_trait = albino
                                                                                has_trait = spindly
                                                                                has_trait = dwarf
                                                                            }
                                                                        
                                                            }    
        
                            
}

Given where/how it is used isn't some of this redundant?

Spoiler

###BUILD CAPTURE ATTEMPT LIST###
        #Add capture targets from all occupied baronies if it is someone's capital
        every_in_list = {
            list = occupied_baronies
            limit = {
                exists = holder
                save_temporary_scope_as = list_barony
                holder = { capital_barony = { this = scope:list_barony } }
            }
            holder = {
                if = {
                    limit = { test_war_1000_can_be_captured = yes }
                    add_to_list = capture_attempt_targets
                }
                every_courtier_or_guest = {
                    limit = { test_war_1000_can_be_captured = yes }
                    add_to_list = capture_attempt_targets
                }
            }
        }

I used to manage quit well in CK2 but CK3's language seems to have a lot more possibilities/complications.

Posted

A similar problem in the same event_chain. I am trying to limit the event to a character that meets certain conditions. The character is defined as the primary_siege_attacker

 

Spoiler

scope:war = {
            if = {
                limit = {
                    is_attacker = scope:occupant
                }
                # If occupier is an attacker, the war's primary attacker is also the primary attacker in this siege (the attackers have occupied one of the defender's provinces).
                primary_attacker = {
                    save_scope_as = primary_siege_attacker
                }
                primary_defender = {
                    save_scope_as = primary_siege_defender
                }
            }
            else = {
                # Otherwise the occupier is a defender, so the primary defender in the war is the primary attacker in the siege (the defenders have occupied one of the attacker's provinces).
                primary_defender = {
                    save_scope_as = primary_siege_attacker
                }
                primary_attacker = {
                    save_scope_as = primary_siege_defender
                }
            }
        }

But I want to narrow it down further and I tried as follows:

Spoiler

scope:primary_siege_attacker = {            
                                    if = {
                                        limit = {
                                            is_female = no                    
                                            is_imprisoned = no
                                            is_attracted_to_men = no
                                            dread = 20
                                            OR = {
                                                has_trait = rapist
                                                has_trait = lustful
                                                has_trait = rakish
                                                has_trait = sadistic
                                                has_trait = wrathful
                                            }
                                            NOR = {            
                                                has_trait = incapable
                                                has_trait = chaste
                                                has_trait = compassionate
                                            }        
                                        }
                                        save_scope_as = conquerer    
                                    }            
        }

This doesn't work. The scope:conquerer is not created/recognized.

 

 

Posted

What is the equivalent for the CK2 trigger check_variable = { which = <variable_name>x  value = <number> } ?

 

CK3 has the trigger <has_variable = name> but what do I do to check that the scope does not just have the variable but also a specific value of the variable? 

Posted
On 10/31/2020 at 2:32 PM, joemann said:

A similar problem in the same event_chain. I am trying to limit the event to a character that meets certain conditions. The character is defined as the primary_siege_attacker

 

  Reveal hidden contents

scope:war = {
            if = {
                limit = {
                    is_attacker = scope:occupant
                }
                # If occupier is an attacker, the war's primary attacker is also the primary attacker in this siege (the attackers have occupied one of the defender's provinces).
                primary_attacker = {
                    save_scope_as = primary_siege_attacker
                }
                primary_defender = {
                    save_scope_as = primary_siege_defender
                }
            }
            else = {
                # Otherwise the occupier is a defender, so the primary defender in the war is the primary attacker in the siege (the defenders have occupied one of the attacker's provinces).
                primary_defender = {
                    save_scope_as = primary_siege_attacker
                }
                primary_attacker = {
                    save_scope_as = primary_siege_defender
                }
            }
        }

But I want to narrow it down further and I tried as follows:

  Hide contents

scope:primary_siege_attacker = {            
                                    if = {
                                        limit = {
                                            is_female = no                    
                                            is_imprisoned = no
                                            is_attracted_to_men = no
                                            dread = 20
                                            OR = {
                                                has_trait = rapist
                                                has_trait = lustful
                                                has_trait = rakish
                                                has_trait = sadistic
                                                has_trait = wrathful
                                            }
                                            NOR = {            
                                                has_trait = incapable
                                                has_trait = chaste
                                                has_trait = compassionate
                                            }        
                                        }
                                        save_scope_as = conquerer    
                                    }            
        }

This doesn't work. The scope:conquerer is not created/recognized.

 

 

My guess is the "dread = 20" may be the problem.

Would a "dread >= 20" work?

Posted
3 hours ago, joemann said:

What is the equivalent for the CK2 trigger check_variable = { which = <variable_name>x  value = <number> } ?

 

CK3 has the trigger <has_variable = name> but what do I do to check that the scope does not just have the variable but also a specific value of the variable? 

It's way easier now. You can refer to any variable by writing var:my_var. So if your mother has variable test_var and you want to check if it's larger than 10, you can write mother.var:test_var  > 10.

Posted

Does anyone know how to modify a decal? I tried using Gimp to copy paste stuff into the dds file or using the paintbrush. Copy/paste doesn't seem to work and painting on an existing decal_file results in brown splashes on the characters skin. I probably have to add layers but don't know where to start.

Posted
On 11/6/2020 at 6:18 AM, joemann said:

Does anyone know how to modify a decal? I tried using Gimp to copy paste stuff into the dds file or using the paintbrush. Copy/paste doesn't seem to work and painting on an existing decal_file results in brown splashes on the characters skin. I probably have to add layers but don't know where to start.

First of all make sure you are using software that can edit the .dds file format. I personally use Aorta to convert to and from other file formats.

 

Second, decals are defined with image filters in the gene files, which means that they are likely to show up differently than you would expect. For instance many decals are rendered with the "multiply" setting which means they will only make skin darker, not lighter. This is most likely the cause of the brown splashes you are talking about.

 

I don't know of a way to have decals render normally, if you find out let me know.

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...