Custom Civ Abilities

loppnessmonsta

Chieftain
Joined
Nov 27, 2013
Messages
19
So I've been working on a custom civ using Keniisu's tutorial and template.

It's been working reasonably well. The civ shows up, the basic stuff I'm just ripping directly from existing civs works fine (Great Wall, Crouching Tigers, etc). Having some trouble sorting out civ icons, but that's small potatoes.

What I'm really struggling with is creating anything new.

Here's what I've got for my unique ability.
Code:
-----------------------------------------------
-- Types
-----------------------------------------------

INSERT INTO   Types
       (Type,                                           Kind           )
VALUES   ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',           'KIND_TRAIT'   );



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

INSERT INTO   Traits  
       (TraitType,                               Name,                                           Description                                           )
VALUES   ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'LOC_TRAIT_CIVILIZATION_LOPP_HADAKKA_UA_NAME',   'LOC_TRAIT_CIVILIZATION_LOPP_HADAKKA_UA_DESCRIPTION'   );
      
-----------------------------------------------
-- CivilizationTraits
-----------------------------------------------

INSERT INTO   CivilizationTraits
       (CivilizationType,               TraitType                                           )
VALUES   ('CIVILIZATION_LOPP_HADAKKA',   'TRAIT_CIVILIZATION_LOPP_HADAKKA_UA'               ),
       ('CIVILIZATION_LOPP_HADAKKA',   'TRAIT_CIVILIZATION_UNIT_CHINESE_CROUCHING_TIGER'   ),
       ('CIVILIZATION_LOPP_HADAKKA',   'TRAIT_CIVILIZATION_IMPROVEMENT_GREAT_WALL'           );

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

INSERT INTO   TraitModifiers  
       (TraitType,                               ModifierId                                       )
VALUES  
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_CULTURE_BOMB_TRIGGER_FORT'       ),
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_MISC_FORT_YIELDS'               ),
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_CULTURE_BOMB_TRIGGER_ENCAMPMENT'   ),
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_WORK_GRASS_MOUNTAIN'               ),
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_WORK_PLAINS_MOUNTAIN'           ),
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_WORK_DESERT_MOUNTAIN'           ),
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_WORK_TUNDRA_MOUNTAIN'           ),
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_WORK_SNOW_MOUNTAIN'               ),
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_MOUNTAIN_YIELD_BASE'               ), -- Mountain Base Yield
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_MISC_GRASS_MOUNTAIN'               ), -- Mountain Adjacency
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_MISC_PLAINS_MOUNTAIN'           ), -- Mountain Adjacency
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_MISC_DESERT_MOUNTAIN'           ), -- Mountain Adjacency
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_MISC_TUNDRA_MOUNTAIN'           ), -- Mountain Adjacency
       ('TRAIT_CIVILIZATION_LOPP_HADAKKA_UA',   'TRAIT_MISC_SNOW_MOUNTAIN'               ), -- Mountain Adjacency


-----------------------------------------------
-- EmergencyBuffs
-----------------------------------------------

-----------------------------------------------
-- EmergencyRewards
-----------------------------------------------

-----------------------------------------------
-- DynamicModifiers
-----------------------------------------------

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

INSERT INTO   Modifiers
       (ModifierId,                                       ModifierType,                                   OwnerRequirementSetId,               SubjectRequirementSetId,           RunOnce,   Permanent   )
VALUES  
       ('TRAIT_MOUNTAIN_YIELD_BASE',                       'MODIFIER_PLAYER_ADJUST_PLOT_YIELD',           NULL,                               'REQUIREMENTS_PLOT_IS_MOUNTAIN',   0,           0           ),
       ('TRAIT_MISC_GRASS_MOUNTAIN','MODIFIER_PLAYER_CITIES_ADJUST_TERRAIN_YIELD_FROM_ADJACENT_IMPROVEMENTS',NULL,                               NULL,                               0,           0           ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN','MODIFIER_PLAYER_CITIES_ADJUST_TERRAIN_YIELD_FROM_ADJACENT_IMPROVEMENTS',NULL,                           NULL,                               0,           0           ),
       ('TRAIT_MISC_DESERT_MOUNTAIN','MODIFIER_PLAYER_CITIES_ADJUST_TERRAIN_YIELD_FROM_ADJACENT_IMPROVEMENTS',NULL,                           NULL,                               0,           0           ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN','MODIFIER_PLAYER_CITIES_ADJUST_TERRAIN_YIELD_FROM_ADJACENT_IMPROVEMENTS',NULL,                           NULL,                               0,           0           ),
       ('TRAIT_MISC_SNOW_MOUNTAIN','MODIFIER_PLAYER_CITIES_ADJUST_TERRAIN_YIELD_FROM_ADJACENT_IMPROVEMENTS',NULL,                               NULL,                               0,           0           ),
       ('TRAIT_MISC_FORT_YIELDS',                           'MODIFIER_PLAYER_ADJUST_PLOT_YIELD',           NULL,                           'REQSET_LOPP_HADAKKA_UA_PLOT_HAS_FORT', 0,           0           );


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

INSERT INTO   ModifierArguments
       (ModifierId,                                           Name,                           Value                                   )
VALUES  
       -- Culture Bomb Buff
       ('TRAIT_CULTURE_BOMB_TRIGGER_FORT',                       'ImprovementType',               'IMPROVEMENT_ROMAN_FORT'               ),
       -- Fort Base Yields
       ('TRAIT_MISC_FORT_YIELDS',                               'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_FORT_YIELDS',                               'YieldType',                   'YIELD_SCIENCE'                           ),
       ('TRAIT_MISC_FORT_YIELDS',                               'Amount',                       2                                       ),
       ('TRAIT_MISC_FORT_YIELDS',                               'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_FORT_YIELDS',                               'YieldType',                   'YIELD_PRODUCTION'                       ),
       ('TRAIT_MISC_FORT_YIELDS',                               'Amount',                       2                                       ),
       -- Mountain Base Yield
       ('TRAIT_MOUNTAIN_YIELD_BASE',                           'YieldType',                   'YIELD_PRODUCTION'                       ),
       ('TRAIT_MOUNTAIN_YIELD_BASE',                           'Amount',                       2                                       ),
       ('TRAIT_MOUNTAIN_YIELD_BASE',                           'YieldType',                   'YIELD_FOOD'                           ),
       ('TRAIT_MOUNTAIN_YIELD_BASE',                           'Amount',                       2                                       ),
       -- Mountain Adjacencies
       -- Great Wall
       -- Gold
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'TerrainType',                   'TERRAIN_GRASS_MOUNTAIN'               ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_GREAT_WALL'               ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'YieldType',                   'YIELD_GOLD'                           ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'TerrainType',                   'TERRAIN_PLAINS_MOUNTAIN'               ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_GREAT_WALL'               ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'YieldType',                   'YIELD_GOLD'                           ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'TerrainType',                   'TERRAIN_DESERT_MOUNTAIN'               ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_GREAT_WALL'               ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'YieldType',                   'YIELD_GOLD'                           ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'TerrainType',                   'TERRAIN_TUNDRA_MOUNTAIN'               ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_GREAT_WALL'               ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'YieldType',                   'YIELD_GOLD'                           ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'TerrainType',                   'TERRAIN_SNOW_MOUNTAIN'                   ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_GREAT_WALL'               ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'YieldType',                   'YIELD_GOLD'                           ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'Amount',                       2                                       ),
       -- Faith
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'TerrainType',                   'TERRAIN_GRASS_MOUNTAIN'               ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_GREAT_WALL'               ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'YieldType',                   'YIELD_FAITH'                           ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'TerrainType',                   'TERRAIN_PLAINS_MOUNTAIN'               ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_GREAT_WALL'               ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'YieldType',                   'YIELD_FAITH'                           ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'TerrainType',                   'TERRAIN_DESERT_MOUNTAIN'               ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_GREAT_WALL'               ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'YieldType',                   'YIELD_FAITH'                           ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'TerrainType',                   'TERRAIN_TUNDRA_MOUNTAIN'               ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_GREAT_WALL'               ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'YieldType',                   'YIELD_FAITH'                           ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'TerrainType',                   'TERRAIN_SNOW_MOUNTAIN'                   ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_GREAT_WALL'               ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'YieldType',                   'YIELD_FAITH'                           ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'Amount',                       2                                       ),
       -- Fort
       -- Gold
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'TerrainType',                   'TERRAIN_GRASS_MOUNTAIN'               ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'YieldType',                   'YIELD_GOLD'                           ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'TerrainType',                   'TERRAIN_PLAINS_MOUNTAIN'               ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'YieldType',                   'YIELD_GOLD'                           ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'TerrainType',                   'TERRAIN_DESERT_MOUNTAIN'               ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'YieldType',                   'YIELD_GOLD'                           ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'TerrainType',                   'TERRAIN_TUNDRA_MOUNTAIN'               ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'YieldType',                   'YIELD_GOLD'                           ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'TerrainType',                   'TERRAIN_SNOW_MOUNTAIN'                   ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'YieldType',                   'YIELD_GOLD'                           ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'Amount',                       2                                       ),
       -- Faith
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'TerrainType',                   'TERRAIN_GRASS_MOUNTAIN'               ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'YieldType',                   'YIELD_FAITH'                           ),
       ('TRAIT_MISC_GRASS_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'TerrainType',                   'TERRAIN_PLAINS_MOUNTAIN'               ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'YieldType',                   'YIELD_FAITH'                           ),
       ('TRAIT_MISC_PLAINS_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'TerrainType',                   'TERRAIN_DESERT_MOUNTAIN'               ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'YieldType',                   'YIELD_FAITH'                           ),
       ('TRAIT_MISC_DESERT_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'TerrainType',                   'TERRAIN_TUNDRA_MOUNTAIN'               ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'YieldType',                   'YIELD_FAITH'                           ),
       ('TRAIT_MISC_TUNDRA_MOUNTAIN',                           'Amount',                       2                                       ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'TerrainType',                   'TERRAIN_SNOW_MOUNTAIN'                   ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'ImprovementType',               'IMPROVEMENT_FORT'                       ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'YieldType',                   'YIELD_FAITH'                           ),
       ('TRAIT_MISC_SNOW_MOUNTAIN',                           'Amount',                       2                                       );


-----------------------------------------------
-- RequirementSets
-----------------------------------------------

INSERT INTO RequirementSets
        (RequirementSetId,                           RequirementSetType           )
VALUES  
       ('REQSET_LOPP_HADAKKA_UA_PLOT_HAS_FORT',   'REQUIREMENTSET_TEST_ALL'   );


-----------------------------------------------
-- RequirementSetRequirements
-----------------------------------------------

INSERT INTO RequirementSetRequirements
        (RequirementSetId,                           RequirementId                   )
VALUES  
       ('REQSET_LOPP_HADAKKA_UA_PLOT_HAS_FORT',   'REQ_PLOT_HAS_FORT'               );


-----------------------------------------------
-- Requirements
-----------------------------------------------

INSERT INTO Requirements
       (RequirementId,                       RequirementType,                                   Inverse   )
VALUES  
       ('REQ_PLOT_HAS_FORT',               'REQUIREMENT_PLOT_IMPROVEMENT_TYPE_MATCHES',       0       );




-----------------------------------------------
-- RequirementArguments
-----------------------------------------------

INSERT INTO RequirementArguments
       (RequirementId,                   Name,                   Value                           )
VALUES   ('REQ_PLOT_HAS_FORT',           'ImprovementType',       'IMPROVEMENT_FORT'               );

What I'm trying to do pulls heavily from Poland and Inca. Workable mountains, adjacencies from forts and walls. Forts and Roman Forts culture bomb, with forts actually having some yields.

Adding the wall and crouching tiger to the civ works just fine. Everything else just fails. I feel like there's some important keystone that just needs to be set in place to make the rest work. What am I missing?
 
You have multiple violations of Uniqueness Constraints within the code you've posted. An example
Code:
       ('TRAIT_MOUNTAIN_YIELD_BASE',                           'YieldType',                   'YIELD_PRODUCTION'                       ),
       ('TRAIT_MOUNTAIN_YIELD_BASE',                           'Amount',                       2                                       ),
       ('TRAIT_MOUNTAIN_YIELD_BASE',                           'YieldType',                   'YIELD_FOOD'                           ),
       ('TRAIT_MOUNTAIN_YIELD_BASE',                           'Amount',                       2                                       ),
The combination of argument data for columns ModifierId and Name have been repeated in the snippeted chunk of code. This is not allowed. Each row added to the table must have a unique combination of argument data for columns ModifierId and Name to all other rows added to the same table. The game ceases to read and implement anything further from within the same file once it encounters the first of these violations of SQL database rules.

Pretty much everything within table ModifierArguments and onward in your quoted code will be ignored. Your fatal syntax erros for Uniqueness Constraints start within this table at the "-- Fort Base Yields" lines.
 
No, nothing in logs.

Thank you, LeeS. That makes sense. Sounds like I need to go through and separate out each individual yield into its own ModifierID. Excellent! I've been stuck on this for a while. Thank you again!

Edit: Oh, I suppose this applies to the tables I'm injecting stuff into, as well. So I need to make a culture bomb trigger for Roman Forts separately, rather than trying to sneak it in.
 
Last edited:
Top Bottom