This looks really great! It's really really solid. I noticed that you created your own SubjectRequirementSetIds! That's excellent news! Did you find any limitations? God, I may have to change Cyrus' ability if creating a new SubjectRequirementSetId is that easy!
Your only limited in terms of the requirement types you can have (there listed in GameEffects.xml after all the effects) and what collections you can apply a modifier to (I for example would like to have the pop bonus only apply to the city the neighborhood is built in, instead of every city with a neighborhood, but the game dosent have a single city collection, just an all cities and a nearest city to unit)
To create a requirement you just need the following:
1) A SubjectRequirementSetId (can be named anything)
2) A RequirementSetType (this is either REQUIREMENTSET_TEST ANY or ALL) it determines wether the requirment is met if either ALL the condtions are met or ANY of them are met.
3) The RequirementSetRequirements must have separate entries for each "Condition"
4) A Requirement must have a type that's listed in GameEffects.xml
5) RequirementArguments has the type of object AND the object
I recommend finding what the game uses the requirment type listed in GameEffects your gonna use for and copying from there (ie in order to add the Chain Attack ability to my Xeonblade civ I looked at the Hoplite)
For example, I tried to explain the Rockefeller's Leader Ability requirments as follows:
EDIT: I just relized the cc in the Modifier id wasnt just a copying bork and actually [prevented the ability from working, gonna fix that here, and in the mod now This is what I ment by the mod still needing testing
Code:
<TraitModifiers>
<Row TraitType="TRAIT_LEADER_INDUSTRIALIST_TYCOON" ModifierId="TRAIT_ROCKEFELLER_PRODUCTION_BONUS_TO_WONDERS"/>
<Row TraitType="TRAIT_LEADER_INDUSTRIALIST_TYCOON" ModifierId="TRAIT_ROCK_ECONOMIC_GOVERNMENT_SLOT"/>
</TraitModifiers>
<!-- This lists what modifiers are attached to the trait-->
<Modifiers>
<Row>
<ModifierId>TRAIT_ROCK_ECONOMIC_GOVERNMENT_SLOT</ModifierId>
<ModifierType>MODIFIER_PLAYER_CULTURE_ADJUST_GOVERNMENT_SLOTS_MODIFIER</ModifierType>
</Row>
<!-- From Punt mod, says what modifier type is used, in this case its a pre-defined one from Modifer.xml that adds a policy slot-->
<Row>
<ModifierId>TRAIT_ROCKEFELLER_PRODUCTION_BONUS_TO_WONDERS</ModifierId>
<ModifierType>MODIFIER_ALL_CITIES_ATTACH_MODIFIER</ModifierType>
<Permanent>true</Permanent>
<SubjectRequirementSetId>ROCKEFELLER_HAS_COMMERCIAL_AND_INDUSTRIAL</SubjectRequirementSetId>
</Row>
<!-- Again pre-defined one from Modifer.xml is used, in addition to a RequirmentSetId that sets a requirement NOTE: this modifier type attaches another modifier to all cities that meet the requirement -->
<Row>
<ModifierId>ROCKEFELLER_PRODUCTION_BONUS</ModifierId>
<ModifierType>MODIFIER_PLAYER_CITIES_ADJUST_ALL_PROJECTS_PRODUCTION</ModifierType>
</Row>
<!-- This is the modifier that the above one is attaches to all cities, (see the 2nd group of <ModierArguments>) It is a type that adjusts wonder production, used in vanilla for Hong Kong's bonus-->
</Modifiers>
<ModifierArguments>
<Row>
<ModifierId>TRAIT_ROCK_ECONOMIC_GOVERNMENT_SLOT</ModifierId>
<Name>GovernmentSlotType</Name>
<Value>SLOT_ECONOMIC</Value>
</Row>
<!-- This tells the game what kind of policy slot to add -->
<Row>
<ModifierId>TRAIT_ROCKEFELLER_PRODUCTION_BONUS_TO_WONDERS</ModifierId>
<Name>ModifierId</Name>
<Value>ROCKEFELLER_PRODUCTION_BONUS</Value>
</Row>
<!-- This tells the game which modifier to attach to the trait modifier -->
<Row>
<ModifierId>ROCKEFELLER_PRODUCTION_BONUS</ModifierId>
<Name>Amount</Name>
<Value>15</Value>
</Row>
<!-- This tells the game how much bonus to give, in this case 15% -->
</ModifierArguments>
<RequirementSets>
<Row>
<RequirementSetId>ROCKEFELLER_HAS_COMMERCIAL_AND_INDUSTRIAL</RequirementSetId>
<RequirementSetType>REQUIREMENTSET_TEST_ALL</RequirementSetType>
</Row>
<!-- This tells the game that ALL of the below requirements (From now on I call them conditions b/c using the same word over gets confusing) must be true for the requirmentSet to be met -->
</RequirementSets>
<RequirementSetRequirements>
<Row>
<RequirementSetId>ROCKEFELLER_HAS_COMMERCIAL_AND_INDUSTRIAL</RequirementSetId>
<RequirementId>ROCKEFELLER_ELEGABLE_COMMERCIAL_DISTRICT</RequirementId>
</Row>
<!-- This tells the game that The RequirmentSet needs to have this condition (in this case I named it after the district this needs) -->
<Row>
<RequirementSetId>ROCKEFELLER_HAS_COMMERCIAL_AND_INDUSTRIAL</RequirementSetId>
<RequirementId>ROCKEFELLER_ELEGABLE_INDUSTRIAL_DISTRICT</RequirementId>
</Row>
<!-- Same as above, NOTE how each separate district needs its own requirmentId -->
</RequirementSetRequirements>
<Requirements>
<Row>
<RequirementId>ROCKEFELLER_ELEGABLE_COMMERCIAL_DISTRICT</RequirementId>
<RequirementType>REQUIREMENT_CITY_HAS_DISTRICT</RequirementType>
</Row>
<!-- Tells the game what kind of requirement the condition is -->
<Row>
<RequirementId>ROCKEFELLER_ELEGABLE_INDUSTRIAL_DISTRICT</RequirementId>
<RequirementType>REQUIREMENT_CITY_HAS_DISTRICT</RequirementType>
</Row>
<!-- Same as above, again note how each condition is separate for the RequirmentSetRequirments -->
</Requirements>
<RequirementArguments>
<Row>
<RequirementId>ROCKEFELLER_ELEGABLE_COMMERCIAL_DISTRICT</RequirementId>
<Name>DistrictType</Name>
<Value>DISTRICT_COMMERCIAL_HUB</Value>
</Row>
<!-- Tells the game that the district needed to meet the condition is a Commercial Hub -->
<Row>
<RequirementId>ROCKEFELLER_ELEGABLE_INDUSTRIAL_DISTRICT</RequirementId>
<Name>DistrictType</Name>
<Value>DISTRICT_INDUSTRIAL_ZONE</Value>
</Row>
<!--Same but Industrial Zone -->
</RequirementArguments>