[R&F] Need help with modifier

rattatatouille

Warlord
Joined
Jan 26, 2018
Messages
140
I'm currently making a mod where Universities grant +1 Science to Rainforest tiles in its city (a la Civ V). Here's my code:
Code:
<Modifiers>
        <Row>
            <ModifierId>UNIVERSITY_ADD_SCIENCE_RAINFOREST</ModifierId>
            <ModifierType>MODIFIER_CITY_PLOT_YIELDS_ADJUST_PLOT_YIELD</ModifierType>
            <SubjectRequirementSetId>RTT_REQUIRES_PLOT_HAS_TAG_UNIVERSITY_FEATURE</SubjectRequirementSetId>
        </Row>
    </Modifiers>
    <ModifierArguments>
        <Row>
            <ModifierId>UNIVERSITY_ADD_SCIENCE_RAINFOREST</ModifierId>
            <Name>Amount</Name>
            <Value>1</Value>
        </Row>
        <Row>
            <ModifierId>UNIVERSITY_ADD_SCIENCE_RAINFOREST</ModifierId>
            <Name>YieldType</Name>
            <Value>YIELD_SCIENCE</Value>
        </Row>
    </ModifierArguments>
    <Requirements>
        <Row>
            <RequirementId>RTT_REQUIRES_PLOT_HAS_TAG_UNIVERSITY_FEATURE</RequirementId>
            <RequirementType>REQUIRES_PLOT_HAS_JUNGLE</RequirementType>
        </Row>
    </Requirements>
    <BuildingModifiers>
        <Row>
            <BuildingType>BUILDING_UNIVERSITY</BuildingType>
            <ModifierId>UNIVERSITY_ADD_SCIENCE_RAINFOREST</ModifierId>
        </Row>
    </BuildingModifiers>

Is there anything I should correct to make this work?
 
Here's my updated code - am I missing anything else? Doesn't seem to work.

Code:
<Modifiers>
        <Row>
            <ModifierId>UNIVERSITY_ADD_SCIENCE_RAINFOREST</ModifierId>
            <ModifierType>MODIFIER_CITY_PLOT_YIELDS_ADJUST_PLOT_YIELD</ModifierType>
            <SubjectRequirementSetId>RTT_PLOT_HAS_JUNGLE_REQUIREMENTS</SubjectRequirementSetId>
        </Row>
    </Modifiers>
    <ModifierArguments>
        <Row>
            <ModifierId>UNIVERSITY_ADD_SCIENCE_RAINFOREST</ModifierId>
            <Name>Amount</Name>
            <Value>1</Value>
        </Row>
        <Row>
            <ModifierId>UNIVERSITY_ADD_SCIENCE_RAINFOREST</ModifierId>
            <Name>YieldType</Name>
            <Value>YIELD_SCIENCE</Value>
        </Row>
    </ModifierArguments>
    <RequirementSets>
        <Row>
            <RequirementSetId>RTT_PLOT_HAS_JUNGLE_REQUIREMENTS</RequirementSetId>
            <RequirementSetType>REQUIREMENTSET_TEST_ALL</RequirementSetType>
        </Row>
    </RequirementSets>
    <RequirementSetRequirements>
        <Row>
            <RequirementSetId>RTT_PLOT_HAS_JUNGLE_REQUIREMENTS</RequirementSetId>
            <RequirementId>RTT_REQUIRES_PLOT_HAS_JUNGLE</RequirementId>
        </Row>
    </RequirementSetRequirements>
    <Requirements>
        <Row>
            <RequirementId>RTT_REQUIRES_PLOT_HAS_JUNGLE</RequirementId>
            <RequirementType>REQUIREMENT_PLOT_FEATURE_TYPE_MATCHES</RequirementType>
        </Row>
    </Requirements>
    <RequirementArguments>
        <Row>
            <RequirementId>RTT_REQUIRES_PLOT_HAS_JUNGLE</RequirementId>
            <Name>FeatureType</Name>
            <Value>FEATURE_JUNGLE</Value>
        </Row>
    </RequirementArguments>
    <BuildingModifiers>
        <Row>
            <BuildingType>BUILDING_UNIVERSITY</BuildingType>
            <ModifierId>UNIVERSITY_ADD_SCIENCE_RAINFOREST</ModifierId>
        </Row>
    </BuildingModifiers>
 
There is already a req set to check for Jungle, used by Chichen Itza, you can reuse it.
If a modifier doesnt work then first check gameeffects.log. You need to set log to Diagnostic and it will tell you if the definition is wrong. While in game, use FireTuner to see if its been properly attached and activated.
Also, how do you actually check if it works?
 
The best way to check if a Modifier is working is to open up Firetuner, open the Modifiers panel, and ensure you can see the Modifier in there. BuildingModifiers though... I can't remember if they are visible in there like other Modifiers are.

I would also use a SQL tool to query the database and make sure the XML is loading. That's actually why I prefer SQL to XML for most tasks. You can write the UPDATE/INSERT statements and test them to be sure they work before committing them to code.


Here's a sample SQL query you could use to spot check to make sure the data is being inserted correctly.

Code:
select * from buildingmodifiers
left join modifiers on modifiers.ModifierId = buildingmodifiers.ModifierId
left join modifierarguments on modifierarguments.ModifierId = modifiers.ModifierId
left join requirementsets on requirementsets.RequirementSetId = modifiers.SubjectRequirementSetId
left join requirementsetrequirements on requirementsetrequirements.RequirementSetId = requirementsets.RequirementSetId
left join requirements on requirements.requirementid = requirementsetrequirements.RequirementId
left join requirementarguments on requirementarguments.RequirementId = requirements.requirementid
where modifiers.modifierid like '%UNIVERSITY_ADD_SCIENCE_RAINFOREST%'
 
Update: It works now. Was testing with an old save, but when I tested with a fresh new game it works now.
 
Back
Top Bottom