Tuning Which Units Get a Combat Bonus

isau

Deity
Joined
Jan 15, 2007
Messages
3,071
I'm trying to tune a broke feature in my Combined Tweaks mod. The intent is the following:
  • For each Aqueduct owned, add +2 combat to a specific unit (the Sangha Monk, aka UNIT_QUO_INDONESIA_WARRIOR_MONK)
And the in-game screen for some clarity (I realize the internal name of the unit is Indonesia, because thats who I originally created it for, altho it is being used here by the Khmer--that's not part of the issue. Everything about the unit appears to work fine but for the global bonus.)

upload_2017-10-25_11-11-22.png



Issue: I can make it work for all units, by removing QUO_REQ_KHMER_UNIT_IS_WARRIOR_MONK but can't figure out how to target the bonus at just one unit type. Is it possible?


Here's the code:

Code:
-- Increase the Strength of all Sangha Monks for each Aqueduct
INSERT INTO Requirements
        (RequirementId,         RequirementType,     Likeliness,    Inverse,     Triggered)
VALUES    ('QUO_REQ_KHMER_CITY_HAS_AQUEDUCT',         'REQUIREMENT_CITY_HAS_DISTRICT',    0,0,0) ,
        ('QUO_REQ_KHMER_UNIT_IS_WARRIOR_MONK',     'REQUIREMENT_UNIT_TYPE_MATCHES',    0,0,0) ;


INSERT INTO RequirementArguments
        (RequirementId,            Name,             Type,             Value,                 Extra,     SecondExtra)
VALUES     ('QUO_REQ_KHMER_CITY_HAS_AQUEDUCT',    'DistrictType',        'ARGTYPE_IDENTITY',    'DISTRICT_AQUEDUCT',    NULL,    NULL     ) ,
        ('QUO_REQ_KHMER_UNIT_IS_WARRIOR_MONK',    'UnitType',        'ARGTYPE_IDENTITY',        'UNIT_QUO_INDONESIA_WARRIOR_MONK',    NULL,    NULL     ) ;


INSERT INTO RequirementSets
    (RequirementSetId,         RequirementSetType)
VALUES     ('QUO_REQSET_KHMER_STRENGTH_UP',     'REQUIREMENTSET_TEST_ALL') ,
        ('QUO_REQSET_KHMER_UNIT_IS_WARRIOR_MONK',     'REQUIREMENTSET_TEST_ANY') ;

INSERT INTO RequirementSetRequirements
        (RequirementSetId,    RequirementId)
VALUES     ('QUO_REQSET_KHMER_STRENGTH_UP',     'QUO_REQ_KHMER_CITY_HAS_AQUEDUCT') ,
        ('QUO_REQSET_KHMER_UNIT_IS_WARRIOR_MONK',     'QUO_REQ_KHMER_UNIT_IS_WARRIOR_MONK') ;


INSERT INTO Modifiers
        (ModifierId,     ModifierType,     RunOnce, Permanent, OwnerRequirementSetId, SubjectRequirementSetId)
VALUES    ('QUO_KHMER_WARRIOR_MONK_STRENGTH', 'MODIFIER_PLAYER_UNITS_ADJUST_COMBAT_STRENGTH', 0, 0, NULL, 'QUO_REQSET_KHMER_UNIT_IS_WARRIOR_MONK') ,
        ('QUO_KHMER_WARRIOR_MONK_STRENGTH_PLAYER', 'MODIFIER_PLAYER_CITIES_ATTACH_MODIFIER', 0, 0, NULL,     'QUO_REQSET_KHMER_STRENGTH_UP') ;


INSERT INTO ModifierArguments
    (ModifierId,             Name,         Type,             Value,                     Extra,     SecondExtra)
VALUES    ('QUO_KHMER_WARRIOR_MONK_STRENGTH',     'Amount',     'ARGTYPE_IDENTITY',     '2',        NULL,     NULL) ,
        ('QUO_KHMER_WARRIOR_MONK_STRENGTH_PLAYER',         'ModifierId',         'ARGTYPE_IDENTITY',     'QUO_KHMER_WARRIOR_MONK_STRENGTH',    NULL,     NULL) ;


INSERT INTO TraitModifiers
    (TraitType,         ModifierId)
SELECT 'TRAIT_CIVILIZATION_KHMER_BARAYS',    'QUO_KHMER_WARRIOR_MONK_STRENGTH_PLAYER'
FROM Civilizations
WHERE Civilizations.CivilizationType='CIVILIZATION_KHMER' ;



INSERT INTO ModifierStrings
    (ModifierId,         Context, Text)
VALUES    ('QUO_KHMER_WARRIOR_MONK_STRENGTH', 'Preview', 'QUO_LOC_KHMER_GLOBAL_COMBAT_DESCRIPTION') ;
 
For some added clarity: everything up to the modifier QUO_KHMER_WARRIOR_MONK_STRENGTH works. The Player modifier is correctly broadcast from each city with an Aqueduct. I just can't get
MODIFIER_PLAYER_UNITS_ADJUST_COMBAT_STRENGTH to target a specific type of unit versus all units.
 
Update: with some toying, I managed to fix this by making two layers of broadcast. The city broadcasts to the player, then the player broadcasts to the unit. Adding this extra layer allows me to put a SubjectRequirementSetId at the second level of the broadcast, and only cause it to broadcast if the unit matches the type required.

I also changed it from looking for a specific unit type to a tag.

Code:
-- Increase the Strength of all Sangha Monks for each Aqueduct
INSERT INTO Requirements
        (RequirementId,         RequirementType,     Likeliness,    Inverse,     Triggered)
VALUES    ('QUO_REQ_KHMER_CITY_HAS_AQUEDUCT',         'REQUIREMENT_CITY_HAS_DISTRICT',    0,0,0) ,
        ('QUO_REQ_KHMER_UNIT_IS_WARRIOR_MONK',     'REQUIREMENT_UNIT_TAG_MATCHES',    0,0,0) ;


INSERT INTO RequirementArguments
        (RequirementId,            Name,             Type,             Value,                 Extra,     SecondExtra)
VALUES     ('QUO_REQ_KHMER_CITY_HAS_AQUEDUCT',    'DistrictType',        'ARGTYPE_IDENTITY',    'DISTRICT_AQUEDUCT',    NULL,    NULL     ) ,
        ('QUO_REQ_KHMER_UNIT_IS_WARRIOR_MONK',    'Tag',        'ARGTYPE_IDENTITY',        'QUO_CLASS_SANGHA_MONK',    NULL,    NULL     ) ;


INSERT INTO RequirementSets
    (RequirementSetId,         RequirementSetType)
VALUES     ('QUO_REQSET_KHMER_STRENGTH_UP',     'REQUIREMENTSET_TEST_ALL') ,
        ('QUO_REQSET_KHMER_UNIT_IS_WARRIOR_MONK',     'REQUIREMENTSET_TEST_ANY') ;

INSERT INTO RequirementSetRequirements
        (RequirementSetId,    RequirementId)
VALUES     ('QUO_REQSET_KHMER_STRENGTH_UP',     'QUO_REQ_KHMER_CITY_HAS_AQUEDUCT') ,
        ('QUO_REQSET_KHMER_UNIT_IS_WARRIOR_MONK',     'QUO_REQ_KHMER_UNIT_IS_WARRIOR_MONK') ;


INSERT INTO Modifiers
        (ModifierId,     ModifierType,     RunOnce, Permanent, OwnerRequirementSetId, SubjectRequirementSetId)
VALUES    ('QUO_KHMER_WARRIOR_MONK_STRENGTH', 'MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH', 0, 0, NULL, NULL) ,
        ('QUO_KHMER_WARRIOR_MONK_STRENGTH_CITY', 'MODIFIER_PLAYER_CITIES_ATTACH_MODIFIER', 0, 0, NULL,     'QUO_REQSET_KHMER_STRENGTH_UP') ,
        ('QUO_KHMER_WARRIOR_MONK_STRENGTH_PLAYER', 'MODIFIER_PLAYER_UNITS_ATTACH_MODIFIER', 0, 0, NULL, 'QUO_REQSET_KHMER_UNIT_IS_WARRIOR_MONK') ;


INSERT INTO ModifierArguments
    (ModifierId,             Name,         Type,             Value,                     Extra,     SecondExtra)
VALUES    ('QUO_KHMER_WARRIOR_MONK_STRENGTH',     'Amount',     'ARGTYPE_IDENTITY',     '2',        NULL,     NULL) ,
        ('QUO_KHMER_WARRIOR_MONK_STRENGTH_CITY',         'ModifierId',         'ARGTYPE_IDENTITY',     'QUO_KHMER_WARRIOR_MONK_STRENGTH_PLAYER',    NULL,     NULL) ,
        ('QUO_KHMER_WARRIOR_MONK_STRENGTH_PLAYER',         'ModifierId',         'ARGTYPE_IDENTITY',     'QUO_KHMER_WARRIOR_MONK_STRENGTH',    NULL,     NULL)  ;


INSERT INTO TraitModifiers
    (TraitType,         ModifierId)
SELECT 'TRAIT_CIVILIZATION_KHMER_BARAYS',    'QUO_KHMER_WARRIOR_MONK_STRENGTH_CITY'
FROM Civilizations
WHERE Civilizations.CivilizationType='CIVILIZATION_KHMER' ;



INSERT INTO ModifierStrings
    (ModifierId,         Context, Text)
VALUES    ('QUO_KHMER_WARRIOR_MONK_STRENGTH', 'Preview', 'QUO_LOC_KHMER_GLOBAL_COMBAT_DESCRIPTION') ;
 
Back
Top Bottom