Resource icon

Despecialise 1.1

Fimbulvetr

Emperor
Joined
Nov 5, 2009
Messages
1,268
Location
Austria
Fuyu submitted a new resource:

Despecialise - Removing all special abilities and uniqueness from all major civilizations (agendas too)

In order to better get to know the base game, and to test how bad the AI really is without having to account for the big differences in playstyles dictated by the special bonuses, abilities, starting location biases and unique units, improvements, buildings, districts and projects, I made this mod where every civ is the same, has the same possibilities and no agendas.
Minor civs are exempt from this of course.

Read more about this resource...
https://forums.civfanatics.com/threads/removing-all-flavor-from-major-civs.605053/ <- old thread
 
Last edited:
I'm using this mod in conjunction with my own improvements/balance mod. Nothing special, so I won't upload it as an extra ressource but if you are interested, you can of course look at it or even use it. link

Spoiler the entire content of the .sql file :
Code:
-- 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;
 

Attachments

Last edited:
Fuyu updated Despecialise with a new update entry:

Load order fix

When load order is important, like when trying to use this with AI+, the <References> tag I fails, the <LoadOrder> tag which is used now actually works.

A bit late but I thought I would have more time and actually get around to work a bit more on my little balance mod before I post that update, but no such luck.
Anyways, it should work with AI+ now, and probably all others too.
 
Last edited:
Back
Top Bottom