feat(content creation): Conditional properties on planet attributes, system attributes, government attributes, outfit descriptions visiblity, etc #7138
Labels
enhancement
A suggestion for new content or functionality that requires code changes
Problem Description
The current add/remove functionality in GameEvents works well for linear storytelling. But when multiple story-lines happen in parallel, then the adds/removes from different storylines on the same objects might interfere in unexpected ways.
The merchant fleets in the systems between the Free Worlds and the Republic are a good example. Typically there are a lot of merchants in those systems, except when there is a war between the FW and Republic, when there is a huge piracy thread or when the Pug are causing trouble in the region.
Modelling the combinations of states requires quite some coordination between the add/remove statements from the various missions that control wars and piracy. (And will more generally not be done because of the complex work for the relatively small benefit.)
Related Issue Links
Issue 5439 requests this for conversation nodes.
Issue 4798 requests this for Outfit attributes
Issue 4422 suggests a somewhat similar mechansism to control fleet spawning
Issue 7076 and issue 6947 contain some discussion on this idea (and it was also discussed on Discord around this PR).
I expect more related issues exist.
Conversation on discord suggested that we could also use this mechanism in determining in which system an NPC resides.
Desired Solution
Add ConditionSets on the affected objects that determine:
Per affected object we should also determine how that object would work in relation to plugins (having some attribute defined multiple times). Some possible strategies we can choose from:
and
as logical operator.Benefits:
Downsides:
add/remove
functionality.add/remove
(for linear storylines).Alternative Approaches
The main alternative (already in use in-game) is the add/remove functionality for attributes, where the state-information is stored in savegames. This functionality will still need to remain working when the functionality from this issue request gets implemented.
Additional Context
An example of a possible syntax on bribing (the last bribe number that has the conditionSet return true gets chosen, to allow plugins to overwrite data):
An example of this same possible syntax for
"provoked on scan"
(as also suggested in #6947):The text was updated successfully, but these errors were encountered: