Custom policy - Modifier issues

lachumproyale

Chieftain
Joined
Apr 22, 2020
Messages
35
I took some of the RwF code and added in some new early-game policies. There are more than is listed here but I included one ("Toolmasters") because that one is very similar to the others (adds +1 for a specific yield to the capital) and it functions properly. The other one ("Brutes") I'm unable to get working. Basically it's supposed to be a lighter version of Agoge, with a light combat bonus built in as well. But I haven't even gotten to the combat bonus yet because I can't even get the production bonus working! I feel like I basically just copied what Agoge does, converted for SQL, into this already functioning template. At a total loss here.


Code:
--==========================================================================================================================
-- POLICIES
--==========================================================================================================================
       
INSERT INTO Types
        (Type,                                         Kind)
VALUES    --NOMADIC  
        ('POLICY_JFD_TOOLMASTERS',         'KIND_POLICY'),
        ('POLICY_JFD_BRUTES',             'KIND_POLICY');
--------------------------------------------------------------------------------------------------------------------------      
-- Policies
-------------------------------------------------------------------------------------------------------------------------
INSERT INTO Policies  
        (PolicyType,                                Name,                         Description,                     GovernmentSlotType)
VALUES    --NOMADIC          
        ('POLICY_JFD_TOOLMASTERS',                         'LOC_POLICY_JFD_TOOLMASTERS_NAME',         'LOC_POLICY_JFD_TOOLMASTERS_DESCRIPTION',     'SLOT_ECONOMIC'),
        ('POLICY_JFD_BRUTES',                         'LOC_POLICY_JFD_BRUTES_NAME',         'LOC_POLICY_JFD_BRUTES_DESCRIPTION',     'SLOT_MILITARY');
--------------------------------------------------------------------------------------------------------------------------
--ObsoletePolicies
--------------------------------------------------------------------------------------------------------------------------  
INSERT INTO ObsoletePolicies
        (PolicyType,                        ObsoletePolicy)
VALUES   
        ('POLICY_JFD_TOOLMASTERS',            'POLICY_URBAN_PLANNING'),
        ('POLICY_JFD_BRUTES',            'POLICY_MANEUVERS');

--------------------------------------------------------------------------------------------------------------------------
-- PolicyModifiers
--------------------------------------------------------------------------------------------------------------------------
INSERT INTO PolicyModifiers
        (PolicyType,                                         ModifierId)
VALUES    --NOMADIC                                   
        ('POLICY_JFD_TOOLMASTERS',                         'JFD_TOOLMASTERS_PALACE_PRODUCTION'),
        ('POLICY_JFD_BRUTES',                             'JFD_BRUTES_ANCIENT_MELEE_PRODUCTION');
--------------------------------------------------------------------------------------------------------------------------
-- Modifiers
--------------------------------------------------------------------------------------------------------------------------      
INSERT OR REPLACE INTO Modifiers              
        (ModifierId,                                            ModifierType,                Permanent,    SubjectRequirementSetId)
VALUES    --NOMADIC
        ('JFD_TOOLMASTERS_PALACE_PRODUCTION',                'MODIFIER_PLAYER_CAPITAL_CITY_ADJUST_CITY_YIELD_CHANGE',        0,            null),
        ('JFD_BRUTES_ANCIENT_MELEE_PRODUCTION',                'MODIFIER_PLAYER_CITIES_ADJUST_UNIT_TAG_ERA_PRODUCTION',        0,            null);  
       
--------------------------------------------------------------------------------------------------------------------------
-- ModifierArguments
--------------------------------------------------------------------------------------------------------------------------
INSERT OR REPLACE INTO ModifierArguments  
        (ModifierId,                            Name,                        Extra,    Value)
VALUES    --NOMADIC      
        ('JFD_TOOLMASTERS_PALACE_PRODUCTION',                    'Amount',                null,    1),
        ('JFD_BRUTES_ANCIENT_MELEE_PRODUCTION',                'UnitPromotionClass',    -1,    'PROMOTION_CLASS_MELEE'),
        ('JFD_BRUTES_ANCIENT_MELEE_PRODUCTION',                'EraType',                -1,    'ERA_ANCIENT'),
        ('JFD_BRUTES_ANCIENT_MELEE_PRODUCTION',                'Amount',                -1,    50);
 
Last edited:
You can copy Survey and remove the barbarian restriction. If you want to restrict to melee and anti-cavalry, you have to create an ability and tag it to melee and anti-cavalry class.
 
You mean Discipline? I tried that - you have to replace the modifier, as its one that's specifically made for barbarian combat (replaced 'MODIFIER_PLAYER_UNIT_ADJUST_BARBARIAN_COMBAT' with 'MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH'). It didn't work though, at least not the way I did it. I did get it all working though, I'll post the code here for posterity. Not 100% sure why it works in this exact configuration, as I feel like I had this variation of code in place at some point and it didn't. But anyway here it is: War Parties, a (very) ancient era policy that grants +33% production for ancient foot combat units and +2 combat strength for land units of any age. Now onto the next thing, granting recon/naval raider units the ignore borders ability!


Code:
--==========================================================================================================================
-- TYPES
--==========================================================================================================================
-- Types
--------------------------------------------------------------------------------------------------------------------------
INSERT INTO Types
        (Type,                                     Kind)
VALUES
        ('POLICY_JFD_WAR_PARTIES',          'KIND_POLICY'),
        ('ABILITY_JFD_WAR_PARTIES',            'KIND_ABILITY');


INSERT INTO UnitAbilities
        (UnitAbilityType,                         Name,                                            Description,            Inactive)
VALUES
        ('ABILITY_JFD_WAR_PARTIES',        'LOC_ABILITY_JFD_WAR_PARTIES_NAME',        'LOC_ABILITY_JFD_WAR_PARTIES_DESCRIPTION',     1);

INSERT INTO UnitAbilityModifiers
        (UnitAbilityType,                        ModifierId)
VALUES  
        ('ABILITY_JFD_WAR_PARTIES',     'JFD_WAR_PARTIES_COMBAT_ADD_MODIFIER');  
       
INSERT INTO TypeTags
        (Type,                                     Tag)
VALUES
        ('ABILITY_JFD_WAR_PARTIES',      'CLASS_MELEE'),  
        ('ABILITY_JFD_WAR_PARTIES',      'CLASS_RANGED'),
        ('ABILITY_JFD_WAR_PARTIES',      'CLASS_AUTOMATIC_GUN'),  
        ('ABILITY_JFD_WAR_PARTIES',      'CLASS_SIEGE'),
        ('ABILITY_JFD_WAR_PARTIES',      'CLASS_HEAVY_CHARIOT'),
        ('ABILITY_JFD_WAR_PARTIES',      'CLASS_LIGHT_CHARIOT'),
        ('ABILITY_JFD_WAR_PARTIES',      'CLASS_HEAVY_CAVALRY'),
        ('ABILITY_JFD_WAR_PARTIES',      'CLASS_RANGED_CAVALRY'),
        ('ABILITY_JFD_WAR_PARTIES',      'CLASS_LIGHT_CAVALRY'),
        ('ABILITY_JFD_WAR_PARTIES',      'CLASS_ANTI_CAVALRY');
   
               
INSERT INTO Modifiers          
        (ModifierId,                                                ModifierType,                                                    Permanent,    SubjectRequirementSetId)
VALUES  
       
        ('JFD_WAR_PARTIES_COMBAT',                            'MODIFIER_PLAYER_UNITS_GRANT_ABILITY',                        0,            null),
        ('JFD_WAR_PARTIES_COMBAT_ADD_MODIFIER',                'MODIFIER_UNIT_ADJUST_COMBAT_STRENGTH',                        0,            null);
       
INSERT INTO ModifierStrings
        (ModifierId,                         Context,                                            Text)
VALUES
        ('JFD_WAR_PARTIES_COMBAT_ADD_MODIFIER',        'Preview',        'LOC_ABILITY_JFD_WAR_PARTIES_PREVIEW');

INSERT INTO ModifierArguments
        (ModifierId,                                                Name,                        Value)
VALUES
        ('JFD_WAR_PARTIES_COMBAT_ADD_MODIFIER',        'Amount',                    2);
   
INSERT OR REPLACE INTO ModifierArguments  
        (ModifierId,                                            Name,                        Extra,    Value)
VALUES    --ANCIENT                                          
       
        ('JFD_WAR_PARTIES_COMBAT',                'AbilityType',                null,    'ABILITY_JFD_WAR_PARTIES');
--------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------      
-- Policies
--------------------------------------------------------------------------------------------------------------------------
INSERT INTO Policies  
        (PolicyType,                                Name,                                         Description,                         GovernmentSlotType)
VALUES        ('POLICY_JFD_WAR_PARTIES',             'LOC_POLICY_JFD_WAR_PARTIES_NAME',     'LOC_POLICY_JFD_WAR_PARTIES_DESCRIPTION',          'SLOT_MILITARY');
       
--------------------------------------------------------------------------------------------------------------------------
--ObsoletePolicies
--------------------------------------------------------------------------------------------------------------------------  

INSERT INTO ObsoletePolicies
        (PolicyType,                         ObsoletePolicy)
VALUES  
        ('POLICY_JFD_WAR_PARTIES',            'POLICY_MANEUVER');
   
   
       

-- Create a table and populate it with a list of units that are similar to a Warrior. THANKS TO CIVFANATICS USER ISAU
-- Refine this select statement to meet the needs of the kind of unit you are trying to operate on
CREATE TABLE tblWarriorLikeUnits AS SELECT units.UnitType
                                    FROM units
                                   WHERE units.PrereqCivic IS NULL AND
                                         units.PrereqTech IS NULL AND
                                         units.PromotionClass = 'PROMOTION_CLASS_MELEE';
                                       
CREATE TABLE tblSlingerLikeUnits AS SELECT units.UnitType
                                    FROM units
                                   WHERE units.PrereqCivic IS NULL AND
                                         units.PrereqTech IS NULL AND
                                         units.PromotionClass = 'PROMOTION_CLASS_AUTOMATIC_GUN';
                                       
CREATE TABLE tblSpearmanLikeUnits AS SELECT units.UnitType
                                    FROM units
                                   WHERE units.PrereqCivic IS NULL AND
                                         units.PrereqTech = 'TECH_BRONZE_WORKING' AND
                                         units.PromotionClass = 'PROMOTION_CLASS_ANTI_CAVALRY';
                                       
CREATE TABLE tblArcherLikeUnits AS SELECT units.UnitType
                                    FROM units
                                   WHERE units.PrereqCivic IS NULL AND
                                         units.PrereqTech = 'TECH_ARCHERY' AND
                                         units.PromotionClass = 'PROMOTION_CLASS_RANGED';
                                       
CREATE TABLE tblPsiloiLikeUnits AS SELECT units.UnitType
                                    FROM units
                                   WHERE units.PrereqCivic IS NULL AND
                                         units.PrereqTech = 'TECH_SPEAR' AND
                                         units.PromotionClass = 'PROMOTION_CLASS_AUTOMATIC_GUN';
                                       


-- Use a SELECT statement to dynamically insert into the Modifiers table, for every unit we put in tblWarriorLikeUnits
    --WARRIORS
        --PRODUCTION BOOST
       
        INSERT INTO Modifiers     (ModifierId, ModifierType)
        SELECT 'JFD_WAR_PARTIES_MELEE_PRODUCTION' || tblWarriorLikeUnits.UnitType , 'MODIFIER_PLAYER_UNITS_ADJUST_UNIT_PRODUCTION'
                FROM tblWarriorLikeUnits ;
     
        INSERT INTO ModifierArguments    (ModifierId, Name, Value)
        SELECT                            'JFD_WAR_PARTIES_MELEE_PRODUCTION' || tblWarriorLikeUnits.UnitType, 'Amount', 33
                            FROM tblWarriorLikeUnits ;
                               
        INSERT INTO ModifierArguments    (ModifierId, Name, Value)
        SELECT                            'JFD_WAR_PARTIES_MELEE_PRODUCTION' || tblWarriorLikeUnits.UnitType, 'UnitType', 'UNIT_WARRIOR'
                            FROM tblWarriorLikeUnits ;
                           
        INSERT INTO PolicyModifiers    (PolicyType, ModifierId)
        SELECT                         'POLICY_JFD_WAR_PARTIES', 'JFD_WAR_PARTIES_MELEE_PRODUCTION' || tblWarriorLikeUnits.UnitType
                            FROM tblWarriorLikeUnits ;
             
    --SLINGERS
        --PRODUCTION BOOST
        INSERT INTO Modifiers     (ModifierId, ModifierType)
        SELECT 'JFD_WAR_PARTIES_SLINGER_PRODUCTION' || tblSlingerLikeUnits.UnitType , 'MODIFIER_PLAYER_UNITS_ADJUST_UNIT_PRODUCTION'
                FROM tblSlingerLikeUnits ;
     
        INSERT INTO ModifierArguments    (ModifierId, Name, Value)
        SELECT                            'JFD_WAR_PARTIES_SLINGER_PRODUCTION' || tblSlingerLikeUnits.UnitType, 'Amount', 33
                            FROM tblSlingerLikeUnits ;
                               
       
        INSERT INTO ModifierArguments    (ModifierId, Name, Value)
        SELECT                            'JFD_WAR_PARTIES_SLINGER_PRODUCTION' || tblSlingerLikeUnits.UnitType, 'UnitType', 'UNIT_SLINGER'
                            FROM tblSlingerLikeUnits ;

                                     
        INSERT INTO PolicyModifiers    (PolicyType, ModifierId)
        SELECT                         'POLICY_JFD_WAR_PARTIES', 'JFD_WAR_PARTIES_SLINGER_PRODUCTION' || tblSlingerLikeUnits.UnitType
                            FROM tblSlingerLikeUnits ;

    --SPEARS
        --PRODUCTION BOOST
        INSERT INTO Modifiers     (ModifierId, ModifierType)
        SELECT 'JFD_WAR_PARTIES_ANTICAV_PRODUCTION' || tblSpearmanLikeUnits.UnitType , 'MODIFIER_PLAYER_UNITS_ADJUST_UNIT_PRODUCTION'
                FROM tblSpearmanLikeUnits ;
     
        INSERT INTO ModifierArguments    (ModifierId, Name, Value)
        SELECT                            'JFD_WAR_PARTIES_ANTICAV_PRODUCTION' || tblSpearmanLikeUnits.UnitType, 'Amount', 33
                            FROM tblSpearmanLikeUnits ;
                               
       
        INSERT INTO ModifierArguments    (ModifierId, Name, Value)
        SELECT                            'JFD_WAR_PARTIES_ANTICAV_PRODUCTION' || tblSpearmanLikeUnits.UnitType, 'UnitType', 'UNIT_SPEARMAN'
                            FROM tblSpearmanLikeUnits ;

                                     
        INSERT INTO PolicyModifiers    (PolicyType, ModifierId)
        SELECT                         'POLICY_JFD_WAR_PARTIES', 'JFD_WAR_PARTIES_ANTICAV_PRODUCTION' || tblSpearmanLikeUnits.UnitType
                            FROM tblSpearmanLikeUnits ;
                           
    --ARCHERS
        --PRODUCTION BOOST
        INSERT INTO Modifiers     (ModifierId, ModifierType)
        SELECT 'JFD_WAR_PARTIES_RANGED_PRODUCTION' || tblArcherLikeUnits.UnitType , 'MODIFIER_PLAYER_UNITS_ADJUST_UNIT_PRODUCTION'
                FROM tblArcherLikeUnits ;
     
        INSERT INTO ModifierArguments    (ModifierId, Name, Value)
        SELECT                            'JFD_WAR_PARTIES_RANGED_PRODUCTION' || tblArcherLikeUnits.UnitType, 'Amount', 33
                            FROM tblArcherLikeUnits ;
                               
       
        INSERT INTO ModifierArguments    (ModifierId, Name, Value)
        SELECT                            'JFD_WAR_PARTIES_RANGED_PRODUCTION' || tblArcherLikeUnits.UnitType, 'UnitType', 'UNIT_ARCHER'
                            FROM tblArcherLikeUnits ;

                                     
        INSERT INTO PolicyModifiers    (PolicyType, ModifierId)
        SELECT                         'POLICY_JFD_WAR_PARTIES', 'JFD_WAR_PARTIES_RANGED_PRODUCTION' || tblArcherLikeUnits.UnitType
                            FROM tblArcherLikeUnits ;
    --PSILOI
        --PRODUCTION BOOST
        INSERT INTO Modifiers     (ModifierId, ModifierType)
        SELECT 'JFD_WAR_PARTIES_PSILOI_PRODUCTION' || tblPsiloiLikeUnits.UnitType , 'MODIFIER_PLAYER_UNITS_ADJUST_UNIT_PRODUCTION'
                FROM tblPsiloiLikeUnits ;
     
        INSERT INTO ModifierArguments    (ModifierId, Name, Value)
        SELECT                            'JFD_WAR_PARTIES_PSILOI_PRODUCTION' || tblPsiloiLikeUnits.UnitType, 'Amount', 33
                            FROM tblPsiloiLikeUnits ;
                               
       
        INSERT INTO ModifierArguments    (ModifierId, Name, Value)
        SELECT                            'JFD_WAR_PARTIES_PSILOI_PRODUCTION' || tblPsiloiLikeUnits.UnitType, 'UnitType', 'UNIT_PELTAST'
                            FROM tblPsiloiLikeUnits ;

                                     
        INSERT INTO PolicyModifiers    (PolicyType, ModifierId)
        SELECT                         'POLICY_JFD_WAR_PARTIES', 'JFD_WAR_PARTIES_PSILOI_PRODUCTION' || tblPsiloiLikeUnits.UnitType
                            FROM tblPsiloiLikeUnits ;

                       
                   
--------------------------------------------------------------------------------------------------------------------------
-- PolicyModifiers
--------------------------------------------------------------------------------------------------------------------------
INSERT INTO PolicyModifiers
        (PolicyType,                                         ModifierId)
VALUES    --ANCIENT                              
        ('POLICY_JFD_WAR_PARTIES',                     'JFD_WAR_PARTIES_COMBAT'),
        ('POLICY_JFD_WAR_PARTIES',                     'JFD_WAR_PARTIES_MELEE_PRODUCTION'),
        ('POLICY_JFD_WAR_PARTIES',                     'JFD_WAR_PARTIES_SLINGER_PRODUCTION'),
        ('POLICY_JFD_WAR_PARTIES',                     'JFD_WAR_PARTIES_ANTICAV_PRODUCTION'),
        ('POLICY_JFD_WAR_PARTIES',                     'JFD_WAR_PARTIES_RANGED_PRODUCTION'),  
        ('POLICY_JFD_WAR_PARTIES',                     'JFD_WAR_PARTIES_PSILOI_PRODUCTION');
 
Last edited:
Top Bottom