How Can I Fix ZOC Bug in my Mod?

MightyJannissary

Chieftain
Joined
Jun 7, 2021
Messages
7
Code:
INSERT INTO Types ( Type, Kind ) VALUES ( 'MCGA_ABILITY_ZOC', 'KIND_ABILITY' );
INSERT INTO TypeTags ( Type, Tag ) VALUES ( 'MCGA_ABILITY_ZOC', 'CLASS_ANTI_CAVALRY' );
INSERT INTO UnitAbilities ( UnitAbilityType, Name, Description ) VALUES ( 'MCGA_ABILITY_ZOC', 'MCGA_ABILITY_ZOC_NAME' , 'Forces ZOC over every unit' );
INSERT INTO UnitAbilityModifiers ( UnitAbilityType, ModifierId ) VALUES ( 'MCGA_ABILITY_ZOC', 'MCGA_ZOC_BONUS');
INSERT INTO Modifiers ( ModifierId, ModifierType, SubjectRequirementSetId ) VALUES ( 'MCGA_ZOC_BONUS', 'MODIFIER_ALL_UNITS_ATTACH_MODIFIER', 'MCGA_ZOC_REQUIREMENTS' );
INSERT INTO Modifiers ( ModifierId, ModifierType ) VALUES ('MCGA_MODIFIER_FORCE_ZOC', 'MODIFIER_PLAYER_UNIT_ADJUST_IGNORE_ZOC');
INSERT INTO ModifierArguments ( ModifierId, Name, Value ) VALUES ( 'MCGA_ZOC_BONUS', 'ModifierId', 'MCGA_MODIFIER_FORCE_ZOC' );
INSERT INTO ModifierArguments ( ModifierId, Name, Value ) VALUES ('MCGA_MODIFIER_FORCE_ZOC', 'Ignore', 'false');
INSERT INTO RequirementSets ( RequirementSetId,RequirementSetType ) VALUES ( 'MCGA_ZOC_REQUIREMENTS', 'REQUIREMENTSET_TEST_ALL' );
INSERT INTO RequirementSetRequirements ( RequirementSetId, RequirementId) VALUES
( 'MCGA_ZOC_REQUIREMENTS', 'MCGA_ADJACENT_UNIT_AT_WAR_REQUIREMENT' );
INSERT INTO Requirements (RequirementId, RequirementType) VALUES
('MCGA_ADJACENT_UNIT_AT_WAR_REQUIREMENT', 'REQUIREMENT_PLOT_ADJACENT_TO_OWNER_AT_WAR');
INSERT INTO RequirementArguments (RequirementId, Name, Value) VALUES
('MCGA_ADJACENT_UNIT_AT_WAR_REQUIREMENT', 'MinDistance', 1),
('MCGA_ADJACENT_UNIT_AT_WAR_REQUIREMENT', 'MaxDistance', 1);

I am making a balance mod and trying to give anti-cavalry units an ability to force zoc on all units regardless if they have ignore zoc ability. My code works but zoc gets wonky if there are 2+ anti-cavalry around. Then all units ignore zoc. How can I fix this? Is there a way making it so a unit can only be affected by 1 anti-cav super zoc? Just like Varu's negative combat strenght ability. Please let me know if there's a way to fix this.

edit: Would using SubjectStackLimit fix my issue?
Code:
INSERT INTO Types ( Type, Kind ) VALUES ( 'MCGA_ABILITY_ZOC', 'KIND_ABILITY' );
INSERT INTO TypeTags ( Type, Tag ) VALUES ( 'MCGA_ABILITY_ZOC', 'CLASS_ANTI_CAVALRY' );
INSERT INTO UnitAbilities ( UnitAbilityType, Name, Description ) VALUES ( 'MCGA_ABILITY_ZOC', 'MCGA_ABILITY_ZOC_NAME' , 'Forces ZOC over every unit' );
INSERT INTO UnitAbilityModifiers ( UnitAbilityType, ModifierId ) VALUES ( 'MCGA_ABILITY_ZOC', 'MCGA_ZOC_BONUS');
INSERT INTO Modifiers ( ModifierId, ModifierType, SubjectStackLimit, SubjectRequirementSetId ) VALUES ( 'MCGA_ZOC_BONUS', 'MODIFIER_ALL_UNITS_ATTACH_MODIFIER', 1, 'MCGA_ZOC_REQUIREMENTS' );
INSERT INTO Modifiers ( ModifierId, ModifierType, SubjectStackLimit ) VALUES ('MCGA_MODIFIER_FORCE_ZOC', 'MODIFIER_PLAYER_UNIT_ADJUST_IGNORE_ZOC', 1);
INSERT INTO ModifierArguments ( ModifierId, Name, Value ) VALUES ( 'MCGA_ZOC_BONUS', 'ModifierId', 'MCGA_MODIFIER_FORCE_ZOC' );
INSERT INTO ModifierArguments ( ModifierId, Name, Value ) VALUES ('MCGA_MODIFIER_FORCE_ZOC', 'Ignore', 'false');
INSERT INTO RequirementSets ( RequirementSetId,RequirementSetType ) VALUES ( 'MCGA_ZOC_REQUIREMENTS', 'REQUIREMENTSET_TEST_ALL' );
INSERT INTO RequirementSetRequirements ( RequirementSetId, RequirementId) VALUES
( 'MCGA_ZOC_REQUIREMENTS', 'MCGA_ADJACENT_UNIT_AT_WAR_REQUIREMENT' );
INSERT INTO Requirements (RequirementId, RequirementType) VALUES
('MCGA_ADJACENT_UNIT_AT_WAR_REQUIREMENT', 'REQUIREMENT_PLOT_ADJACENT_TO_OWNER_AT_WAR');
INSERT INTO RequirementArguments (RequirementId, Name, Value) VALUES
('MCGA_ADJACENT_UNIT_AT_WAR_REQUIREMENT', 'MinDistance', 1),
('MCGA_ADJACENT_UNIT_AT_WAR_REQUIREMENT', 'MaxDistance', 1);
like this?
 
Last edited:
Top Bottom