--Hook modifiers to abilities:
INSERT INTO UnitAbilityModifiers (UnitAbilityType, ModifierId)
SELECT 'ABILITY_ZZZ_TIRAMOD_GRANT_' || Type,
'TIRAMOD_GRANT_' || Type || '_MODIFIER'
FROM Types WHERE Types.Kind='KIND_ABILITY' ;
INSERT INTO Modifiers (ModifierId, ModifierType, Permanent, SubjectRequirementSetId)
SELECT 'TIRAMOD_GRANT_' || Type || '_MODIFIER',
'MODIFIER_ALL_UNITS_GRANT_ABILITY',
1,
'TIRAMOD_ON_SAME_PLOT_REQUIREMENTS'
FROM Types WHERE Types.Kind='KIND_ABILITY' ;
INSERT INTO ModifierArguments (ModifierId, Name, Value)
SELECT 'TIRAMOD_GRANT_' || Type || '_MODIFIER',
'AbilityType',
Type
FROM Types WHERE Types.Kind='KIND_ABILITY' ;
--Define Requirements:
INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId)
VALUES ('TIRAMOD_ON_SAME_PLOT_REQUIREMENTS',
'TIRAMOD_ADJACENT_UNIT_REQUIREMENT');
INSERT INTO RequirementSets (RequirementSetId, RequirementSetType)
VALUES ('TIRAMOD_ON_SAME_PLOT_REQUIREMENTS',
'REQUIREMENTSET_TEST_ALL');
INSERT INTO Requirements (RequirementId, RequirementType)
VALUES ('TIRAMOD_ADJACENT_UNIT_REQUIREMENT',
'REQUIREMENT_PLOT_ADJACENT_TO_OWNER');
INSERT INTO RequirementArguments (RequirementId, Name, Value)
VALUES ('TIRAMOD_ADJACENT_UNIT_REQUIREMENT',
'MinDistance',
0);
INSERT INTO RequirementArguments (RequirementId, Name, Value)
VALUES ('TIRAMOD_ADJACENT_UNIT_REQUIREMENT',
'MaxDistance',
0);
--Now define new units:
INSERT INTO Types (Type, Kind)
SELECT 'UNIT_ZZZ_TIRAMOD_DUMMY_UNIT_GRANT_' || Type,
'KIND_UNIT'
FROM Types WHERE Types.Kind='KIND_ABILITY' ;
INSERT INTO TypeTags (Type, Tag)
SELECT 'UNIT_ZZZ_TIRAMOD_DUMMY_UNIT_GRANT_' || Type,
'CLASS_TIRAMOD_GRANT_' || Type
FROM Types WHERE Types.Kind='KIND_ABILITY' ;
INSERT INTO Units (UnitType, Name, Description, BaseSightRange, BaseMoves, Domain, FormationClass, Cost, EnabledByReligion)
SELECT 'UNIT_ZZZ_TIRAMOD_DUMMY_UNIT_GRANT_' || Type,
'LOC_' || 'UNIT_ZZZ_TIRAMOD_DUMMY_UNIT_GRANT_' || Type || '_NAME',
'LOC_' || 'UNIT_ZZZ_TIRAMOD_DUMMY_UNIT_GRANT_' || Type || '_DESCRIPTION',
3,
2,
'DOMAIN_LAND',
'FORMATION_CLASS_CIVILIAN',
10,
1
FROM Types WHERE Types.Kind='KIND_ABILITY' ;
--At last populate ability rows:
INSERT INTO Tags (Tag, Vocabulary)
SELECT 'CLASS_TIRAMOD_GRANT_' || Type,
'ABILITY_CLASS'
FROM Types WHERE Types.Kind='KIND_ABILITY' ;
INSERT INTO TypeTags (Type, Tag)
SELECT 'ABILITY_ZZZ_TIRAMOD_GRANT_' || Type,
'CLASS_TIRAMOD_GRANT_' || Type
FROM Types WHERE Types.Kind='KIND_ABILITY' ;
INSERT INTO UnitAbilities (UnitAbilityType, Name, Description)
SELECT 'ABILITY_ZZZ_TIRAMOD_GRANT_' || Type,
'LOC_ABILITY_ZZZ_TIRAMOD_GRANT_' || Type || '_NAME',
'LOC_ABILITY_ZZZ_TIRAMOD_GRANT_' || Type || '_DESCRIPTION'
FROM Types WHERE Types.Kind='KIND_ABILITY' ;
--we define the new abilities at last to make sure they do not interfer with the previous lines "FROM Types WHERE Types.Kind='KIND_ABILITY' ;"
INSERT INTO Types (Type, Kind)
SELECT 'ABILITY_ZZZ_TIRAMOD_GRANT_' || Type,
'KIND_ABILITY'
FROM Types WHERE Types.Kind='KIND_ABILITY' ;