Help with civilization traits

OmarWeber

Chieftain
Joined
Aug 5, 2020
Messages
17
So I used this template: UA_Reference.sql - Google Drive to try and add a special trait to Arabia, but I can't play a game with this mod active as the game won't start.

I am trying to give 5 combat boost to Arabian units fighting on desert tiles.

SQL

Code:
-----------------------------------------------
-- Types
-----------------------------------------------

INSERT INTO    Types
        (Type,                                            Kind            )
VALUES    ('TRAIT_CIVILIZATION_SALADIN_ARABIA',            'KIND_TRAIT'    ),
        ('MODTYPE_SALADIN_ARABIA_DESERT_ATTACK_BUFF',    'KIND_MODIFIER'    );

-----------------------------------------------
-- Traits
-----------------------------------------------

INSERT INTO    Traits   
        (TraitType,                                Name,                                            Description                                            )
VALUES    ('TRAIT_CIVILIZATION_SALADIN_ARABIA',    'LOC_TRAIT_CIVILIZATION_SALADIN_ARABIA_NAME',    'LOC_TRAIT_CIVILIZATION_SALADIN_ARABIA_DESCRIPTION'    );
        
-----------------------------------------------
-- CivilizationTraits
-----------------------------------------------

INSERT INTO    CivilizationTraits
        (CivilizationType,                TraitType                            )
VALUES    ('CIVILIZATION_SALADIN_ARABIA',    'TRAIT_CIVILIZATION_SALADIN_ARABIA'    );

-----------------------------------------------
-- TraitModifiers
-----------------------------------------------

INSERT INTO    TraitModifiers   
        (TraitType,                                ModifierId                                        )
VALUES    ('TRAIT_CIVILIZATION_SALADIN_ARABIA',    'MODIFIER_SALADIN_ARABIA_DESERT_ATTACK'    );
-----------------------------------------------
-- DynamicModifiers
-----------------------------------------------

INSERT INTO    DynamicModifiers
        (ModifierType,                                    CollectionType,                    EffectType                                        )
VALUES    ('MODTYPE_SALADIN_ARABIA_DESERT_ATTACK_BUFF',    'COLLECTION_PLAYER_COMBAT',        'EFFECT_ADJUST_PLAYER_STRENGTH_MODIFIER'            );

---------------------------------------------------------------------------------------------------------------
-- RequirementSets
---------------------------------------------------------------------------------------------------------------
INSERT INTO RequirementSets
        (RequirementSetId,                            RequirementSetType)
VALUES    ('ATTACK_BUFF_PLOT_HAS_DESERT',            'REQUIREMENTSET_TEST_ANY');
---------------------------------------------------------------------------------------------------------------
-- RequirementSetRequirements
---------------------------------------------------------------------------------------------------------------
INSERT INTO RequirementSetRequirements
        (RequirementSetId,                            RequirementId)
VALUES    ('ATTACK_BUFF_PLOT_HAS_DESERT',            'REQUIRES_PLOT_HAS_DESERT');

-----------------------------------------------
-- Modifiers
-----------------------------------------------

INSERT INTO    Modifiers
        (ModifierId,                                        ModifierType,                                    OwnerRequirementSetId,                SubjectRequirementSetId,            RunOnce,    Permanent    )
VALUES    ('MODIFIER_SALADIN_ARABIA_DESERT_ATTACK',        'MODTYPE_SALADIN_ARABIA_DESERT_ATTACK_BUFF',    NULL,        'ATTACK_BUFF_PLOT_HAS_DESERT',                                0,            0            );

-----------------------------------------------
-- ModifierArguments
-----------------------------------------------

INSERT INTO    ModifierArguments
        (ModifierId,                                            Name,                            Value                                    )
VALUES    ('MODIFIER_SALADIN_ARABIA_DESERT_ATTACK',            'Amount',                    5                        );
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
 
Modinfo

Code:
<?xml version="1.0" encoding="utf-8"?>
<Mod id="6370e55d-a3b9-441e-b1d7-548e8d755719" version="1">
  <Properties>
    <Name>desertbuff</Name>
    <Description>desertbuff</Description>
    <Teaser>desertbuff</Teaser>
    <Authors>EG</Authors>
 </Properties>
  <InGameActions>
    <UpdateDatabase id="CivilizationTraits">
      <Properties>
        <LoadOrder>500</LoadOrder>
      </Properties>
      <File>desertbuff.sql</File>
    </UpdateDatabase>
  </InGameActions>
  <Files>
    <File>desertbuff.sql</File>
  </Files>
</Mod>
 
No such thing in the unmodded game: CIVILIZATION_SALADIN_ARABIA

CIVILIZATION_ARABIA is the correct designation for the 'standard' Arabia as defined by Firaxis.

You want to be checking Database.log for error messages related to your code. Database log is found in folder
~\Documents\My Games\Sid Meier's Civilization VI\Logs
 
No such thing in the unmodded game: CIVILIZATION_SALADIN_ARABIA

CIVILIZATION_ARABIA is the correct designation for the 'standard' Arabia as defined by Firaxis.

You want to be checking Database.log for error messages related to your code. Database log is found in folder
Thanks for replying. Yes, that fixed the first issue. But it doesn't seem to be working, I don't gain any strength bonus on desert tiles. Does it have to do with the requirements set?
I also checked the Database.log and I couldn't really find anything worth mentioning
Code:
[3464897.310] [Localization]: StartupErrorMessages.xml
[3464897.310] [Localization]: Input XML does not contain database entry tags. GameData, GameInfo or Database
[3464916.039] [Localization]: Validating Foreign Key Constraints...
[3464916.040] [Localization]: Passed Validation.
[3464916.656] [Configuration]: Validating Foreign Key Constraints...
[3464916.657] [Configuration]: Passed Validation.
[3464923.480] [FullTextSearch]: Initializing FullTextSearch
[3464929.469] [Gameplay]: Validating Foreign Key Constraints...
[3464929.492] [Gameplay]: Passed Validation.
[3464945.489] [Configuration]: Validating Foreign Key Constraints...
[3464945.490] [Configuration]: Passed Validation.
[3464953.942] [HallofFame]: Database found. Checking versions...
[3464953.979] [HallofFame]: Database is up-to-date!
[3464973.700] [FullTextSearch]: FTS - Creating Context
[3464981.646] [FullTextSearch]: FTS - Creating Context
[3464990.833] [Configuration]: Validating Foreign Key Constraints...
[3464990.834] [Configuration]: Passed Validation.
[3465016.855] [Configuration]: Validating Foreign Key Constraints...
[3465016.856] [Configuration]: Passed Validation.
[3465093.424] [Gameplay] ERROR: CHECK constraint failed: Units
[3465093.424] [Gameplay] ERROR: CHECK constraint failed: Units
[3465123.206] [Localization] ERROR: UNIQUE constraint failed: LocalizedText.Language, LocalizedText.Tag
[3465123.206] [Localization]: While executing - 'insert into BaseGameText('Tag', 'Text') values (?, ?);'
[3465123.206] [Localization]: In XMLSerializer while inserting row into table insert into BaseGameText('Tag', 'Text') with  values (LOC_TRADE_GROUP_SETTINGS, Group Settings, ).
[3465123.206] [Localization]: In XMLSerializer while updating table BaseGameText from file BTS_Text_EN.xml.
[3465123.206] [Localization] ERROR: UNIQUE constraint failed: LocalizedText.Language, LocalizedText.Tag
[3465131.895] [Gameplay]: Validating Foreign Key Constraints...
[3465131.935] [Gameplay]: Passed Validation.
[3465360.248] [FullTextSearch]: FTS - Creating Context
[3465360.249] [FullTextSearch]: FTS - Creating Context
[3465364.869] [FullTextSearch]: FTS - Creating Context
[3465367.846] [FullTextSearch]: FTS - Creating Context
[3465376.067] [FullTextSearch]: FTS - Creating Context
.
 
This is definitely worth mentioning.
Code:
[3465093.424] [Gameplay] ERROR: CHECK constraint failed: Units
[3465093.424] [Gameplay] ERROR: CHECK constraint failed: Units
It means one or more SQL files are failing to load completely into the database. Somewhere in a Units update or insert it would appear a non-boolean value is being given for a boolean column.

For SQL files you need to compare the timestamp on the Database.log message to those in Modding.log to determine which file(s) were being loaded into the database at or near the same timestamp. If you open Modding.log and search for the text "error" that usually will find the files that were loading at or just before the timestamp reported in Database.log

Bear in mind that in SQL there is no "true" or "false". 1 and 0 are used instead.
 
This is definitely worth mentioning.
Code:
[3465093.424] [Gameplay] ERROR: CHECK constraint failed: Units
[3465093.424] [Gameplay] ERROR: CHECK constraint failed: Units
It means one or more SQL files are failing to load completely into the database. Somewhere in a Units update or insert it would appear a non-boolean value is being given for a boolean column.

For SQL files you need to compare the timestamp on the Database.log message to those in Modding.log to determine which file(s) were being loaded into the database at or near the same timestamp. If you open Modding.log and search for the text "error" that usually will find the files that were loading at or just before the timestamp reported in Database.log

Bear in mind that in SQL there is no "true" or "false". 1 and 0 are used instead.
Yeah those UNITS errors are from some unfinished mods I have, but they have nothing to do with the civilization trait. I don't get any errors related to this particular mod though, while it appears to be working, I don't get any bonus combat strength.
 
I think your problem is in the CollectionType and EffectType combination you are using. The only place I see where Firaxis uses an identical combination of COLLECTION_PLAYER_COMBAT / EFFECT_ADJUST_PLAYER_STRENGTH_MODIFIER is in modifiers that are player-level rather than unit level, and the Subject or Owner RequirementSets are also player level requirements such as the opponent is in a golden age.
In order to implement what you are after you will probably have to use an arrangement like is used for the Menelik unit ability where they get extra strength in hills.

Code:
DynamicModifiers
ModifierType					CollectionType			EffectType
MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH		COLLECTION_UNIT_COMBAT		EFFECT_ADJUST_PLAYER_STRENGTH_MODIFIER

Modifiers
ModifierId		ModifierType				RunOnce	NewOnly	Permanent	Repeatable	OwnerRequirementSetId	SubjectRequirementSetId			OwnerStackLimit		SubjectStackLimit
MENELIK_HILLS_COMBAT	MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH	0	0	0		0		--			ETHIOPIA_PLOT_IS_HILLS_REQUIREMENTS	--			--

ModifierArguments
ModifierId		Name	Value
MENELIK_HILLS_COMBAT	Amount	4

RequirementSets
RequirementSetId			RequirementSetType
ETHIOPIA_PLOT_IS_HILLS_REQUIREMENTS	REQUIREMENTSET_TEST_ALL

RequirementSeetRequirements
RequirementSetId			RequirementId
ETHIOPIA_PLOT_IS_HILLS_REQUIREMENTS	PLOT_IS_HILLS_REQUIREMENT

Requirements
RequirementId			RequirementType			Likeliness	Impact	Inverse	Reverse
PLOT_IS_HILLS_REQUIREMENT	REQUIREMENT_PLOT_IS_HILLS	0		0	0	0
The MENELIK_HILLS_COMBAT Modifier is actually applied to a UnitAbility.
Code:
	<TraitModifiers>
		<Row>
			<TraitType>TRAIT_LEADER_MENELIK</TraitType>
			<ModifierId>TRAIT_HILLS_COMBAT</ModifierId>
		</Row>
	</TraitModifiers>
	<Modifiers>
		<Row>
			<ModifierId>TRAIT_HILLS_COMBAT</ModifierId>
			<ModifierType>MODIFIER_PLAYER_UNITS_GRANT_ABILITY</ModifierType>
		</Row>
	</Modifiers>
	<ModifierArguments>
		<Row>
			<ModifierId>TRAIT_HILLS_COMBAT</ModifierId>
			<Name>AbilityType</Name>
			<Value>ABILITY_MENELIK_HILLS_COMBAT</Value>
		</Row>
	</ModifierArguments>
	<UnitAbilityModifiers>
		<Row>
			<UnitAbilityType>ABILITY_MENELIK_HILLS_COMBAT</UnitAbilityType>
			<ModifierId>MENELIK_HILLS_COMBAT</ModifierId>
		</Row>
	</UnitAbilityModifiers>



	<Types>
		<!-- Leaders -->
		<Row Type="LEADER_MENELIK" Kind="KIND_LEADER"/>
		<!-- Traits -->
		<Row Type="TRAIT_LEADER_MENELIK" Kind="KIND_TRAIT"/>
		<Row Type="TRAIT_AGENDA_ETHIOPIAN_HIGHLANDS" Kind="KIND_TRAIT"/>
		<!-- Ability -->
		<Row Type="ABILITY_MENELIK_HILLS_COMBAT" Kind="KIND_ABILITY"/>
	</Types>
	<TypeTags>
		<Row Type="ABILITY_MENELIK_HILLS_COMBAT" Tag="CLASS_ALL_COMBAT_UNITS"/>
	</TypeTags>
	<UnitAbilities>
		<Row UnitAbilityType="ABILITY_MENELIK_HILLS_COMBAT" Name="LOC_ABILITY_MENELIK_HILLS_COMBAT_NAME" Description="LOC_ABILITY_MENELIK_HILLS_COMBAT_DESCRIPTION" Inactive="true"/>
	</UnitAbilities>
So:
  1. ModifierA gives effect and has all the plot requirements
  2. UnitAbility gives ModifierA
  3. ModifierB gives UnitAbility to all of a player's units
  4. Trait gives ModifierB to the player via TraitModifiers
  5. Trait is attached to the player via either LeaderTraits or CivilizationTraits table.
 
  1. ModifierA gives effect and has all the plot requirements
  2. UnitAbility gives ModifierA
  3. ModifierB gives UnitAbility to all of a player's units
  4. Trait gives ModifierB to the player via TraitModifiers
  5. Trait is attached to the player via either LeaderTraits or CivilizationTraits table.

So I have come up with this:

Code:
DynamicModifiers
ModifierType                    CollectionType            EffectType
MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH        COLLECTION_UNIT_COMBAT        EFFECT_ADJUST_PLAYER_STRENGTH_MODIFIER

Modifiers
ModifierId        ModifierType                RunOnce    NewOnly    Permanent    Repeatable    OwnerRequirementSetId    SubjectRequirementSetId            OwnerStackLimit        SubjectStackLimit
SALADIN_DESERT_COMBAT    MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH    0    0    0        0        --            ARABIA_PLOT_IS_DESERT_REQUIREMENTS    --            --

ModifierArguments
ModifierId        Name    Value
SALADIN_DESERT_COMBAT    Amount    5

RequirementSets
RequirementSetId            RequirementSetType
ARABIA_PLOT_IS_DESERT_REQUIREMENTS    REQUIREMENTSET_TEST_ALL

RequirementSeetRequirements
RequirementSetId            RequirementId
ARABIA_PLOT_IS_DESERT_REQUIREMENTS    PLOT_IS_DESERT_REQUIREMENT

Requirements
RequirementId            RequirementType            Likeliness    Impact    Inverse    Reverse
PLOT_IS_DESERT_REQUIREMENT    REQUIREMENT_PLOT_IS_DESERT    0        0    0    0

Trait
Code:
    <TraitModifiers>
        <Row>
            <TraitType>TRAIT_LEADER_SALADIN</TraitType>
            <ModifierId>TRAIT_DESERT_COMBAT</ModifierId>
        </Row>
    </TraitModifiers>
    <Modifiers>
        <Row>
            <ModifierId>TRAIT_DESERT_COMBAT</ModifierId>
            <ModifierType>MODIFIER_PLAYER_UNITS_GRANT_ABILITY</ModifierType>
        </Row>
    </Modifiers>
    <ModifierArguments>
        <Row>
            <ModifierId>TRAIT_DESERT_COMBAT</ModifierId>
            <Name>AbilityType</Name>
            <Value>ABILITY_SALADIN_DESERT_COMBAT</Value>
        </Row>
    </ModifierArguments>
    <UnitAbilityModifiers>
        <Row>
            <UnitAbilityType>ABILITY_SALADIN_DESERT_COMBAT</UnitAbilityType>
            <ModifierId>SALADIN_DESERT_COMBAT</ModifierId>
        </Row>
    </UnitAbilityModifiers>



    <Types>
        <!-- Leaders -->
        <Row Type="LEADER_SALADIN" Kind="KIND_LEADER"/>
        <!-- Traits -->
        <Row Type="TRAIT_LEADER_SALADIN" Kind="KIND_TRAIT"/>
        <Row Type="TRAIT_AGENDA_ARABIAN_HIGHLANDS" Kind="KIND_TRAIT"/>
        <!-- Ability -->
        <Row Type="ABILITY_SALADIN_DESERT_COMBAT" Kind="KIND_ABILITY"/>
    </Types>
    <TypeTags>
        <Row Type="ABILITY_SALADIN_DESERT_COMBAT" Tag="CLASS_ALL_COMBAT_UNITS"/>
    </TypeTags>
    <UnitAbilities>
        <Row UnitAbilityType="ABILITY_SALADIN_DESERT_COMBAT" Name="LOC_ABILITY_SALADIN_DESERT_COMBAT_NAME" Description="LOC_ABILITY_SALADIN_DESERT_COMBAT_DESCRIPTION" Inactive="true"/>
    </UnitAbilities>
 
Now I am actually confused on how to implement this, it seems more complicated than the initial template.
 
I have done everything I could to recreate Menelik's ability on desert tiles, but it still won't work. :(

Code:
-----------------------------------------------
-- 1  TraitModifiers
-----------------------------------------------

INSERT INTO    TraitModifiers   
        (TraitType,                                ModifierId                                        )
VALUES    ('TRAIT_LEADER_RIGHTEOUSNESS_OF_FAITH',    'MODIFIER_ARABIA_DESERT_BUFF'                    );

INSERT INTO    TraitModifiers   
        (TraitType,                                ModifierId                                        )
VALUES    ('TRAIT_LEADER_RIGHTEOUSNESS_OF_FAITH',    'MODIFIER_ARABIA_UNIT_BUFF'                        );

-----------------------------------------------
-- 2 Modifiers
-----------------------------------------------

INSERT INTO    Modifiers
        (ModifierId,                                        ModifierType,                                    OwnerRequirementSetId,                SubjectRequirementSetId,            RunOnce,    Permanent    )
VALUES    ('MODIFIER_ARABIA_DESERT_BUFF',        'MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH',    NULL,        'ATTACK_BUFF_PLOT_DESERT',                                0,            0                            );

INSERT INTO    Modifiers
        (ModifierId,                                        ModifierType,                                    OwnerRequirementSetId,                SubjectRequirementSetId,            RunOnce,    Permanent    )
VALUES    ('MODIFIER_ARABIA_UNIT_BUFF',        'MODIFIER_PLAYER_UNITS_GRANT_ABILITY',    NULL,        NULL,                                0,            0                            );

-----------------------------------------------
-- 3 ModifierArguments
-----------------------------------------------

INSERT INTO    ModifierArguments
        (ModifierId,                                            Name,                            Value                                    )
VALUES    ('MODIFIER_ARABIA_DESERT_BUFF',                            'Amount',                        5                                        );

INSERT INTO    ModifierArguments
        (ModifierId,                                            Name,                            Value                                    )
VALUES    ('MODIFIER_ARABIA_UNIT_BUFF',                            'AbilityType',                'ABILITY_ARABIA_DESERT_COMBAT'                );

---------------------------------------------------------------------------------------------------------------
-- 4 RequirementSets - This is the ID for the set of Requirements
---------------------------------------------------------------------------------------------------------------
INSERT INTO RequirementSets
        (RequirementSetId,                            RequirementSetType)
VALUES    ('ATTACK_BUFF_PLOT_DESERT',         'REQUIREMENTSET_TEST_ANY');
---------------------------------------------------------------------------------------------------------------
-- 5 RequirementSetRequirements - This is each Requirement
---------------------------------------------------------------------------------------------------------------
INSERT INTO RequirementSetRequirements
        (RequirementSetId,                            RequirementId)
VALUES    ('ATTACK_BUFF_PLOT_DESERT',            'PLOT_IS_DESERT_OR_DESERT_HILLS_REQUIREMENT');
---------------------------------------------------------------------------------------------------------------
-- 6 UnitAbility --
---------------------------------------------------------------------------------------------------------------
INSERT INTO    Types
        (Type,                                            Kind            )
 VALUES    ('ABILITY_ARABIA_DESERT_COMBAT',            'KIND_ABILITY'        );
 
 INSERT INTO    TypeTags
        (Type,                                            Tag            )
 VALUES    ('ABILITY_ARABIA_DESERT_COMBAT',    'CLASS_ALL_COMBAT_UNITS'    );
 
  INSERT INTO    UnitAbilities
        (UnitAbilityType,                            Inactive            )
 VALUES    ('ABILITY_ARABIA_DESERT_COMBAT',                1                );   

INSERT INTO UnitAbilityModifiers (UnitAbilityType, ModifierID) ('ABILITY_ARABIA_DESERT_COMBAT', 'MODIFIER_ARABIA_DESERT_BUFF');
 
@LeeS
Database.log has this error
[3630314.022] [Gameplay] ERROR: near "(": syntax error
I am not sure where to find it.

I attached the GameEffects.log

This is so close to being a functional mod, I am sure I only missed something in the middle, but I did everything else.
 

Attachments

  • GameEffects.zip
    650.1 KB · Views: 96
PLOT_IS_DESERT_OR_DESERT_HILLS_REQUIREMENT is not actually fully defined or even used anymore by Firaxis.

The only appearance of it in the game's files is here
Code:
		<Row>
			<RequirementId>PLOT_IS_DESERT_OR_DESERT_HILLS_REQUIREMENT</RequirementId>
			<RequirementType>REQUIREMENT_REQUIREMENTSET_IS_MET</RequirementType>
		</Row>
But no usage of it is made in <RequirementSetRequirements> or anywhere else.

These two RequirementId's do already exist and are properly defined by firaxis although both are not added to a single RequirementSet
Code:
RequirementId	RequirementType
REQUIRES_PLOT_HAS_DESERT	REQUIREMENT_PLOT_TERRAIN_TYPE_MATCHES
REQUIRES_PLOT_HAS_DESERT_HILLS	REQUIREMENT_PLOT_TERRAIN_TYPE_MATCHES
So
Code:
INSERT INTO RequirementSetRequirements
        (RequirementSetId,                            RequirementId)
VALUES    ('ATTACK_BUFF_PLOT_DESERT',            'REQUIRES_PLOT_HAS_DESERT'),
                 ('ATTACK_BUFF_PLOT_DESERT',             'REQUIRES_PLOT_HAS_DESERT_HILLS');
You should not really need to alter anything else since Firaxis has already correctly defined these two RequirementIds.

Poop. Disregard for a moment: REQUIRES_PLOT_HAS_DESERT_HILLS is Not defined properly by Firaxis.

Code:
INSERT INTO RequirementSetRequirements
        (RequirementSetId,		RequirementId)
VALUES  ('ATTACK_BUFF_PLOT_DESERT',	'REQUIRES_PLOT_HAS_DESERT'),
	('ATTACK_BUFF_PLOT_DESERT',	'REQUIRES_PLOT_HAS_DESERT_HILLS');

INSERT OR REPLACE INTO Requirements (RequirementId, RequirementType)
VALUES	('REQUIRES_PLOT_HAS_DESERT_HILLS', 'REQUIREMENT_PLOT_TERRAIN_TYPE_MATCHES');

INSERT OR REPLACE INTO RequirementArguments (RequirementId, Name, Value)
VALUES	('REQUIRES_PLOT_HAS_DESERT_HILLS', 'TerrainType', 'TERRAIN_DESERT_HILLS');

And the reason I went silent was I had too much to do this weekend to do much on the Forum, and then on Monday there was the Derecho Storm in Illinois before I ever got home from work. I only got my internet back about an hour ago.
 
Last edited:
Hmmm. I looked again. I was correct the first time. Don't know why I started to question myseslf. REQUIRES_PLOT_HAS_DESERT_HILLS is fully and correctly defined by Firaxis, though I am not sure they are using it anymore. Either version of the code updates I gave you ought to work.
 
Hmmm. I looked again. I was correct the first time. Don't know why I started to question myseslf. REQUIRES_PLOT_HAS_DESERT_HILLS is fully and correctly defined by Firaxis, though I am not sure they are using it anymore. Either version of the code updates I gave you ought to work.

Hello.
Thanks for you response. I actually managed to make it work for a lot less effort, well, that actually took more effort into understanding how modifiers work, but the code itself was finished in less than 6 lines.
I simply used MODIFIER_PLAYER_UNITS_ADJUST_COMBAT_STRENGTH (same modifier used for Ix Mutal Ajaw buff), and I only had to change the requirement set to include desert/desert hills plot, which you are right, it is not present in the game, so I had to define it as follows:

Code:
INSERT INTO RequirementSets (RequirementSetId, RequirementSetType) VALUES ('DESERT_ADVANTAGE_SET', 'REQUIREMENTSET_TEST_ANY');
INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId) VALUES ('DESERT_ADVANTAGE_SET', 'REQUIRES_PLOT_HAS_DESERT'), ('DESERT_ADVANTAGE_SET', 'REQUIRES_PLOT_HAS_DESERT_HILLS');
 
Top Bottom