[Solved] Possible to attack loyalty other than Eleanor's Relics?

heyitsjoebob

Chieftain
Joined
Nov 17, 2013
Messages
12
I'm trying to create a civilization that's main way of expansion is by utilizing loyalty to disrupt nearby foreign cities. Eventually I'd like to tie the loyalty "attacks" to a district or wonder that can be placed more than once per city (so there's a balanced city investment), but for now I'm just trying to apply it to a builder improvement.

I've tried using all of the loyalty and identity functions I could find. I'm able to add to my city's positive pressure, and I'm able to totally bomb my own loyalty with my improvements, but I can't figure out a way to push a negative to foreign cities, nor have I been able to find a published mod that was doing something similar.

A few searches have come up with others asking similar questions, but nothing showing a solution. Anyone know a way to do what I'm attempting?
 
What you probably want is to attach a loyalty penalty to an enemy city using a modifier type like "MODIFIER_ALL_CITIES_ATTACH_MODIFIER". This way, you can make a modifier that will decrease a city's loyalty, then attach that modifier to any city that you want. For example, you could give an improvement a modifier that will cause all foreign cities within 10 tiles to lose loyalty per turn. Does that make sense, or would an example help?
 
There doesn't seem to be any way to set a negative value for adjusting Loyalty Per Turn for a city. Everything in the Effects and Modifiers is a positive value other than the Eleanor Relics things which is specific and tied directly to that specific Effect-Type to Nearby Relics.

All you can do is create more Loyalty Pressure stemming from your own cities.

lua scripts do allow a city function called
Code:
City:ChangeLoyalty(iAmount)
But I've not experimented with it so don't know if the iAmount argument will successfully reduce loyalty in a city.

The Black Death Scenario uses the lua function but only with positive values so it isn't helpful on whether a negative can be used as the argument.
 
Last edited:
It's definitely possible to make a modifier that causes a city's loyalty to decrease. In fact, I just remembered this mod I had been working on that causes city states to decrease the loyalty of nearby cities, or increase the loyalty of the suzerain's cities. This mod isn't complete yet, but it works and it should be a good example of how to implement something like this:

Code:
INSERT INTO DistrictModifiers (DistrictType, ModifierId) VALUES  
    ('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_1_ATTACH'),
    --('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_2_ATTACH'),
    ('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_3_ATTACH'),
    --('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_4_ATTACH'),
    ('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_5_ATTACH'),
    --('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_6_ATTACH'),
    ('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_7_ATTACH'),
    ('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_-1_ATTACH'),
    --('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_-2_ATTACH'),
    ('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_-3_ATTACH'),
    --('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_-4_ATTACH'),
    ('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_-5_ATTACH'),
    --('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_-6_ATTACH'),
    ('DISTRICT_CITY_CENTER','MODIFIER_CSL_LOYALTY_-7_ATTACH');
   
INSERT INTO Modifiers (ModifierId, ModifierType, SubjectRequirementSetId, OwnerRequirementSetId) VALUES  
    ('MODIFIER_CSL_LOYALTY_1_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_10', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_2_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_9', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_3_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_8', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_4_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_7', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_5_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_6', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_6_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_5', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_7_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_4', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_-1_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_10', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_-2_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_9', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_-3_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_8', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_-4_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_7', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_-5_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_6', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_-6_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_5', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_-7_ATTACH', 'MODIFIER_ALL_CITIES_ATTACH_MODIFIER', 'REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_4', 'PLAYER_IS_MINOR'),
    ('MODIFIER_CSL_LOYALTY_1', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_2', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_3', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_4', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_5', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_6', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_7', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_-1', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_-2', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_-3', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_-4', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_-5', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_-6', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL),
    ('MODIFIER_CSL_LOYALTY_-7', 'MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN', NULL, NULL);
   
INSERT INTO ModifierArguments (ModifierId, Name, Value) VALUES  
    ('MODIFIER_CSL_LOYALTY_1_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_1'),
    ('MODIFIER_CSL_LOYALTY_2_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_2'),
    ('MODIFIER_CSL_LOYALTY_3_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_3'),
    ('MODIFIER_CSL_LOYALTY_4_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_4'),
    ('MODIFIER_CSL_LOYALTY_5_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_5'),
    ('MODIFIER_CSL_LOYALTY_6_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_6'),
    ('MODIFIER_CSL_LOYALTY_7_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_7'),
    ('MODIFIER_CSL_LOYALTY_-1_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_-1'),
    ('MODIFIER_CSL_LOYALTY_-2_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_-2'),
    ('MODIFIER_CSL_LOYALTY_-3_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_-3'),
    ('MODIFIER_CSL_LOYALTY_-4_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_-4'),
    ('MODIFIER_CSL_LOYALTY_-5_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_-5'),
    ('MODIFIER_CSL_LOYALTY_-6_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_-6'),
    ('MODIFIER_CSL_LOYALTY_-7_ATTACH', 'ModifierId', 'MODIFIER_CSL_LOYALTY_-7'),
    ('MODIFIER_CSL_LOYALTY_1', 'Amount', '1'),
    ('MODIFIER_CSL_LOYALTY_2', 'Amount', '2'),
    ('MODIFIER_CSL_LOYALTY_3', 'Amount', '2'),
    ('MODIFIER_CSL_LOYALTY_4', 'Amount', '4'),
    ('MODIFIER_CSL_LOYALTY_5', 'Amount', '3'),
    ('MODIFIER_CSL_LOYALTY_6', 'Amount', '6'),
    ('MODIFIER_CSL_LOYALTY_7', 'Amount', '4'),
    ('MODIFIER_CSL_LOYALTY_-1', 'Amount', '-1'),
    ('MODIFIER_CSL_LOYALTY_-2', 'Amount', '-2'),
    ('MODIFIER_CSL_LOYALTY_-3', 'Amount', '-2'),
    ('MODIFIER_CSL_LOYALTY_-4', 'Amount', '-4'),
    ('MODIFIER_CSL_LOYALTY_-5', 'Amount', '-3'),
    ('MODIFIER_CSL_LOYALTY_-6', 'Amount', '-6'),
    ('MODIFIER_CSL_LOYALTY_-7', 'Amount', '-4');
   
INSERT INTO RequirementSets (RequirementSetId, RequirementSetType) VALUES  
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_10', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_9', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_8', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_7', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_6', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_5', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_4', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_10', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_9', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_8', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_7', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_6', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_5', 'REQUIREMENTSET_TEST_ALL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_4', 'REQUIREMENTSET_TEST_ALL');
   
INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId) VALUES  
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_10', 'REQUIRES_PLAYER_IS_SUZERAIN'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_9', 'REQUIRES_PLAYER_IS_SUZERAIN'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_8', 'REQUIRES_PLAYER_IS_SUZERAIN'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_7', 'REQUIRES_PLAYER_IS_SUZERAIN'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_6', 'REQUIRES_PLAYER_IS_SUZERAIN'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_5', 'REQUIRES_PLAYER_IS_SUZERAIN'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_4', 'REQUIRES_PLAYER_IS_SUZERAIN'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_10', 'REQUIRES_PLAYER_IS_NOT_SUZERAIN'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_9', 'REQUIRES_PLAYER_IS_NOT_SUZERAIN'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_8', 'REQUIRES_PLAYER_IS_NOT_SUZERAIN'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_7', 'REQUIRES_PLAYER_IS_NOT_SUZERAIN'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_6', 'REQUIRES_PLAYER_IS_NOT_SUZERAIN'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_5', 'REQUIRES_PLAYER_IS_NOT_SUZERAIN'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_4', 'REQUIRES_PLAYER_IS_NOT_SUZERAIN'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_10', 'REQUIRES_PLAYER_IS_MAJOR_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_9', 'REQUIRES_PLAYER_IS_MAJOR_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_8', 'REQUIRES_PLAYER_IS_MAJOR_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_7', 'REQUIRES_PLAYER_IS_MAJOR_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_6', 'REQUIRES_PLAYER_IS_MAJOR_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_5', 'REQUIRES_PLAYER_IS_MAJOR_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_4', 'REQUIRES_PLAYER_IS_MAJOR_CSL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_10', 'REQUIRES_CITY_WITHIN_10_CSL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_9', 'REQUIRES_CITY_WITHIN_9_CSL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_8', 'REQUIRES_CITY_WITHIN_8_CSL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_7', 'REQUIRES_CITY_WITHIN_7_CSL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_6', 'REQUIRES_CITY_WITHIN_6_CSL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_5', 'REQUIRES_CITY_WITHIN_5_CSL'),
    ('REQ_PLAYER_IS_SUZERAIN_AND_WITHIN_4', 'REQUIRES_CITY_WITHIN_4_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_10', 'REQUIRES_CITY_WITHIN_10_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_9', 'REQUIRES_CITY_WITHIN_9_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_8', 'REQUIRES_CITY_WITHIN_8_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_7', 'REQUIRES_CITY_WITHIN_7_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_6', 'REQUIRES_CITY_WITHIN_6_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_5', 'REQUIRES_CITY_WITHIN_5_CSL'),
    ('REQ_PLAYER_IS_NOT_SUZERAIN_AND_WITHIN_4', 'REQUIRES_CITY_WITHIN_4_CSL');

INSERT INTO Requirements (RequirementId, RequirementType) VALUES
    ('REQUIRES_CITY_WITHIN_10_CSL', 'REQUIREMENT_PLOT_ADJACENT_TO_OWNER'),
    ('REQUIRES_CITY_WITHIN_9_CSL', 'REQUIREMENT_PLOT_ADJACENT_TO_OWNER'),
    ('REQUIRES_CITY_WITHIN_8_CSL', 'REQUIREMENT_PLOT_ADJACENT_TO_OWNER'),
    ('REQUIRES_CITY_WITHIN_7_CSL', 'REQUIREMENT_PLOT_ADJACENT_TO_OWNER'),
    ('REQUIRES_CITY_WITHIN_6_CSL', 'REQUIREMENT_PLOT_ADJACENT_TO_OWNER'),
    ('REQUIRES_CITY_WITHIN_5_CSL', 'REQUIREMENT_PLOT_ADJACENT_TO_OWNER'),
    ('REQUIRES_CITY_WITHIN_4_CSL', 'REQUIREMENT_PLOT_ADJACENT_TO_OWNER'),
    ('REQUIRES_PLAYER_IS_MAJOR_CSL', 'REQUIREMENT_PLAYER_IS_MAJOR');

INSERT INTO RequirementArguments (RequirementId, Name, Value) VALUES  
    ('REQUIRES_CITY_WITHIN_10_CSL', 'MaxDistance', '10'),
    ('REQUIRES_CITY_WITHIN_9_CSL', 'MaxDistance', '9'),
    ('REQUIRES_CITY_WITHIN_8_CSL', 'MaxDistance', '8'),
    ('REQUIRES_CITY_WITHIN_7_CSL', 'MaxDistance', '7'),
    ('REQUIRES_CITY_WITHIN_6_CSL', 'MaxDistance', '6'),
    ('REQUIRES_CITY_WITHIN_5_CSL', 'MaxDistance', '5'),
    ('REQUIRES_CITY_WITHIN_4_CSL', 'MaxDistance', '4'),
    ('REQUIRES_CITY_WITHIN_10_CSL', 'MinDistance', '9'),
    ('REQUIRES_CITY_WITHIN_9_CSL', 'MinDistance', '9'),
    ('REQUIRES_CITY_WITHIN_8_CSL', 'MinDistance', '7'),
    ('REQUIRES_CITY_WITHIN_7_CSL', 'MinDistance', '7'),
    ('REQUIRES_CITY_WITHIN_6_CSL', 'MinDistance', '5'),
    ('REQUIRES_CITY_WITHIN_5_CSL', 'MinDistance', '5'),
    ('REQUIRES_CITY_WITHIN_4_CSL', 'MinDistance', '4');
 
You've actually seen the loyalty value for the city decrease ?

I ask because a lot of modifier effect-types simply ignore negative values.

I know what you mean, I've been disappointed a few times when some arguments can't be negative. But at least it seems like "MODIFIER_SINGLE_CITY_ADJUST_IDENTITY_PER_TURN" accepts negative arguments. I just tested it to be sure and it's working as intended, showing -4 loyalty from "Other effects" for cities 4 tiles away from city states.
 

Attachments

  • Negative Loyalty.png
    Negative Loyalty.png
    1.9 MB · Views: 247
Ahhhh it looks like I had the problem solved but didn't actually attach the modifier to any foreign cities. ReggieB, I believe I can hack your example into doing exactly what I had hoped for.
Theoretically, I would be able to attach that negative modifier with a requirement of having a trade route as well, right? I think it might be interesting to drop 1 loyalty per trade route, so you could really sow some discord by focusing a ton of routes to a single city.
 
Yep - I was easily able to use your example to set my builder improvement to drop loyalty by 1 if it's within 10 spaces of a city. Now I just need to figure out how to set a requirement to only apply that against foreign cities rather than also my own.

Thank you so much for your help!
 
Is there a 'Modifier_Foreign_Cities_Attach_Modifier', or something like that?
If I can't just attach to foreign cities, could I hack it to only work if I'm playing the civ, by putting something in the OwnerRequirementSetID's to make it only attach to AI?
 
Solved! I found that
REQUIRES_PLAYER_IS_AI
is a RequirementID that works without arguments. Adding that to my RequirementSetRequirements did the trick.
 
Solved! I found that
REQUIRES_PLAYER_IS_AI
is a RequirementID that works without arguments. Adding that to my RequirementSetRequirements did the trick.

Another possibility is making two modifiers. One that decreases the loyalty of all nearby cities, and then another that increases the loyalty of only the owner's cities by the same amount. For the first modifier you would use
'MODIFIER_ALL_CITIES_ATTACH_MODIFIER' as normal, and then to "refund" the owner's loyalty you could use 'MODIFIER_PLAYER_CITIES_ATTACH_MODIFIER' to only apply the refund to the owner's cities. Probably not the most elegant solution, but it would probably work fine.
 
Back
Top Bottom