-- Includes: District cost progression change, tech cost mod (boost 20%, base cost increase by era), No Free Envoy, Settlers Retreat, Limit Religious Units, War Weariness reduction, AI Siege Help, adapted Embark Early,
-- -- -- ToDO: Improved Aerodrome, unit balance (reducing range of ranged units to 1 while buffing their melee strength, also +1 range when inside fort or walled cities), remove religion from the game entirely?
-- Does not include: Mads Tech Tree, Thougher city states, Raging barbarians
--Districts start at 1.5 times the price but don't sale with techs, they scale with game progress instead, CostProgressionParam1 is the same value as neighbourhoods
UPDATE Districts SET CostProgressionParam1 = 1000,CostProgressionModel = 'COST_PROGRESSION_GAME_PROGRESS'
WHERE CostProgressionModel = 'COST_PROGRESSION_NUM_UNDER_AVG_PLUS_TECH';
-- starting more expensive, not increasing cost as fast
-- If I understand this cost progression model correctly, CostProgressionParam1=400 should make a district that costs 90 prod at turn 1 cost 360 prod at turn 500 (final turn when time victory is enabled)
UPDATE Districts SET Cost = Cost * 1.5, CostProgressionParam1 = 400 -- the Trader unit uses the same value
WHERE CostProgressionModel = 'COST_PROGRESSION_GAME_PROGRESS' AND CostProgressionParam1 = 1000;
-- Remove Floodplains with Construction
UPDATE Features SET RemoveTech = 'TECH_CONSTRUCTION'
WHERE FeatureType = 'FEATURE_FLOODPLAINS';
--Tech Costs: see spreadsheet at https://docs.google.com/spreadsheets/d/1aXqyt2hAsC68RO2SpDIH7Kg_XQ9vO5gYzsZUVNt6vnU/edit?usp=sharing
-- Adjusted for patch 1.0.0.56
UPDATE Boosts SET Boost = 20; -- Assumption made in the following part: Boost was 50 and is now 20, for all techs and civics.
-- The following part is copied from 8 Ages of Pace, increasing the cost of techs/civics. WITHOUT the part that increases great person costs though
-- To be used with a mod that decreases the possibilities of bee-lining like Mads Tech Tree
/*
Created by Olleus for 8 Ages of Pace (23 Oct 2016) for v1.0.0.26
original idea by alpaca and Gedemon
expanded to include civics (and scale great people up at the same rate)
Redone for v1.1 using a temporary table. Makes it easier to change all the values at once
*/
-- Temporary table, drop at the end
-- Increase is a percentage
CREATE TABLE EraIncreases
(
EraType TEXT NOT NULL,
Increase INT
);
-- This master table controls the increase of techs, civics (and GPs) simultaneously
INSERT INTO EraIncreases
VALUES ("ERA_ANCIENT", -35),
("ERA_CLASSICAL", -25),
("ERA_MEDIEVAL", -13),
("ERA_RENAISSANCE", 1),
("ERA_INDUSTRIAL", 12),
("ERA_MODERN", 25),
("ERA_ATOMIC", 43),
("ERA_INFORMATION", 66);
/* -- original values:
VALUES ("ERA_ANCIENT",0),
("ERA_CLASSICAL", 25),
("ERA_MEDIEVAL", 50),
("ERA_RENAISSANCE", 80),
("ERA_INDUSTRIAL", 120),
("ERA_MODERN", 170),
("ERA_ATOMIC", 230),
("ERA_INFORMATION", 300);
*/
-- Technology cost
UPDATE Technologies
SET Cost = ROUND(((Cost * (100 + (SELECT EraIncreases.Increase FROM EraIncreases
WHERE EraIncreases.EraType = Technologies.EraType))) * 1 ) / 100)
WHERE TechnologyType IN (SELECT DISTINCT TechnologyType FROM Boosts WHERE TechnologyType IS NOT NULL);
-- All techs/civics that can get boosted are getting more expensive by having the boost reduced from 50 to 20%. Techs without boost must get more expensive at the same rate: by multiplying with the factor (100% - new boost %)/(100% - old boost %)
UPDATE Technologies
SET Cost = ROUND(((Cost * (100 + (SELECT EraIncreases.Increase FROM EraIncreases
WHERE EraIncreases.EraType = Technologies.EraType))) * ((100*(100-20))/(100-50)) ) / 10000)
WHERE TechnologyType NOT IN (SELECT DISTINCT TechnologyType FROM Boosts WHERE TechnologyType IS NOT NULL);
-- Civics cost
UPDATE Civics
SET Cost = ROUND(((Cost * (100 + (SELECT EraIncreases.Increase FROM EraIncreases
WHERE EraIncreases.EraType = Civics.EraType))) * 1 ) / 100)
WHERE CivicType IN (SELECT DISTINCT CivicType FROM Boosts WHERE CivicType IS NOT NULL);
UPDATE Civics
SET Cost = ROUND(((Cost * (100 + (SELECT EraIncreases.Increase FROM EraIncreases
WHERE EraIncreases.EraType = Civics.EraType))) * ((100*(100-20))/(100-50)) ) / 10000)
WHERE CivicType NOT IN (SELECT DISTINCT CivicType FROM Boosts WHERE CivicType IS NOT NULL);
-- GP scaling is removed
DROP TABLE EraIncreases;
UPDATE GlobalParameters SET Value = 1.8 WHERE Name = 'CITY_GROWTH_EXPONENT'; -- Default 1.5 - to make big cities grow more slowly. 2.1 in 8 Ages of Pace
UPDATE Units SET Cost = Cost / 2 WHERE UnitType = "UNIT_MILITARY_ENGINEER" AND BuildCharges <= 2 ; -- 8 Paces of War doubles build charges instead.
/*
from https://forums.civfanatics.com/threads/city-states-no-free-first-encounter-envoy.603297/
City States: No Free Envoy
by Arkatakor (2016)
*/
-----------------------------------------------
-- Remove free envoy upon first encounter
-----------------------------------------------
UPDATE GlobalParameters SET Value = 0 WHERE Name = 'INFLUENCE_TOKENS_FREE_FOR_FIRST_PLAYER_MEET';
UPDATE CivilizationLevels SET StartingTilesForCity = StartingTilesForCity + 1 WHERE CivilizationLevelType = 'CIVILIZATION_LEVEL_CITY_STATE' AND StartingTilesForCity < 6;
--Settlers Retreat mod https://forums.civfanatics.com/threads/settlers-retreat.606712/
UPDATE Units SET CanRetreatWhenCaptured = 1 WHERE UnitType = 'UNIT_SETTLER';
DELETE FROM UnitCaptures WHERE CapturedUnitType = 'UNIT_SETTLER';
-- Limit religious units, shrine needs a great work slot for that, see also https://forums.civfanatics.com/threads/decreasing-ai-number-of-missionaries.605665/#post-14585399
-- Unfortunately this doesn't seem to work
/*
UPDATE Unit_BuildingPrereqs SET NumSupported = 1 WHERE Unit IN ('UNIT_MISSIONARY','UNIT_APOSTLE');
UPDATE Unit_BuildingPrereqs SET NumSupported = 1 WHERE Unit IN ('UNIT_INQUISITOR');
INSERT INTO Building_GreatWorks (BuildingType, GreatWorkSlotType, NumSlots) VALUES ('BUILDING_SHRINE','GREATWORKSLOT_RELIC',1);
*/
/*
-- Instead of giving a relic slot to shrines, give a dummy slot to all buildings that are required for religion units.
INSERT INTO GreatWorkSlotTypes (GreatWorkSlotType) VALUES ('GREATWORKSLOT_DUMMY');
INSERT INTO PseudoYields (PseudoYieldType, DefaultValue) VALUES ('PSEUDOYIELD_GREATWORK_DUMMY', 0.01);
INSERT INTO GreatWorkObjectTypes (GreatWorkObjectType,Value,PseudoYieldType,Name,IconString) VALUES ('GREATWORKOBJECT_DUMMY',(SELECT MAX(Value) FROM GreatWorkObjectTypes) + 1,'PSEUDOYIELD_GREATWORK_DUMMY','Dummy','[ICON_GreatWork_Artifact]');
INSERT INTO GreatWork_ValidSubTypes (GreatWorkSlotType,GreatWorkObjectType) VALUES ('GREATWORKSLOT_DUMMY','GREATWORKOBJECT_DUMMY');
INSERT INTO Building_GreatWorks (BuildingType, GreatWorkSlotType, NumSlots) SELECT DISTINCT PrereqBuilding,'GREATWORKSLOT_DUMMY',1 FROM Unit_BuildingPrereqs WHERE Unit IN ('UNIT_MISSIONARY','UNIT_APOSTLE','UNIT_INQUISITOR');
-- Nice idea if I may say so myself but it just doesn't work. Slot isn't listed in civilopedia, and once a shrine is built I can no longer access the great works screen. Am I doing something wrong or is this just broken/hardcoded?
*/
-- I guess I'll just have to make them more expensive: twice the initial cost, they get more expensive twice as fast, but one additional charge.
UPDATE Units SET CostProgressionParam1 = CostProgressionParam1 * 2, SpreadCharges = SpreadCharges + 1, Cost = Cost * 2 WHERE UnitType IN ('UNIT_MISSIONARY','UNIT_APOSTLE','UNIT_INQUISITOR');
-- War Weariness reduction (Default values as of 1.0.0.56)
UPDATE GlobalParameters SET Value = 5000 WHERE Name = 'WAR_WEARINESS_DECAY_PEACE_DECLARED'; --Default: 2000
UPDATE GlobalParameters SET Value = 500 WHERE Name = 'WAR_WEARINESS_DECAY_TURN_AT_PEACE'; --Default: 200
UPDATE GlobalParameters SET Value = 100 WHERE Name = 'WAR_WEARINESS_DECAY_TURN_AT_WAR'; --Default: 50
UPDATE GlobalParameters SET Value = 0 WHERE Name = 'WAR_WEARINESS_LOSS_OVER_REQ_AMENITIES_AT_WAR_CITY'; --Default: 3
UPDATE GlobalParameters SET Value = 0 WHERE Name = 'WAR_WEARINESS_LOSS_OVER_REQ_AMENITIES_FOUNDED_CITY'; --Default: 0
UPDATE GlobalParameters SET Value = 0 WHERE Name = 'WAR_WEARINESS_LOSS_OVER_REQ_AMENITIES_NONFOUNDED_CITY'; --Default: 1
UPDATE GlobalParameters SET Value = 0 WHERE Name = 'WAR_WEARINESS_PER_COMBAT_IN_ALLIED_LANDS'; --Default: 1
UPDATE GlobalParameters SET Value = 0 WHERE Name = 'WAR_WEARINESS_PER_COMBAT_IN_FOREIGN_LANDS'; --Default: 2
UPDATE GlobalParameters SET Value = 1 WHERE Name = 'WAR_WEARINESS_PER_UNIT_KILLED'; --Default: 3
UPDATE GlobalParameters SET Value = 4 WHERE Name = 'WAR_WEARINESS_PER_WMD_LAUNCHED'; --Default: 10
UPDATE GlobalParameters SET Value = 5 WHERE Name = 'WAR_WEARINESS_POINTS_FOR_AMENITY_LOSS'; --Default: 400
UPDATE GlobalParameters SET Value = 1 WHERE Name = 'WAR_WEARINESS_WARMONGER_BASE'; --Default: 16
-- AI Siege Help - https://forums.civfanatics.com/threads/ai-siege-help.606973/
-- Remove "No move and shoot" from all siege units
DELETE FROM TypeTags WHERE Type = 'ABILITY_NO_MOVE_AND_SHOOT' AND Tag = 'CLASS_SIEGE';
-- .. which makes them pretty strong, so - 5 bombard strength to offset that
UPDATE Units SET Bombard = Bombard - 5 WHERE PromotionClass = 'PROMOTION_CLASS_SIEGE' AND Range <= 2 AND Bombard > 15;
--Change the Expert Crew promotion
INSERT INTO Modifiers (ModifierId,ModifierType) VALUES ('EXPERT_CREW_HEAL_AFTER_ACTION','MODIFIER_PLAYER_UNIT_GRANT_HEAL_AFTER_ACTION');
UPDATE UnitPromotionModifiers SET ModifierId = 'EXPERT_CREW_HEAL_AFTER_ACTION' WHERE UnitPromotionType = 'PROMOTION_EXPERT_CREW' AND ModifierId = 'EXPERT_CREW_BONUS_ATTACK_AFTER_MOVING';
UPDATE UnitPromotions SET Description = 'Can heal after attacking.' WHERE UnitPromotionType = 'PROMOTION_EXPERT_CREW';
-- Embark Early: EmbarkAll at Sailing, but only 1 movement point. +1 movement at celestial navigation instead of cartography, ocean at cartography (unchanged), steam +2 movement (unchanged), combustion +2 instead of +1 movement
UPDATE GlobalParameters SET "Value" = 1 WHERE Name = 'MOVEMENT_WHILE_EMBARKED_BASE';
UPDATE Technologies SET EmbarkUnitType = NULL, EmbarkAll = 0; -- clear embark columns
UPDATE Technologies SET Description = NULL WHERE TechnologyType = 'TECH_SHIPBUILDING';
UPDATE Technologies SET EmbarkAll = 1, Description = 'Allows all land units to embark, on water they all have 1 [ICON_Movement] Movement.' WHERE TechnologyType = 'TECH_SAILING';
UPDATE TechnologyModifiers SET TechnologyType = 'TECH_CELESTIAL_NAVIGATION' WHERE ModifierId = 'CARTOGRAPHY_ADJUST_EMBARKED_MOVEMENT'; -- modifierid name unchanged due to laziness, should be called 'CELESTIAL_NAVIGATION_ADJUST_EMBARKED_MOVEMENT'
UPDATE Technologies SET Description = '+1 [ICON_Movement] Movement for embarked units. Allows harvesting of [ICON_RESOURCE_FISH] Fish.' WHERE TechnologyType = 'TECH_CELESTIAL_NAVIGATION';
UPDATE ModifierArguments SET "Value" = 2 WHERE ModifierId = 'COMBUSTION_ADJUST_EMBARKED_MOVEMENT';
UPDATE Technologies SET Description = '+2 [ICON_Movement] Movement for embarked units.' WHERE TechnologyType = 'TECH_COMBUSTION';
-- If celestial navigation (+1 move) is no prereq for cartography (ocean) then make it one
WITH RECURSIVE prereqsList(tech) AS (
VALUES('TECH_CARTOGRAPHY')
UNION
SELECT TechnologyPrereqs.PrereqTech FROM prereqsList JOIN TechnologyPrereqs
ON TechnologyPrereqs.Technology = prereqsList.tech
)
INSERT INTO TechnologyPrereqs(Technology,PrereqTech) SELECT 'TECH_CARTOGRAPHY','TECH_CELESTIAL_NAVIGATION' WHERE 'TECH_CELESTIAL_NAVIGATION' NOT IN prereqsList;
-- Aerodrome: I want to remove this as a requirement for air units and generally make it more attractive to build, for now I'll just remove the population requirement and leave to rest as it is.
UPDATE Districts SET RequiresPopulation = 0 WHERE DistrictType = 'DISTRICT_AERODROME';
-- Give ancient walls to all city states
INSERT INTO Types ("Type", Kind) VALUES ('MODIFIER_PLAYER_CITIES_GRANT_BUILDING', 'KIND_MODIFIER');
INSERT INTO DynamicModifiers (ModifierType, CollectionType, EffectType) VALUES ('MODIFIER_PLAYER_CITIES_GRANT_BUILDING', 'COLLECTION_PLAYER_CITIES', 'EFFECT_GRANT_BUILDING_IN_CITY');
INSERT INTO TraitModifiers (TraitType, ModifierId) VALUES ('MINOR_CIV_DEFAULT_TRAIT', 'MINOR_CIV_FREE_ANCIENT_WALLS_MODIFIER');
INSERT INTO Modifiers (ModifierId, ModifierType, RunOnce, Permanent, OwnerRequirementSetId, SubjectRequirementSetId) VALUES ('MINOR_CIV_FREE_ANCIENT_WALLS_MODIFIER', 'MODIFIER_PLAYER_CITIES_GRANT_BUILDING', 0, 1, NULL, NULL);
INSERT INTO ModifierArguments (ModifierId, Name, "Value") VALUES ('MINOR_CIV_FREE_ANCIENT_WALLS_MODIFIER', 'BuildingType', 'BUILDING_WALLS');
INSERT INTO RequirementSets (RequirementSetId, RequirementSetType) VALUES ('AFTER_3_TURNS', 'REQUIREMENTSET_TEST_ALL');
INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId) VALUES ('AFTER_3_TURNS', 'REQUIRES_GAME_AT_LEAST_TURN_3');
INSERT INTO Requirements (RequirementId, RequirementType) VALUES ('REQUIRES_GAME_AT_LEAST_TURN_3','REQUIREMENT_GAME_TURN_ATLEAST');
INSERT INTO RequirementArguments (RequirementId, Name, "Value") VALUES ('REQUIRES_GAME_AT_LEAST_TURN_3', 'MinGameTurn', 3);
-- AI+ modmod: what districts are CityStates allowed to build?
-- allowed: type-specific district, harbor
-- not allowed: all districts that have a CityState category related to it. And spaceport.
-- AI+ deletes some, to allow the AI to build them. I'm going to remove that change but instead allow aerodrome and aqueduct
WITH nono(district) AS
(
VALUES('DISTRICT_HOLY_SITE'), ('DISTRICT_CAMPUS'), ('DISTRICT_ENCAMPMENT'), ('DISTRICT_COMMERCIAL_HUB'),
('DISTRICT_ENTERTAINMENT_COMPLEX'), ('DISTRICT_THEATER'), ('DISTRICT_INDUSTRIAL_ZONE'),
('DISTRICT_SPACEPORT')
)
INSERT INTO AiFavoredItems(ListType,Item,Favored)
SELECT 'MinorCivDistricts',nono.district,0 FROM nono
WHERE nono.district NOT IN
(SELECT Item FROM AiFavoredItems
WHERE ListType = 'MinorCivDistricts');
WITH yes(district) AS
(
VALUES('DISTRICT_HARBOR'), ('DISTRICT_AERODROME'), ('DISTRICT_NEIGHBORHOOD'), ('DISTRICT_AQUEDUCT')
)
DELETE FROM AiFavoredItems
WHERE ListType = 'MinorCivDistricts'
AND Favored = 0
AND Item IN yes;