Unit and Leader Ability Help. (Adapting NFP Civs)

Joined
Feb 24, 2012
Messages
666
Location
Kentucky
So, I'm in the process of creating my first custom civiliztion. I have the Civ and Building abilty done right (I think). But I'm a little confused on how to code their Unit and Leader abilities. I was wondering if anyone would help me figure it out.

Unit Ability: Gains +2 Combat strength for each adjacent friendly unit (Like Ambiorix but applying only to that civilization's units.)

Leader ability: Can expend a great person to absorb a city into their empire. (Like one of the new great merchants, but giving that ability to all grat people earned by this leader... and taking all of the charges for balance reasons.)

Thanks in advnce!
 
For Unit Ability unfortunately there isn't any Effect that determines friendly Unit (there is one for friendly territory and city), nor there is an object in lua. You could try REQUIREMENT_PLOT_ADJACENT_FRIENDLY_UNIT_TAG_MATCHES or REQUIREMENT_PLOT_ADJACENT_FRIENDLY_UNIT_TYPE_MATCHES, but that would not apply for every friendly unit.
I did make Unit Ability with type matches once that applied for Polish Hussar. Here is an example:
Code:
INSERT INTO Types (Type, Kind)
VALUES ('ABILITY_POLISH_HUSSAR_ADJACENCY_STRENGTH', 'KIND_ABILITY');

INSERT INTO Tags (Tag, Vocabulary)
VALUES ('CLASS_POLISH_HUSSAR', 'ABILITY_CLASS');

INSERT INTO TypeTags (Type, Tag)
VALUES ('UNIT_POLISH_HUSSAR', 'CLASS_POLISH_HUSSAR'),
       ('ABILITY_POLISH_HUSSAR_ADJACENCY_STRENGTH', 'CLASS_POLISH_HUSSAR');

INSERT INTO UnitAbilities (UnitAbilityType, Name, Description, Permanent)
VALUES ('ABILITY_POLISH_HUSSAR_ADJACENCY_STRENGTH', 'LOC_ABILITY_POLISH_HUSSAR_ADJACENCY_STRENGTH_NAME', 'LOC_ABILITY_POLISH_HUSSAR_ADJACENCY_STRENGTH_DESCRIPTION', 1);

INSERT INTO UnitAbilityModifiers (UnitAbilityType, ModifierId)
VALUES ('ABILITY_POLISH_HUSSAR_ADJACENCY_STRENGTH', 'POLISH_HUSSAR_ADJACENCY_STRENGTH');

INSERT INTO Modifiers (ModifierId, ModifierType)
VALUES ('POLISH_HUSSAR_ADJACENCY_STRENGTH', 'GRANT_STRENGTH_PER_ADJACENT_UNIT_TYPE');

INSERT INTO ModifierArguments (ModifierId, Name, Value)
VALUES ('POLISH_HUSSAR_ADJACENCY_STRENGTH', 'Amount', '20'),
       ('POLISH_HUSSAR_ADJACENCY_STRENGTH', 'UnitType', 'UNIT_POLISH_HUSSAR');

INSERT INTO ModifierStrings (ModifierId, Context, Text)
VALUES ('POLISH_HUSSAR_ADJACENCY_STRENGTH', 'Preview', 'LOC_ABILITY_POLISH_HUSSAR_ADJACENCY_STRENGTH_DESCRIPTION');

When it comes for Leader Ability, that Great Merchant only works on City States that You are a Suzerain of and u have to be within that City State borders to use that ability. I don't think it's possible to hook it to every Great Person.

EDIT:
When trying to use Ambiorix's ModifierType:MODIFIER_PLAYER_UNIT_ADJUST_COMBAT_FOR_NUMBER_NEIGHBORS with any restriction, not only this doesn't seem to work properly, it also changes the name on Unit tooltip for that combat bonus. This means it's not moddable x_X - this is only an object.

EDIT2:
I've managed to create something very similar to what You are looking for as Unit Ability using friendly tag. Example for Hammurabi:
Code:
INSERT INTO Types (Type, Kind)
VALUES ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'KIND_ABILITY'),
       ('TRAIT_LEADER_HAMMURABI_FRIENDLY_COMBAT_BONUS', 'KIND_TRAIT');

INSERT INTO LeaderTraits (LeaderType, TraitType)
VALUES ('LEADER_HAMMURABI', 'TRAIT_LEADER_HAMMURABI_FRIENDLY_COMBAT_BONUS');

INSERT INTO Traits (TraitType, Name, Description)
VALUES ('TRAIT_LEADER_HAMMURABI_FRIENDLY_COMBAT_BONUS', 'LOC_TRAIT_LEADER_HAMMURABI_FRIENDLY_COMBAT_BONUS_NAME', 'LOC_TRAIT_LEADER_HAMMURABI_FRIENDLY_COMBAT_BONUS_DESCRIPTION');

INSERT INTO TypeTags (Type, Tag)
VALUES ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'CLASS_MELEE'),
       ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'CLASS_RANGED'),
       ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'CLASS_ANTI_CAVALRY'),
       ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'CLASS_LIGHT_CAVALRY'),
       ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'CLASS_HEAVY_CAVALRY'),
       ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'CLASS_RECON'),
       ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'CLASS_SIEGE');

INSERT INTO TraitModifiers (TraitType, ModifierId)
VALUES ('TRAIT_LEADER_HAMMURABI_FRIENDLY_COMBAT_BONUS', 'TRAIT_FRIENDLY_COMBAT_BONUS');

INSERT INTO Modifiers (ModifierId, ModifierType, Permanent)
VALUES ('TRAIT_FRIENDLY_COMBAT_BONUS', 'MODIFIER_PLAYER_UNITS_GRANT_ABILITY', 1);

INSERT INTO Modifiers (ModifierId, ModifierType, OwnerRequirementSetId)
VALUES ('HAMMURABI_FRIENDLY_NEIGHBOR_MELEE_COMBAT_BONUS', 'MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH', 'ADJACENT_FRIENDLY_MELEE_TAG_MATCHES'),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_RANGED_COMBAT_BONUS', 'MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH', 'ADJACENT_FRIENDLY_RANGED_TAG_MATCHES'),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_ANTI_CAVALRY_COMBAT_BONUS', 'MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH', 'ADJACENT_FRIENDLY_ANTI_CAVALRY_TAG_MATCHES'),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_LIGHT_CAVALRY_COMBAT_BONUS', 'MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH', 'ADJACENT_FRIENDLY_LIGHT_CAVALRY_TAG_MATCHES'),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_HEAVY_CAVALRY_COMBAT_BONUS', 'MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH', 'ADJACENT_FRIENDLY_HEAVY_CAVALRY_TAG_MATCHES');

INSERT INTO ModifierArguments (ModifierId, Name, Value)
VALUES ('TRAIT_FRIENDLY_COMBAT_BONUS', 'AbilityType', 'ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS'),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_MELEE_COMBAT_BONUS', 'Amount', 2),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_RANGED_COMBAT_BONUS', 'Amount', 2),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_ANTI_CAVALRY_COMBAT_BONUS', 'Amount', 2),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_LIGHT_CAVALRY_COMBAT_BONUS', 'Amount', 2),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_HEAVY_CAVALRY_COMBAT_BONUS', 'Amount', 2);

INSERT INTO ModifierStrings (ModifierId, Context, Text)
VALUES ('HAMMURABI_FRIENDLY_NEIGHBOR_MELEE_COMBAT_BONUS', 'Preview', 'ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_MELEE_COMBAT_BONUS_DESCRIPTION'),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_RANGED_COMBAT_BONUS', 'Preview', 'ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_RANGED_COMBAT_BONUS_DESCRIPTION'),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_ANTI_CAVALRY_COMBAT_BONUS', 'Preview', 'ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_ANTI_CAVALRY_COMBAT_BONUS_DESCRIPTION'),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_LIGHT_CAVALRY_COMBAT_BONUS', 'Preview', 'ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_LIGHT_CAVALRY_COMBAT_BONUS_DESCRIPTION'),
       ('HAMMURABI_FRIENDLY_NEIGHBOR_HEAVY_CAVALRY_COMBAT_BONUS', 'Preview', 'ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_HEAVY_CAVALRY_COMBAT_BONUS_DESCRIPTION');

INSERT INTO UnitAbilities (UnitAbilityType, Name, Description, Permanent)
VALUES ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'LOC_ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS_NAME', 'LOC_ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS_DESCRIPTION', 1);

INSERT INTO UnitAbilityModifiers (UnitAbilityType, ModifierId)
VALUES ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'HAMMURABI_FRIENDLY_NEIGHBOR_MELEE_COMBAT_BONUS'),
       ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'HAMMURABI_FRIENDLY_NEIGHBOR_RANGED_COMBAT_BONUS'),
       ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'HAMMURABI_FRIENDLY_NEIGHBOR_ANTI_CAVALRY_COMBAT_BONUS'),
       ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'HAMMURABI_FRIENDLY_NEIGHBOR_LIGHT_CAVALRY_COMBAT_BONUS'),
       ('ABILITY_HAMMURABI_FRIENDLY_NEIGHBOR_COMBAT_BONUS', 'HAMMURABI_FRIENDLY_NEIGHBOR_HEAVY_CAVALRY_COMBAT_BONUS');

INSERT INTO RequirementSets (RequirementSetId, RequirementSetType)
VALUES ('ADJACENT_FRIENDLY_MELEE_TAG_MATCHES', 'REQUIREMENTSET_TEST_ALL'),
       ('ADJACENT_FRIENDLY_RANGED_TAG_MATCHES', 'REQUIREMENTSET_TEST_ALL'),
       ('ADJACENT_FRIENDLY_ANTI_CAVALRY_TAG_MATCHES', 'REQUIREMENTSET_TEST_ALL'),
       ('ADJACENT_FRIENDLY_LIGHT_CAVALRY_TAG_MATCHES', 'REQUIREMENTSET_TEST_ALL'),
       ('ADJACENT_FRIENDLY_HEAVY_CAVALRY_TAG_MATCHES', 'REQUIREMENTSET_TEST_ALL');

INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId)
VALUES ('ADJACENT_FRIENDLY_MELEE_TAG_MATCHES', 'FRIENDLY_MELEE_IS_ADJACENT_REQUIREMENT'),
       ('ADJACENT_FRIENDLY_RANGED_TAG_MATCHES', 'FRIENDLY_RANGED_IS_ADJACENT_REQUIREMENT'),
       ('ADJACENT_FRIENDLY_ANTI_CAVALRY_TAG_MATCHES', 'FRIENDLY_ANTI_CAVALRY_IS_ADJACENT_REQUIREMENT'),
       ('ADJACENT_FRIENDLY_LIGHT_CAVALRY_TAG_MATCHES', 'FRIENDLY_LIGHT_CAVALRY_IS_ADJACENT_REQUIREMENT'),
       ('ADJACENT_FRIENDLY_HEAVY_CAVALRY_TAG_MATCHES', 'FRIENDLY_HEAVY_CAVALRY_IS_ADJACENT_REQUIREMENT');

INSERT INTO Requirements (RequirementId, RequirementType)
VALUES ('FRIENDLY_MELEE_IS_ADJACENT_REQUIREMENT', 'REQUIREMENT_PLOT_ADJACENT_FRIENDLY_UNIT_TAG_MATCHES'),
       ('FRIENDLY_RANGED_IS_ADJACENT_REQUIREMENT', 'REQUIREMENT_PLOT_ADJACENT_FRIENDLY_UNIT_TAG_MATCHES'),
       ('FRIENDLY_ANTI_CAVALRY_IS_ADJACENT_REQUIREMENT', 'REQUIREMENT_PLOT_ADJACENT_FRIENDLY_UNIT_TAG_MATCHES'),
       ('FRIENDLY_LIGHT_CAVALRY_IS_ADJACENT_REQUIREMENT', 'REQUIREMENT_PLOT_ADJACENT_FRIENDLY_UNIT_TAG_MATCHES'),
       ('FRIENDLY_HEAVY_CAVALRY_IS_ADJACENT_REQUIREMENT', 'REQUIREMENT_PLOT_ADJACENT_FRIENDLY_UNIT_TAG_MATCHES');

INSERT INTO RequirementArguments (RequirementId, Name, Value)
VALUES ('FRIENDLY_MELEE_IS_ADJACENT_REQUIREMENT', 'Tag', 'CLASS_MELEE'),
       ('FRIENDLY_RANGED_IS_ADJACENT_REQUIREMENT', 'Tag', 'CLASS_RANGED'),
       ('FRIENDLY_ANTI_CAVALRY_IS_ADJACENT_REQUIREMENT', 'Tag', 'CLASS_ANTI_CAVALRY'),
       ('FRIENDLY_LIGHT_CAVALRY_IS_ADJACENT_REQUIREMENT', 'Tag', 'CLASS_LIGHT_CAVALRY'),
       ('FRIENDLY_HEAVY_CAVALRY_IS_ADJACENT_REQUIREMENT', 'Tag', 'CLASS_HEAVY_CAVALRY');

EDIT3:
Tweaked the code for Hussar, because You don't actually need any requirements while using GRANT_STRENGTH_PER_ADJACENT_UNIT_TYPE.
 
Last edited:
Back
Top Bottom