How does one find the valid arguments for an effect?

NycholusV

Chieftain
Joined
Jun 25, 2016
Messages
86
Location
Sydney, Australia
As far as I can tell, the ModifierArguments used by a Modifier are dependent on its EffectType. Does anyone know how to obtain a list of valid arguments for any given effect?

For most effects, the arguments can be inferred from the game files. However, there are some effects in GameEffects.xml that are not used anywhere in the game. The ones I'm particularly curious about are the ones that mention adjusting or assigning "properties", like "EFFECT_ADJUST_DISTRICT_PROPERTY". They appear nowhere in the code yet sound suspiciously useful.

I've been blindly stabbing in the dark at what the modifier arguments may be, but to no avail. (GameEffects.xml will tell you if a modifier has invalid properties.)
 
Did you ever figure anything out about this? Im trying to add a modifier to heal only naval units passively when in friendly territory. Looking at the dead sea modifier in features.xml theres a modifier argument for:
<ModifierId>xxx</ModifierId>
<Name>type</Name>
<Value>ALL</Value>

and no other modifier is like this one. I'd like to know what that type refers to. I'm assuming you dont need to list a modifier for each individual unit....
 
Check out my post here: https://forums.civfanatics.com/thre...ffects-and-requirements.613092/#post-14706464



The list I generated there is based on how Firaxis used them in existing Modifiers. I just looked for distinct combinations of DynamicModifiers.EffectType and ModifierArguments.Name


If you are using SQLite you can use the code below to generate a list of all the arguments that have been used: Running this query in SQLIte generates me over 3000 hits (you may have to use the next page feature in SQLite to view all of them).

Code:
SELECT *
  FROM DynamicModifiers
       LEFT JOIN
       Modifiers ON Modifiers.ModifierType = DynamicModifiers.ModifierType
       LEFT JOIN
       ModifierArguments ON ModifierArguments.ModifierId = Modifiers.ModifierId;


You could add a WHERE clause to the above SQL to limit the results that come back.
 
I think the point was that there are modifiers in the Types table that are never used by the game. Of course it's easy for modifiers that are already in use, you can just look at what's done and copy it.
To make matters worse, some of those unused modifiers are probably not yet implemented, so they won't work even if you guess the "correct" ModifierArguments.
 
I think the point was that there are modifiers in the Types table that are never used by the game. Of course it's easy for modifiers that are already in use, you can just look at what's done and copy it.
To make matters worse, some of those unused modifiers are probably not yet implemented, so they won't work even if you guess the "correct" ModifierArguments.


I would not recommend relying on any Effect Type that is not actually used somewhere in the game. It may work, but I'd be wary of it.
 
Back
Top Bottom