Mod works, but not for Lavra? Stumped.

rian222

Chieftain
Joined
Jul 31, 2013
Messages
39
Location
Japan
Greetings. I've made this mod to change Desert Folklore to give 2 faith to all desert tiles in a city with a holy site(adjacency no longer required). The mod works fine, except it doesn't work with Peter's Lavra, which I think is pretty weird. The original RequirementId only has a reference to 'DISTRICT_HOLY_SITE' in RequirementArguments and it worked fine. Here's my code:

Code:
INSERT INTO RequirementSets (RequirementSetId, RequirementSetType)
VALUES    ('CITY_HAS_HOLY_SITE_AND_PANTHEON', 'REQUIREMENTSET_TEST_ALL'),
                  ('FAITH_PLOT_HAS_DESERT_REQUIREMENTS', 'REQUIREMENTSET_TEST_ALL'),
                  ('FAITH_PLOT_HAS_DESERT_HILLS_REQUIREMENTS', 'REQUIREMENTSET_TEST_ALL');

INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId)
VALUES    ('CITY_HAS_HOLY_SITE_AND_PANTHEON', 'REQUIRES_CITY_FOLLOWS_PANTHEON'),
                  ('CITY_HAS_HOLY_SITE_AND_PANTHEON', 'REQUIRES_CITY_HAS_HOLY_SITE'),
                  ('FAITH_PLOT_HAS_DESERT_REQUIREMENTS', 'REQUIRES_PLOT_HAS_DESERT'),
                  ('FAITH_PLOT_HAS_DESERT_HILLS_REQUIREMENTS',REQUIRES_PLOT_HAS_DESERT_HILLS');

INSERT INTO Modifiers (ModifierId, ModifierType, SubjectRequirementSetId)
VALUES    ('DESERT_FOLKLORE_FAITHDESERTADJACENCY_MODIFIER', 'MODIFIER_CITY_PLOT_YIELDS_ADJUST_PLOT_YIELD', 'FAITH_PLOT_HAS_DESERT_REQUIREMENTS'),
                  ('DESERT_FOLKLORE_FAITHDESERTHILLSADJACENCY_MODIFIER', 'MODIFIER_CITY_PLOT_YIELDS_ADJUST_PLOT_YIELD', 'FAITH_PLOT_HAS_DESERT_HILLS_REQUIREMENTS');

UPDATE Modifiers SET ModifierType='MODIFIER_ALL_CITIES_ATTACH_MODIFIER' WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTADJACENCY';
UPDATE Modifiers SET ModifierType='MODIFIER_ALL_CITIES_ATTACH_MODIFIER' WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTHILLSADJACENCY';
UPDATE Modifiers SET SubjectRequirementSetId='CITY_HAS_HOLY_SITE_AND_PANTHEON' WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTADJACENCY';
UPDATE Modifiers SET SubjectRequirementSetId='CITY_HAS_HOLY_SITE_AND_PANTHEON' WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTHILLSADJACENCY';

DELETE FROM ModifierArguments WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTADJACENCY' AND Value='DISTRICT_HOLY_SITE';
DELETE FROM ModifierArguments WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTHILLSADJACENCY' AND Value='DISTRICT_HOLY_SITE';
DELETE FROM ModifierArguments WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTADJACENCY' AND Value='TERRAIN_DESERT';
DELETE FROM ModifierArguments WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTHILLSADJACENCY' AND Value='TERRAIN_DESERT_HILLS';
DELETE FROM ModifierArguments WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTADJACENCY' AND Value='YIELD_FAITH';
DELETE FROM ModifierArguments WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTHILLSADJACENCY' AND Value='YIELD_FAITH';
DELETE FROM ModifierArguments WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTADJACENCY' AND Value='1';
DELETE FROM ModifierArguments WHERE ModifierId='DESERT_FOLKLORE_FAITHDESERTHILLSADJACENCY' AND Value='1';

INSERT INTO ModifierArguments (ModifierId, Name, Type, Value)
VALUES    ('DESERT_FOLKLORE_FAITHDESERTADJACENCY', 'ModifierId', 'ARGTYPE_IDENTITY', 'DESERT_FOLKLORE_FAITHDESERTADJACENCY_MODIFIER'),
        ('DESERT_FOLKLORE_FAITHDESERTADJACENCY_MODIFIER', 'Amount', 'ARGTYPE_IDENTITY', '2'),
        ('DESERT_FOLKLORE_FAITHDESERTADJACENCY_MODIFIER', 'YieldType', 'ARGTYPE_IDENTITY', 'YIELD_FAITH'),
        ('DESERT_FOLKLORE_FAITHDESERTHILLSADJACENCY', 'ModifierId', 'ARGTYPE_IDENTITY', 'DESERT_FOLKLORE_FAITHDESERTHILLSADJACENCY_MODIFIER'),
        ('DESERT_FOLKLORE_FAITHDESERTHILLSADJACENCY_MODIFIER', 'Amount', 'ARGTYPE_IDENTITY', '2'),
        ('DESERT_FOLKLORE_FAITHDESERTHILLSADJACENCY_MODIFIER', 'YieldType', 'ARGTYPE_IDENTITY', 'YIELD_FAITH');

UPDATE Beliefs SET Description='Cities with a Holy Site district get +2 [ICON_Faith] Faith from each Desert tile in that city.' WHERE BeliefType='BELIEF_DESERT_FOLKLORE';

I also tried making my own Requirement by adding in the 'A_' and adding in a Lavra as a RequirementArgument(in addition to the Holy Site), but that causes the code to fail after that point:

Code:
INSERT INTO Requirements (RequirementId, RequirementType)
VALUES    ('REQUIRES_CITY_HAS_A_HOLY_SITE', 'REQUIREMENT_CITY_HAS_DISTRICT');

INSERT INTO RequirementArguments (RequirementId, Name, Type, Value)
VALUES    ('REQUIRES_CITY_HAS_A_HOLY_SITE', 'DistrictType', 'ARGTYPE_IDENTITY', 'DISTRICT_HOLY_SITE'),
('REQUIRES_CITY_HAS_A_HOLY_SITE', 'DistrictType', 'ARGTYPE_IDENTITY', 'DISTRICT_LAVRA');

INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId)
VALUES    ('CITY_HAS_HOLY_SITE_AND_PANTHEON', 'REQUIRES_CITY_FOLLOWS_PANTHEON'),
                 ('CITY_HAS_HOLY_SITE_AND_PANTHEON', 'REQUIRES_CITY_HAS_HOLY_SITE'),
                  ('FAITH_PLOT_HAS_DESERT_REQUIREMENTS', 'REQUIRES_PLOT_HAS_DESERT'),                   ('FAITH_PLOT_HAS_DESERT_HILLS_REQUIREMENTS',REQUIRES_PLOT_HAS_DESERT_HILLS');

Any ideas what the problem is?
 
Code:
INSERT INTO RequirementArguments (RequirementId, Name, Type, Value)
VALUES    ('REQUIRES_CITY_HAS_A_HOLY_SITE', 'DistrictType', 'ARGTYPE_IDENTITY', 'DISTRICT_HOLY_SITE'),
('REQUIRES_CITY_HAS_A_HOLY_SITE', 'DistrictType', 'ARGTYPE_IDENTITY', 'DISTRICT_LAVRA');
violates the uniquness requirements of table "RequirementArguments":
Code:
PRIMARY KEY(RequirementId, Name),

----------------------------------------------------------------

Also, this
Code:
('CITY_HAS_HOLY_SITE_AND_PANTHEON', 'REQUIRES_CITY_HAS_HOLY_SITE'),
does not match to anything here in your second code-block:
Code:
INSERT INTO Requirements (RequirementId, RequirementType)
VALUES    ('REQUIRES_CITY_HAS_A_HOLY_SITE', 'REQUIREMENT_CITY_HAS_DISTRICT');
'REQUIRES_CITY_HAS_HOLY_SITE' ~= 'REQUIRES_CITY_HAS_A_HOLY_SITE'

But the refusal of the game to implement for unique replacements based on the original 'standard' district or building has been encountered by other people over time when altering the Firaxis-made effects. Tho I had thought this had been fixed in one of the patches.
 
Right, meaning if I want to code in both the Lavra AND a Holy Site as RequirementArguments, I would have to put them both in separate requirements with a RequirementSet that has
'REQUIREMENTSET_TEST_ANY.' But the problem with that is that I already have a lot of other RequirementSets:

CITY_HAS_HOLY_SITE_AND_PANTHEON
FAITH_PLOT_HAS_DESERT_REQUIREMENTS
FAITH_PLOT_HAS_DESERT_HILLS_REQUIREMENTS

Splitting the Holy Site requirement into two means separating it from the pantheon one, which means I have to create two more. And I already have to attach the Desert requirements via a modifier on a modifier, which means I would have like 3 modifiers attaching themselves to another modifier!. All this just becomes needlessly complicated for something that should already work as is.


does not match to anything here in your second code-block:

Ah, I just forgot to change that over when I copy/pasted into this thread. When I was testing it, I made sure all the references matched.
 
Last edited:
Still not sure how to fix this problem, it's a major bug in my mod. Anyone have any ideas?
 
Back
Top Bottom