• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.
Are you porting whatever you do in Eu4 to Ck2 if possible? For example that thing about localisation from mods replacing vanilla localisation without the need to copy localisation files.

And the contrary would be possible? That is something of CK2 could go in EU4? At least the ruler rank it is needed... it annoys me a lot to see all represented as Kings! Or is this a marketing / political decision?
 
The ability to change DNA on arbitrary characters would be even better.

We have to wait for the Shapeshifter Invasion DLC for that one, though.
 
I think Gars is on summer break (I remember him mentioning it recently).
 
Is it possible for game engine to make queue of siege moddable? Now we are siegeing firstly capital, and then minor holds. It would be great if modder can choose which castle is sieged first. Something like this:

c_xyz = {
b_x = {}
b_y = { siege_queue = 1 }
b_z = {}
b_c = { siege_queue = 2 }
}
 
I think feature request should be in the suggestions for improbed moddability forum.

As for my own post, I did it so Gars could see it upon return, since the thread in the bug forum will be lost by then

By the way, whould we still use the thread that was opened to report modding problems during the beta? Or maybe open a new modding bugs thread to store new issues?
 
Is it possible for game engine to make queue of siege moddable? Now we are siegeing firstly capital, and then minor holds. It would be great if modder can choose which castle is sieged first. Something like this:

c_xyz = {
b_x = {}
b_y = { siege_queue = 1 }
b_z = {}
b_c = { siege_queue = 2 }
}

That makes equally zero amounts of sense as the current system
 
That makes equally zero amounts of sense as the current system
Not necessarily. If a county represents a single city for instance, different holdings could be different parts of the city. So one holding is the outer wall (and might have higher than normal defense), city and church holdings are inside the walls and don't have any defense at all, and some castles represent forts inside the walls, and can hold out even after the main city have been captured.

Also, before the Republic was released a question was asked regarding whether we could mod how many patrician families a republic would have. The answer was that it was not included in the DLC, but it would be easy to export. Can we get that exported? Having some way to have it vary from republic to republic would be ideal, but even just the ability to set it globally in defines would be good.
 
  • 1
Reactions:
That makes equally zero amounts of sense as the current system

Soooo... do you think that there is more sense in conquering firstly main keep and then walls and gates? Yes! That makes sense! Every army first walk into city, then sally main keep and then humbly back outside walls and then attack these walls! :D You would be terrible commander :)
 
  • 1
Reactions:
That is a different thing. Considering the normal layout (each holding represents an independent barony) it makes no sense. Mind you, I'm not against this.
I'm actually for sth a bit wider:

a) Unless an order is specified in the files, siege random barony
b) Be able to pick which barony to siege
c) Have the ability to enumerate the baronies from one to seven in siege priority
d) Be able to leave holes in enumeration (for example, define baronies #1 #2 and #7, but none in between)

Would take lots of work.
 
That is a different thing. Considering the normal layout (each holding represents an independent barony) it makes no sense. Mind you, I'm not against this.
I'm actually for sth a bit wider:

a) Unless an order is specified in the files, siege random barony
b) Be able to pick which barony to siege
c) Have the ability to enumerate the baronies from one to seven in siege priority
d) Be able to leave holes in enumeration (for example, define baronies #1 #2 and #7, but none in between)

Would take lots of work.

To keep things sane, the capital should always be sieged first unless there are defines in there that tells the game otherwise.
 
We have "if = { limit = ..." but there is no "else" (that this do this if the condition of "if" is false") and "else if = { limit = ..." (that is if the first condition is false and this is true...).

For example this code could be written more naturally using if / else if / else:

Code:
#A Fight, A Random list with many possibilities, determined based off martial score, triggers the following
character_event = {
	id = gladiators.13
	picture = GFX_evt_colosseum
	
	trigger = {
		trait = gladiator
	}
	
	mean_time_to_happen = {
		years = 5
		modifier = {
			factor = 1.5
			trait = humble
		}
		modifier = {
			factor = 1.5
			trait = gregarious
		}
		modifier = {
			factor = 0.6
			trait = brave
		}
		modifier = {
			factor = 0.5
			trait = wroth
		}
		modifier = {
			factor = 0.2
			trait = duelist
		}
		modifier = {
			factor = 0.6
			martial = 15
		}
		modifier = {
			factor = 1.8
			trait = scholar
		}
		modifier = {
			factor = 0.8
			trait = proud
		}
		modifier = {
			factor = 0.5
			trait = tough_soldier
		}
	}

	option = {
		name = "EVTOPTAgladiators.13"
		if = {
			limit = {
				martial = 8
			}
			random_list = {
				60 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				20 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				10 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				5 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		else if = {
			limit = {
				martial = 10
			}
			random_list = {
				50 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				30 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				15 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				5 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		if = {
			limit = {
				martial = 12
			}
			random_list = {
				40 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				30 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				20 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				10 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		else if = {
			limit = {
				martial = 14
			}
			random_list = {
				25 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				15 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				10 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				30 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		else if = {
			limit = {
				martial = 16
			}
			random_list = {
				20 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				10 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				5 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				40 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		else if = {
			limit = {
				martial = 18
			}
			random_list = {
				15 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				10 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				5 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				60 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		else = {
			#limit = {
			#	martial = 20 # No useful is implicit!
			#}
			random_list = {
				10 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				10 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				10 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				70 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
	 }
}
 
We have "if = { limit = ..." but there is no "else" (that this do this if the condition of "if" is false") and "else if = { limit = ..." (that is if the first condition is false and this is true...).

For example this code could be written more naturally using if / else if / else:

Code:
#A Fight, A Random list with many possibilities, determined based off martial score, triggers the following
character_event = {
	id = gladiators.13
	picture = GFX_evt_colosseum
	
	trigger = {
		trait = gladiator
	}
	
	mean_time_to_happen = {
		years = 5
		modifier = {
			factor = 1.5
			trait = humble
		}
		modifier = {
			factor = 1.5
			trait = gregarious
		}
		modifier = {
			factor = 0.6
			trait = brave
		}
		modifier = {
			factor = 0.5
			trait = wroth
		}
		modifier = {
			factor = 0.2
			trait = duelist
		}
		modifier = {
			factor = 0.6
			martial = 15
		}
		modifier = {
			factor = 1.8
			trait = scholar
		}
		modifier = {
			factor = 0.8
			trait = proud
		}
		modifier = {
			factor = 0.5
			trait = tough_soldier
		}
	}

	option = {
		name = "EVTOPTAgladiators.13"
		if = {
			limit = {
				martial = 8
			}
			random_list = {
				60 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				20 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				10 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				5 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		else if = {
			limit = {
				martial = 10
			}
			random_list = {
				50 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				30 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				15 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				5 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		if = {
			limit = {
				martial = 12
			}
			random_list = {
				40 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				30 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				20 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				10 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		else if = {
			limit = {
				martial = 14
			}
			random_list = {
				25 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				15 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				10 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				30 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		else if = {
			limit = {
				martial = 16
			}
			random_list = {
				20 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				10 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				5 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				40 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		else if = {
			limit = {
				martial = 18
			}
			random_list = {
				15 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				10 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				5 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				60 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
		else = {
			#limit = {
			#	martial = 20 # No useful is implicit!
			#}
			random_list = {
				10 = {
					death = {
						death_reason = death_duel
					}
					liege = {
						character_event = { id = gladiators.16 }
					}
				}
				10 = {
					add_trait = maimed
					liege = {
						character_event = { id = gladiators.15 }
					}
				}
				10 = {
					add_trait = wounded
					liege = {
						character_event = { id = gladiators.15 } 
					}
				}
				70 = {
					prestige = 100
					liege = {
						character_event = { id = gladiators.14 } 
					}
				}
			}
		}
	 }
}
You can just use NOT = { martial = x } though, that doesn't exactly take long to do.
 
You can just use NOT = { martial = x } though, that doesn't exactly take long to do.
Except when you've got complicated if conditions. Then you end up duplicating a huge amount of code.
 
  • 1
Reactions: