Added Medieval era units

Techs now display imformation baed on what's dependant on them
Buildings uniques now in humanspeak
This commit is contained in:
Yair Morgenstern 2018-05-18 17:18:47 +03:00
parent 017d1f3f89
commit 398b612d8c
18 changed files with 199 additions and 154 deletions

View File

@ -62,7 +62,7 @@
baseDescription: "Adds 1 science for each 2 population in the city.", baseDescription: "Adds 1 science for each 2 population in the city.",
hurryCostModifier:25, hurryCostModifier:25,
maintenance:1, maintenance:1,
unique:"SciencePer2Pop", unique:"Science Per 2 Population",
requiredTech:"Writing" requiredTech:"Writing"
}, },
{ {
@ -79,7 +79,7 @@
culture:1, culture:1,
greatPersonPoints:{production:1}, greatPersonPoints:{production:1},
isWonder:true, isWonder:true,
unique:"WorkerConstruction", unique:"Worker construction increased 25%, provides 2 free workers",
requiredTech:"Mathematics" requiredTech:"Mathematics"
}, },
{ {
@ -98,7 +98,7 @@
culture:3, culture:3,
greatPersonPoints:{science:1}, greatPersonPoints:{science:1},
isWonder:true, isWonder:true,
unique:"FreeSocialPolicy", unique:"Free Social Policy",
requiredTech:"Philosophy" requiredTech:"Philosophy"
}, },
{ {
@ -117,7 +117,7 @@
culture:1, culture:1,
greatPersonPoints:{production:1}, greatPersonPoints:{production:1},
isWonder:true, isWonder:true,
unique:"GoldenAgeLengthIncrease", unique:"Golden Age length increases +50%",
requiredTech:"Civil Service" requiredTech:"Civil Service"
}, },
{ {
@ -188,7 +188,7 @@
culture:1, culture:1,
greatPersonPoints:{culture:1}, greatPersonPoints:{culture:1},
isWonder:true, isWonder:true,
unique:"GreatPersonGenerationIncrease", unique:"+33% great person generation in all cities",
requiredTech:"Theology" requiredTech:"Theology"
}, },
{ {
@ -207,7 +207,7 @@
greatPersonPoints:{gold:1}, greatPersonPoints:{gold:1},
culture:1, culture:1,
isWonder:true, isWonder:true,
unique:"TradeRouteGoldIncrease", unique:"Gold from all trade routes +25%",
requiredTech:"Currency" requiredTech:"Currency"
}, },
{ {
@ -215,7 +215,7 @@
baseDescription: "40% of food is carried over after a new citizen is born", baseDescription: "40% of food is carried over after a new citizen is born",
maintenance:1, maintenance:1,
hurryCostModifier:25, hurryCostModifier:25,
unique:"FoodCarriesOver" unique:"40% of food is carried over after a new citizen is born"
requiredTech:"Engineering" requiredTech:"Engineering"
}, },
{ {
@ -245,7 +245,7 @@
percentStatBonus:{science:33}, percentStatBonus:{science:33},
specialistSlots:{science:2}, specialistSlots:{science:2},
requiredBuilding:"Library", requiredBuilding:"Library",
unique:"JunglesProvideScience", unique:"Jungles provide +2 science",
requiredTech:"Education" requiredTech:"Education"
}, },
{ {
@ -261,11 +261,11 @@
}, },
{ {
name:"Angkor Wat", name:"Angkor Wat",
baseDescription: "Cost of aquiring new tiles reduced by 25%", baseDescription: "Cost of acquiring new tiles reduced by 25%",
culture:1, culture:1,
greatPersonPoints:{production:1}, greatPersonPoints:{production:1},
isWonder:true, isWonder:true,
unique:"NewTileCostReduction", unique:"Cost of acquiring new tiles reduced by 25%",
requiredTech:"Chivalry" requiredTech:"Chivalry"
}, },
{ {
@ -310,7 +310,7 @@
baseDescription: "Culture in all cities increased by 25%", baseDescription: "Culture in all cities increased by 25%",
culture:1, culture:1,
isWonder:true, isWonder:true,
unique:"CultureIncrease", unique:"Culture in all cities increased by 25%",
requiredTech:"Acoustics" requiredTech:"Acoustics"
}, },
{ {
@ -328,7 +328,7 @@
baseDescription: "Unhappiness from population decreased by 10%", baseDescription: "Unhappiness from population decreased by 10%",
culture:1, culture:1,
isWonder:true, isWonder:true,
unique:"CitizenUnhappinessDecreased", unique:"Unhappiness from population decreased by 10%",
requiredTech:"Banking" requiredTech:"Banking"
}, },
{ {
@ -346,7 +346,7 @@
culture:1, culture:1,
happiness:4, happiness:4,
isWonder:true, isWonder:true,
unique:"EmpireEntersGoldenAge", unique:"Empire enters golden age",
requiredTech:"Acoustics" requiredTech:"Acoustics"
}, },
{ {
@ -384,7 +384,7 @@
culture:1, culture:1,
happiness:4, happiness:4,
isWonder:true, isWonder:true,
unique:"FreeGreatArtistAppears", unique:"Free Great Artist Appears",
requiredTech:"Archaeology" requiredTech:"Archaeology"
}, },
{ {
@ -395,7 +395,7 @@
requiredBuilding:"University", requiredBuilding:"University",
maintenance:3, maintenance:3,
hurryCostModifier:0, hurryCostModifier:0,
unique:"SciencePer2Pop", unique:"Science Per 2 Population",
requiredTech:"Scientific Theory" requiredTech:"Scientific Theory"
}, },
{ {
@ -434,7 +434,7 @@
baseDescription: "Culture cost of adopting new Policies reduced by 10%", baseDescription: "Culture cost of adopting new Policies reduced by 10%",
culture:5, culture:5,
isWonder:true, isWonder:true,
unique:"PolicyCostReduction", unique:"Culture cost of adopting new Policies reduced by 10%",
requiredTech:"Flight" requiredTech:"Flight"
}, },
{ {
@ -452,7 +452,7 @@
culture:1, culture:1,
happiness:5 happiness:5
isWonder:true, isWonder:true,
unique:"HappinessPerSocialPolicy", unique:"Provides 1 happiness per social policy",
requiredTech:"Radio" requiredTech:"Radio"
}, },
{ {
@ -496,14 +496,14 @@
maintenance:3, maintenance:3,
cannotBeBuiltWith:"Nuclear Plant", cannotBeBuiltWith:"Nuclear Plant",
requiredTech:"Ecology", requiredTech:"Ecology",
unique:"MustBeNextToDesert" unique:"Must be next to desert"
}, },
{ {
name:"Apollo Program", name:"Apollo Program",
baseDescription: "Allows the building of spaceship parts", baseDescription: "Allows the building of spaceship parts",
cost:1500, cost:1500,
isWonder:true, isWonder:true,
unique:"ApolloProgram", unique:"Enables construction of Spaceship parts",
requiredTech:"Rocketry" requiredTech:"Rocketry"
}, },
{ {
@ -523,7 +523,7 @@
production:3, production:3,
requiredResource:"Aluminum", requiredResource:"Aluminum",
cost:360, cost:360,
unique:"SpaceshipPartProductionBoost" unique:"Increases production of spaceship parts by 50%"
requiredTech:"Robotics" requiredTech:"Robotics"
}, },
{ {
@ -531,27 +531,27 @@
baseDescription: "Spaceship part", baseDescription: "Spaceship part",
requiredResource:"Aluminum", requiredResource:"Aluminum",
requiredTech:"Robotics", requiredTech:"Robotics",
unique:"SpaceshipPart" unique:"Spaceship part"
}, },
{ {
name:"SS Cockpit", name:"SS Cockpit",
baseDescription: "Spaceship part", baseDescription: "Spaceship part",
requiredResource:"Aluminum", requiredResource:"Aluminum",
requiredTech:"Satellites", requiredTech:"Satellites",
unique:"SpaceshipPart" unique:"Spaceship part"
}, },
{ {
name:"SS Engine", name:"SS Engine",
baseDescription: "Spaceship part", baseDescription: "Spaceship part",
requiredResource:"Aluminum", requiredResource:"Aluminum",
requiredTech:"Particle Physics", requiredTech:"Particle Physics",
unique:"SpaceshipPart" unique:"Spaceship part"
}, },
{ {
name:"SS Statis Chamber", name:"SS Statis Chamber",
baseDescription: "Spaceship part", baseDescription: "Spaceship part",
requiredResource:"Aluminum", requiredResource:"Aluminum",
requiredTech:"Nanotechnology", requiredTech:"Nanotechnology",
unique:"SpaceshipPart" unique:"Spaceship part"
} }
] ]

View File

@ -8,17 +8,14 @@
{ {
name:"Pottery", name:"Pottery",
row:2, row:2,
description:"Allows your cities to construct a granary, which provides food."
}, },
{ {
name:"Animal Husbandry", name:"Animal Husbandry",
row:5, row:5
description:"Reveals horses, and allows workers to build pastures, which improve various animal resources."
}, },
{ {
name:"Mining", name:"Mining",
row:9, row:9
description:"Allows workers to build mines, which grant access to several strategic and luxury resources and increases production. Also allows workers to clear forests."
} }
] ]
@ -34,43 +31,37 @@
name:"Sailing", name:"Sailing",
row:1, row:1,
prerequisites:["Pottery"], prerequisites:["Pottery"],
description:"Does nothing since we have no sea tiles - In theory, Allows access to sea resources by building work boats" baseDescription:"Does nothing since we have no sea tiles - In theory, Allows access to sea resources by building work boats"
},*/ },*/
{ {
name:"Calendar", name:"Calendar",
row:2, row:2,
prerequisites:["Pottery"], prerequisites:["Pottery"]
description:"Allows your workers to build Plantations, which grant access to several luxury resources, and the Stonehenge wonder, providing culture"
}, },
{ {
name:"Writing", name:"Writing",
row:3, row:3,
prerequisites:["Pottery"], prerequisites:["Pottery"]
description:"Allows your cities to construct libraries, which increases science produced. Also enables construction of the Great Library wonder."
}, },
{ {
name:"Trapping", name:"Trapping",
row:5, row:5,
prerequisites:["Animal Husbandry"], prerequisites:["Animal Husbandry"]
description:"Allows your workers to build Camps, increasing gold and granting access to several luxury resources. Also enables construction of Circuses, providing happiness."
}, },
{ {
name:"The Wheel", name:"The Wheel",
row:6, row:6,
prerequisites:["Animal Husbandry"], prerequisites:["Animal Husbandry"]
description:"Allows construction of roads, speeding movement and providing gold from trade. ALSO WATERWHEELS-TODO"
}, },
{ {
name:"Masonry", name:"Masonry",
row:9, row:9,
prerequisites:["Mining"], prerequisites:["Mining"]
description:"Allows workers to build quarries, granting access to stone and marble resources."
}, },
{ {
name:"Bronze Working", name:"Bronze Working",
row:10, row:10,
prerequisites:["Mining"], prerequisites:["Mining"]
description:"Allows workers to remove jungles and clear marshes"
} }
] ]
}, },
@ -86,25 +77,22 @@
cost:95, cost:95,
row:1, row:1,
prerequisites:["Sailing"], prerequisites:["Sailing"],
description:"Does nothing since we have no sea tiles - In theory, Allows construction of lighthouses, providing more food for sea tiles" baseDescription:"Does nothing since we have no sea tiles - In theory, Allows construction of lighthouses, providing more food for sea tiles"
},*/ },*/
{ {
name:"Horseback Riding", name:"Horseback Riding",
row:5, row:5,
prerequisites:["Trapping","The Wheel"], prerequisites:["Trapping","The Wheel"]
description:"Allows construction of stables, which increase production on cattle, sheep and horses, and the Circus Maximus wonder"
}, },
{ {
name:"Mathematics", name:"Mathematics",
row:7, row:7,
prerequisites:["The Wheel"], prerequisites:["The Wheel"]
description: "Enables construction of the Hanging Gardens wonder. Also enables construction of the Pyramids wonder."
}, },
{ {
name:"Construction", name:"Construction",
row:9, row:9,
prerequisites:["Masonry"], prerequisites:["Masonry"]
description:"Allows construction of colosseums, which generate happiness, and building lumber mills on forests, providing production"
} }
] ]
}, },
@ -118,26 +106,23 @@
{ {
name:"Philosophy", name:"Philosophy",
row:3, row:3,
prerequisites:["Writing","Calendar"], prerequisites:["Writing","Calendar"]
description:"Allows construction of temples, which generate culture, and the Oracle wonder"
}, },
{ {
name:"Currency", name:"Currency",
row:7, row:7,
prerequisites:["Mathematics"], prerequisites:["Mathematics"],
description:"Enables construction of Markets and Mints, which increase gold, and conversion of city production to gold. Also enables the Machu Pichu wonder." baseDescription:"Enables conversion of city production to gold"
}, },
{ {
name:"Engineering", name:"Engineering",
row:8, row:8,
prerequisites:["Mathematics","Construction"], prerequisites:["Mathematics","Construction"]
description:"Enables construction of aqueducts, which speed up city growth"
}, },
{ {
name:"Iron Working", name:"Iron Working",
row:10, row:10,
prerequisites:["Bronze Working"], prerequisites:["Bronze Working"]
description:"Reveals Iron on map"
} }
] ]
}, },
@ -151,26 +136,22 @@
{ {
name:"Theology", name:"Theology",
row:2, row:2,
prerequisites:["Philosophy"], prerequisites:["Philosophy"]
description:"Enables construction of Monasteries, providing culture, and the Hagia Sophia, increasing Great Person generation"
}, },
{ {
name:"Civil Service", name:"Civil Service",
row:4, row:4,
prerequisites:["Horseback Riding","Philosophy"], prerequisites:["Horseback Riding","Philosophy"]
description:"Enables the Chichen Itza wonder, which increases the length of golden ages, and the National College, increasing science"
}, },
{ {
name:"Physics", name:"Physics",
row:8, row:8,
prerequisites:["Engineering"], prerequisites:["Engineering"]
description:"Enables construction of the Porcelain Tower, increasing production to science production"
}, },
{ {
name:"Metal Casting", name:"Metal Casting",
row:10, row:10,
prerequisites:["Construction","Iron Working"], prerequisites:["Construction","Iron Working"]
description:"Enables construction of Forges and Workshops, increasing production, and the Notre Dame wonder, providing happiness,"
} }
] ]
}, },
@ -186,25 +167,24 @@
row:1, row:1,
cost:415, cost:415,
prerequisites:["Optics"], prerequisites:["Optics"],
description:"Does nothing since we have no sea tiles - In theory, allows construction of harbors" baseDescription:"Does nothing since we have no sea tiles - In theory, allows construction of harbors"
},*/ },*/
{ {
name:"Education", name:"Education",
row:3, row:3,
prerequisites:["Theology","Civil Service"], prerequisites:["Theology","Civil Service"],
description:"Allows cities to convert production to science, construction of Universities which provide science" baseDescription:"Allows cities to convert production to science,"
}, },
{ {
name:"Chivalry", name:"Chivalry",
row:5, row:5,
prerequisites:["Civil Service","Currency"], prerequisites:["Civil Service","Currency"]
description:"Enables construction of the Angkor Wat wonder, reducing cost of aquiring new tiles, construction of Trading Posts on tiles, providing gold"
}, },
{ {
name:"Machinery", name:"Machinery",
row:8, row:8,
prerequisites:["Physics","Metal Casting"], prerequisites:["Physics","Metal Casting"],
description:"Speeds movement speed on roads and allows you to construct the Ironworks wonder, which gives a massive boost in production" baseDescription:"Speeds movement speed on roads"
} }
] ]
}, },
@ -218,26 +198,22 @@
{ {
name:"Astronomy", name:"Astronomy",
row:2, row:2,
prerequisites:[/*"Compass",*/"Education"], prerequisites:[/*"Compass",*/"Education"]
description:"Enables construction of Observatories in cities near mountains"
}, },
{ {
name:"Acoustics", name:"Acoustics",
row:4, row:4,
prerequisites:["Education","Chivalry"], prerequisites:["Education","Chivalry"]
description:"Enables construction of Opera Houses and the Sistine Chapel, providing culture"
}, },
{ {
name:"Banking", name:"Banking",
row:6, row:6,
prerequisites:["Chivalry"], prerequisites:["Chivalry"]
description:"Enables construction of banks, increasing gold, and allows construciton of the Forbidden Palace, decreasing unhappiness form population"
}, },
{ {
name:"Printing Press", name:"Printing Press",
row:8, row:8,
prerequisites:["Machinery","Physics"], prerequisites:["Machinery","Physics"]
description:"Enables construction of the Theatre and Taj Mahal, increasing happiness"
}, },
] ]
}, },
@ -252,25 +228,22 @@
name:"Navigation", name:"Navigation",
row:2, row:2,
prerequisites:["Astronomy"], prerequisites:["Astronomy"],
description:"Does nothing since we have no sea tiles - In theory, allows construction of Frigates and Seaports" baseDescription:"Does nothing since we have no sea tiles - In theory, allows construction of Frigates and Seaports"
},*/ },*/
{ {
name:"Archaeology", name:"Archaeology",
row:2, row:2,
prerequisites:["Astronomy"], prerequisites:["Astronomy"]
description:"Allows construction of Museums and the Hermitage and Louvre wonders, providing culture"
}, },
{ {
name:"Economics", name:"Economics",
row:6, row:6,
prerequisites:["Banking","Printing Press"], prerequisites:["Banking","Printing Press"]
description:"Camps and Trading Posts provide +1 gold, allows construction of Windmill and Big Ben"
}, },
{ {
name:"Chemistry", name:"Chemistry",
row:9, row:9,
prerequisites:["Machinery"], prerequisites:["Machinery"]
description:"Mines and Quarries provide +1 production"
} }
] ]
}, },
@ -284,14 +257,12 @@
{ {
name:"Scientific Theory", name:"Scientific Theory",
row:4, row:4,
prerequisites:["Archaeology","Acoustics","Economics"], prerequisites:["Archaeology","Acoustics","Economics"]
description:"Reveals coal and allows construction of Public Schools, providing science. Also improves science from Academy."
}, },
{ {
name:"Fertilizer", name:"Fertilizer",
row:7, row:7,
prerequisites:["Chemistry"], prerequisites:["Chemistry"]
description:"+1 food from Farms, Plantations and Pastures"
} }
] ]
}, },
@ -305,20 +276,17 @@
{ {
name:"Biology", name:"Biology",
row:3, row:3,
prerequisites:["Archaeology","Scientific Theory","Fertilizer"], prerequisites:["Archaeology","Scientific Theory","Fertilizer"]
description:"Reveals oil and allows construction of oil wells, and construction of hospitals, providing a large amount of food"
}, },
{ {
name:"Electricity", name:"Electricity",
row:5, row:5,
prerequisites:["Scientific Theory"], prerequisites:["Scientific Theory"]
description:"Reveals Aluminium on map and allows construction of stock exchange, increasing gold"
}, },
{ {
name:"Steam Power", name:"Steam Power",
row:7, row:7,
prerequisites:["Scientific Theory","Chemistry"], prerequisites:["Scientific Theory","Chemistry"]
description:"Enables construction of factories, boosting production, and increases produciton of lumber mills, "
} }
] ]
}, },
@ -333,19 +301,17 @@
name:"Refrigeration", name:"Refrigeration",
row:4, row:4,
prerequisites:["Electricity"], prerequisites:["Electricity"],
description:"Does nothing since we have no sea tiles - In theory, allows construction of offshore platforms and submarines" baseDescription:"Does nothing since we have no sea tiles - In theory, allows construction of offshore platforms and submarines"
},*/ },*/
{ {
name:"Radio", name:"Radio",
row:5, row:5,
prerequisites:["Electricity"], prerequisites:["Electricity"]
description:"Allows construction of broadcast towers and the Eiffel Tower, increasing culture"
}, },
{ {
name:"Combustion", name:"Combustion",
row:8, row:8,
prerequisites:["Steam Power"], prerequisites:["Steam Power"]
description:"Allows construction of railroads, providing fast transport and a 25% production boost to cities"
} }
] ]
}, },
@ -359,26 +325,23 @@
{ {
name:"Plastics", name:"Plastics",
row:3, row:3,
prerequisites:["Biology"], prerequisites:["Biology"]
description:"Allows construction of Research Lab, increasing science"
},/* },/*
{ {
name:"Electronics", name:"Electronics",
row:5, row:5,
prerequisites:["Radio"], prerequisites:["Radio"],
description:"Contributes only war-relatied things - on hold until AI is introduced - todo" baseDescription:"Contributes only war-relatied things - on hold until AI is introduced - todo"
},*/ },*/
{ {
name:"Mass Media", name:"Mass Media",
row:6, row:6,
prerequisites:["Radio"], prerequisites:["Radio"]
description:"Allows construction of Stadiums and the Sydney Opera House, boosting happiness"
}, },
{ {
name:"Flight", name:"Flight",
row:7, row:7,
prerequisites:["Combustion"], prerequisites:["Combustion"]
description:"Allows construction of the Cristo Redentor, reducing cost of new policies"
}, },
] ]
}, },
@ -391,20 +354,18 @@
{ {
name:"Pharmaceuticals", name:"Pharmaceuticals",
row:3, row:3,
prerequisites:["Plastics"], prerequisites:["Plastics"]
description:"Enables construction of medical labs, alowing for greater city growth"
}, },
{ {
name:"Computers", name:"Computers",
row:5, row:5,
prerequisites:["Mass Media"], prerequisites:["Mass Media"],
description:"+10% science and production in all cities" baseDescription:"+10% science and production in all cities"
}, },
{ {
name:"Nuclear Fission", name:"Nuclear Fission",
row:7, row:7,
prerequisites:["Combustion"], prerequisites:["Combustion"]
description:"Allows construction of Nuclear Plants, increasing production"
} }
] ]
}, },
@ -417,20 +378,17 @@
{ {
name:"Ecology", name:"Ecology",
row:3, row:3,
prerequisites:["Pharmaceuticals"], prerequisites:["Pharmaceuticals"]
description:"Enables construction of Solar Plants on cities near deserts, increasing production"
}, },
{ {
name:"Robotics", name:"Robotics",
row:4, row:4,
prerequisites:["Computers"], prerequisites:["Computers"]
description:"Allow construction of SS Boosters, a vital part of the spaceship, and the Spaceship Factory, which speeds the production of spaceship parts"
}, },
{ {
name:"Rocketry", name:"Rocketry",
row:6, row:6,
prerequisites:["Flight","Computers"], prerequisites:["Flight","Computers"]
description:"Allows you to construct the Apollo Project, to find a way off of this planet!"
} }
] ]
}, },
@ -444,20 +402,17 @@
{ {
name:"Nanotechnology", name:"Nanotechnology",
row:3, row:3,
prerequisites:["Robotics","Ecology"], prerequisites:["Robotics","Ecology"]
description:"Allow construction of the SS Statis Chamber, a vital part of the spaceship"
} }
{ {
name:"Satellites", name:"Satellites",
row:5, row:5,
prerequisites:["Rocketry","Computers","Ecology"], prerequisites:["Rocketry","Computers","Ecology"]
description:"Allow construction of the SS Cockpit, a vital part of the spaceship"
} }
{ {
name:"Particle Physics", name:"Particle Physics",
row:6, row:6,
prerequisites:["Ecology","Computers","Nuclear Fission"], prerequisites:["Ecology","Computers","Nuclear Fission"]
description:"Allow construction of the SS Engine, a vital part of the spaceship"
} }
] ]
}, },
@ -472,7 +427,7 @@
name:"Future Tech", name:"Future Tech",
row:5, row:5,
prerequisites:["Nanotechnology","Particle Physics","Satellites"], prerequisites:["Nanotechnology","Particle Physics","Satellites"],
description:"Who knows what the future holds?" baseDescription:"Who knows what the future holds?"
} }
] ]
} }

View File

@ -109,7 +109,7 @@
hurryCostModifier:20 hurryCostModifier:20
}, },
/* Medieval Era */ // Medieval Era
{ {
name:"Crossbowman", name:"Crossbowman",
baseDescription: "", baseDescription: "",
@ -120,7 +120,41 @@
cost: 120, cost: 120,
requiredTech:"Machinery", requiredTech:"Machinery",
hurryCostModifier:20 hurryCostModifier:20
} },
{
name:"Trebuchet",
baseDescription: "",
unitType:"Siege",
movement:2,
strength:12,
rangedStrength:14,
cost: 120,
requiredTech:"Physics",
uniques:["Bonus vs City 200%","No defensive terrain bonus","Must set up to ranged attack","Limited Visibility"],
hurryCostModifier:20
},
{
name:"Longswordsman",
baseDescription: "",
unitType:"Melee",
movement:2,
strength:21,
cost: 120,
requiredTech:"Steel",
requiredResource:"Iron",
hurryCostModifier:20
},
{
name:"Pikeman",
baseDescription: "",
unitType:"Melee",
movement:2,
strength:16,
cost: 90,
requiredTech:"Civil Service",
uniques:["Bonus vs Mounted 50%"],
hurryCostModifier:20
},
/* Great people */ /* Great people */

View File

@ -27,7 +27,7 @@ class CityConstructions {
val stats = Stats() val stats = Stats()
for (building in getBuiltBuildings()) for (building in getBuiltBuildings())
stats.add(building.getStats(cityInfo.civInfo.policies.adoptedPolicies)) stats.add(building.getStats(cityInfo.civInfo.policies.adoptedPolicies))
stats.science += (cityInfo.buildingUniques.count({ it == "SciencePer2Pop" }) * cityInfo.population.population / 2).toFloat() stats.science += (cityInfo.buildingUniques.count({ it == "Science Per 2 Population" }) * cityInfo.population.population / 2).toFloat()
return stats return stats
} }

View File

@ -22,7 +22,7 @@ class CityExpansionManager {
fun getCultureToNextTile(): Int { fun getCultureToNextTile(): Int {
val numTilesClaimed = cityInfo.tiles.size - 7 val numTilesClaimed = cityInfo.tiles.size - 7
var cultureToNextTile = 6 * Math.pow(numTilesClaimed + 1.4813, 1.3) var cultureToNextTile = 6 * Math.pow(numTilesClaimed + 1.4813, 1.3)
if (cityInfo.civInfo.buildingUniques.contains("NewTileCostReduction")) cultureToNextTile *= 0.75 //Speciality of Angkor Wat if (cityInfo.civInfo.buildingUniques.contains("Cost of acquiring new tiles reduced by 25%")) cultureToNextTile *= 0.75 //Speciality of Angkor Wat
if (cityInfo.civInfo.policies.isAdopted("Tradition")) cultureToNextTile *= 0.75 if (cityInfo.civInfo.policies.isAdopted("Tradition")) cultureToNextTile *= 0.75
return Math.round(cultureToNextTile).toInt() return Math.round(cultureToNextTile).toInt()
} }

View File

@ -67,7 +67,7 @@ class CityInfo {
if (building.greatPersonPoints != null) if (building.greatPersonPoints != null)
greatPersonPoints.add(building.greatPersonPoints!!) greatPersonPoints.add(building.greatPersonPoints!!)
if (civInfo.buildingUniques.contains("GreatPersonGenerationIncrease")) if (civInfo.buildingUniques.contains("+33% great person generation in all cities"))
greatPersonPoints = greatPersonPoints.times(1.33f) greatPersonPoints = greatPersonPoints.times(1.33f)
if (civInfo.policies.isAdopted("Entrepreneurship")) if (civInfo.policies.isAdopted("Entrepreneurship"))
greatPersonPoints.gold *= 1.25f greatPersonPoints.gold *= 1.25f

View File

@ -30,7 +30,7 @@ class CityStats {
val civInfo = cityInfo.civInfo val civInfo = cityInfo.civInfo
var goldFromTradeRoute = civInfo.getCapital().population.population * 0.15 + cityInfo.population.population * 1.1 - 1 // Calculated by http://civilization.wikia.com/wiki/Trade_route_(Civ5) var goldFromTradeRoute = civInfo.getCapital().population.population * 0.15 + cityInfo.population.population * 1.1 - 1 // Calculated by http://civilization.wikia.com/wiki/Trade_route_(Civ5)
if (civInfo.policies.isAdopted("Trade Unions")) goldFromTradeRoute += 2.0 if (civInfo.policies.isAdopted("Trade Unions")) goldFromTradeRoute += 2.0
if (civInfo.buildingUniques.contains("TradeRouteGoldIncrease")) goldFromTradeRoute *= 1.25 // Machu Pichu speciality if (civInfo.buildingUniques.contains("Gold from all trade routes +25%")) goldFromTradeRoute *= 1.25 // Machu Pichu speciality
stats.gold += goldFromTradeRoute.toFloat() stats.gold += goldFromTradeRoute.toFloat()
} }
return stats return stats
@ -102,7 +102,7 @@ class CityStats {
var unhappinessFromCitizens = cityInfo.population.population.toFloat() var unhappinessFromCitizens = cityInfo.population.population.toFloat()
if (civInfo.policies.isAdopted("Democracy")) if (civInfo.policies.isAdopted("Democracy"))
unhappinessFromCitizens -= cityInfo.population.getNumberOfSpecialists() * 0.5f unhappinessFromCitizens -= cityInfo.population.getNumberOfSpecialists() * 0.5f
if (civInfo.buildingUniques.contains("CitizenUnhappinessDecreased")) if (civInfo.buildingUniques.contains("Unhappiness from population decreased by 10%"))
unhappinessFromCitizens *= 0.9f unhappinessFromCitizens *= 0.9f
if (civInfo.policies.isAdopted("Aristocracy")) if (civInfo.policies.isAdopted("Aristocracy"))
unhappinessFromCitizens *= 0.95f unhappinessFromCitizens *= 0.95f
@ -163,6 +163,14 @@ class CityStats {
return stats return stats
} }
private fun getStatPercentBonusesFromWonders(): Stats {
val stats = Stats()
val civUniques = cityInfo.civInfo.buildingUniques
if (civUniques.contains("Culture in all cities increased by 25%")) stats.culture += 25f
return stats
}
private fun getStatPercentBonusesFromPolicies(policies: HashSet<String>, cityConstructions: CityConstructions): Stats { private fun getStatPercentBonusesFromPolicies(policies: HashSet<String>, cityConstructions: CityConstructions): Stats {
val stats = Stats() val stats = Stats()
@ -200,6 +208,8 @@ class CityStats {
val statPercentBonuses = cityInfo.cityConstructions.getStatPercentBonuses() val statPercentBonuses = cityInfo.cityConstructions.getStatPercentBonuses()
statPercentBonuses.add(getStatPercentBonusesFromGoldenAge(cityInfo.civInfo.goldenAges.isGoldenAge())) statPercentBonuses.add(getStatPercentBonusesFromGoldenAge(cityInfo.civInfo.goldenAges.isGoldenAge()))
statPercentBonuses.add(getStatPercentBonusesFromPolicies(civInfo.policies.adoptedPolicies, cityInfo.cityConstructions)) statPercentBonuses.add(getStatPercentBonusesFromPolicies(civInfo.policies.adoptedPolicies, cityInfo.cityConstructions))
// from wonders - Culture in all cities increased by 25%
statPercentBonuses.add(getStatPercentBonusesFromWonders())
statPercentBonuses.add(getStatPercentBonusesFromRailroad()) statPercentBonuses.add(getStatPercentBonusesFromRailroad())
statPercentBonuses.add(getStatPercentBonusesFromMarble()) statPercentBonuses.add(getStatPercentBonusesFromMarble())
statPercentBonuses.add(getStatPercentBonusesFromComputers()) statPercentBonuses.add(getStatPercentBonusesFromComputers())

View File

@ -56,7 +56,7 @@ class PopulationManager {
// growth! // growth!
{ {
foodStored -= getFoodToNextPopulation() foodStored -= getFoodToNextPopulation()
if (cityInfo.buildingUniques.contains("FoodCarriesOver")) foodStored += (0.4f * getFoodToNextPopulation()).toInt() // Aqueduct special if (cityInfo.buildingUniques.contains("40% of food is carried over after a new citizen is born")) foodStored += (0.4f * getFoodToNextPopulation()).toInt() // Aqueduct special
population++ population++
autoAssignPopulation() autoAssignPopulation()
cityInfo.civInfo.addNotification(cityInfo.name + " has grown!", cityInfo.location) cityInfo.civInfo.addNotification(cityInfo.name + " has grown!", cityInfo.location)

View File

@ -91,7 +91,7 @@ class CivilizationInfo {
happiness += getCivResources().keys happiness += getCivResources().keys
.count { it.resourceType === ResourceType.Luxury } * happinessPerUniqueLuxury .count { it.resourceType === ResourceType.Luxury } * happinessPerUniqueLuxury
happiness += cities.sumBy { it.cityStats.getCityHappiness().toInt() } happiness += cities.sumBy { it.cityStats.getCityHappiness().toInt() }
if (buildingUniques.contains("HappinessPerSocialPolicy")) if (buildingUniques.contains("Provides 1 happiness per social policy"))
happiness += policies.getAdoptedPolicies().count { !it.endsWith("Complete") } happiness += policies.getAdoptedPolicies().count { !it.endsWith("Complete") }
return happiness return happiness
} }
@ -182,7 +182,7 @@ class CivilizationInfo {
.flatMap { it.neighbors } // tiles adjacent to city tiles .flatMap { it.neighbors } // tiles adjacent to city tiles
viewablePositions += gameInfo.tileMap.values viewablePositions += gameInfo.tileMap.values
.filter { it.unit != null && it.unit!!.owner == civName } .filter { it.unit != null && it.unit!!.owner == civName }
.flatMap { it.getViewableTiles(2)} // Tiles within 2 tiles of units .flatMap { it.getViewableTiles(it.unit!!.getVisibilityRange())} // Tiles within 2 tiles of units
viewablePositions.map { it.position }.filterNot { exploredTiles.contains(it) }.toCollection(exploredTiles) viewablePositions.map { it.position }.filterNot { exploredTiles.contains(it) }.toCollection(exploredTiles)
return viewablePositions return viewablePositions
} }

View File

@ -16,7 +16,7 @@ class GoldenAgeManager {
fun enterGoldenAge() { fun enterGoldenAge() {
var turnsToGoldenAge = 10.0 var turnsToGoldenAge = 10.0
if (civInfo.buildingUniques.contains("GoldenAgeLengthIncrease")) turnsToGoldenAge *= 1.5 if (civInfo.buildingUniques.contains("Golden Age length increases +50%")) turnsToGoldenAge *= 1.5
if (civInfo.policies.isAdopted("Freedom Complete")) turnsToGoldenAge *= 1.5 if (civInfo.policies.isAdopted("Freedom Complete")) turnsToGoldenAge *= 1.5
turnsLeftForCurrentGoldenAge += turnsToGoldenAge.toInt() turnsLeftForCurrentGoldenAge += turnsToGoldenAge.toInt()
civInfo.addNotification("You have entered a golden age!", null) civInfo.addNotification("You have entered a golden age!", null)

View File

@ -26,7 +26,7 @@ class PolicyManager {
var cityModifier = 0.3 * (civInfo.cities.size - 1) var cityModifier = 0.3 * (civInfo.cities.size - 1)
if (isAdopted("Representation")) cityModifier *= (2 / 3f).toDouble() if (isAdopted("Representation")) cityModifier *= (2 / 3f).toDouble()
if (isAdopted("Piety Complete")) baseCost *= 0.9 if (isAdopted("Piety Complete")) baseCost *= 0.9
if (civInfo.buildingUniques.contains("PolicyCostReduction")) baseCost *= 0.9 if (civInfo.buildingUniques.contains("Culture cost of adopting new Policies reduced by 10%")) baseCost *= 0.9
val cost: Int = Math.round(baseCost * (1 + cityModifier)).toInt() val cost: Int = Math.round(baseCost * (1 + cityModifier)).toInt()
return cost - (cost % 5) return cost - (cost % 5)
} }

View File

@ -124,4 +124,10 @@ class MapUnit {
override fun toString(): String { override fun toString(): String {
return name +" - "+owner return name +" - "+owner
} }
fun getVisibilityRange(): Int {
var visibilityRange = 2
if(hasUnique("Limited Visibility")) visibilityRange-=1
return visibilityRange
}
} }

View File

@ -111,7 +111,7 @@ class TileInfo {
if (stats.production < 0) stats.production = 0f if (stats.production < 0) stats.production = 0f
if ("Jungle" == terrainFeature && city != null if ("Jungle" == terrainFeature && city != null
&& city.buildingUniques.contains("JunglesProvideScience")) && city.buildingUniques.contains("Jungles provide +2 science"))
stats.science += 2f stats.science += 2f
if (stats.gold != 0f && observingCiv.goldenAges.isGoldenAge()) if (stats.gold != 0f && observingCiv.goldenAges.isGoldenAge())
stats.gold++ stats.gold++

View File

@ -44,6 +44,12 @@ class Building : NamedStats(), IConstruction{
fun getRequiredTech(): Technology = GameBasics.Technologies[requiredTech]!! fun getRequiredTech(): Technology = GameBasics.Technologies[requiredTech]!!
fun getShortDescription(): String { // should fit in one line
var str = getStats(hashSetOf()).toString()
if(unique!=null) str += ", "+ unique!!
return str
}
fun getStats(adoptedPolicies: HashSet<String>): Stats { fun getStats(adoptedPolicies: HashSet<String>): Stats {
val stats = this.clone() val stats = this.clone()
if (adoptedPolicies.contains("Organized Religion") && hashSetOf("Monument", "Temple", "Monastery").contains(name)) if (adoptedPolicies.contains("Organized Religion") && hashSetOf("Monument", "Temple", "Monastery").contains(name))
@ -141,7 +147,7 @@ class Building : NamedStats(), IConstruction{
if (requiredBuildingInAllCities != null && civInfo.cities.any { !it.cityConstructions.isBuilt(requiredBuildingInAllCities!!) }) if (requiredBuildingInAllCities != null && civInfo.cities.any { !it.cityConstructions.isBuilt(requiredBuildingInAllCities!!) })
return false return false
if (cannotBeBuiltWith != null && construction.isBuilt(cannotBeBuiltWith!!)) return false if (cannotBeBuiltWith != null && construction.isBuilt(cannotBeBuiltWith!!)) return false
if ("MustBeNextToDesert" == unique && !construction.cityInfo.getCenterTile().getTilesInDistance(1).any { it.baseTerrain == "Desert" }) if ("Must be next to desert" == unique && !construction.cityInfo.getCenterTile().getTilesInDistance(1).any { it.baseTerrain == "Desert" })
return false return false
if (requiredResource != null && !civInfo.getCivResources().containsKey(GameBasics.TileResources[requiredResource!!])) if (requiredResource != null && !civInfo.getCivResources().containsKey(GameBasics.TileResources[requiredResource!!]))
return false return false
@ -158,8 +164,8 @@ class Building : NamedStats(), IConstruction{
if (!containsResourceWithImprovement) return false if (!containsResourceWithImprovement) return false
} }
if ("SpaceshipPart" == unique) { if ("Spaceship part" == unique) {
if (!civInfo.buildingUniques.contains("ApolloProgram")) return false if (!civInfo.buildingUniques.contains("Allows the building of spaceship parts")) return false
if (civInfo.scienceVictory.unconstructedParts()[name] == 0) return false // Don't need to build any more of these! if (civInfo.scienceVictory.unconstructedParts()[name] == 0) return false // Don't need to build any more of these!
} }
return true return true
@ -168,7 +174,7 @@ class Building : NamedStats(), IConstruction{
override fun postBuildEvent(construction: CityConstructions) { override fun postBuildEvent(construction: CityConstructions) {
val civInfo = construction.cityInfo.civInfo val civInfo = construction.cityInfo.civInfo
if (unique == "SpaceshipPart") { if (unique == "Spaceship part") {
civInfo.scienceVictory.currentParts.add(name, 1) civInfo.scienceVictory.currentParts.add(name, 1)
UnCivGame.Current.screen = VictoryScreen() UnCivGame.Current.screen = VictoryScreen()
return return
@ -178,16 +184,16 @@ class Building : NamedStats(), IConstruction{
if (providesFreeBuilding != null && !construction.builtBuildings.contains(providesFreeBuilding!!)) if (providesFreeBuilding != null && !construction.builtBuildings.contains(providesFreeBuilding!!))
construction.builtBuildings.add(providesFreeBuilding!!) construction.builtBuildings.add(providesFreeBuilding!!)
when (unique) { when (unique) {
"ApolloProgram" -> "Enables construction of Spaceship parts" ->
if(construction.cityInfo.civInfo.isPlayerCivilization()) if(construction.cityInfo.civInfo.isPlayerCivilization())
UnCivGame.Current.screen = VictoryScreen() UnCivGame.Current.screen = VictoryScreen()
"EmpireEntersGoldenAge" -> civInfo.goldenAges.enterGoldenAge() "Empire enters golden age" -> civInfo.goldenAges.enterGoldenAge()
"FreeGreatArtistAppears" -> civInfo.addGreatPerson("Great Artist") "Free Great Artist Appears" -> civInfo.addGreatPerson("Great Artist")
"WorkerConstruction" -> { "Worker construction increased 25%, provides 2 free workers" -> {
civInfo.placeUnitNearTile(construction.cityInfo.location, "Worker") civInfo.placeUnitNearTile(construction.cityInfo.location, "Worker")
civInfo.placeUnitNearTile(construction.cityInfo.location, "Worker") civInfo.placeUnitNearTile(construction.cityInfo.location, "Worker")
} }
"FreeSocialPolicy" -> { "Free Social Policy" -> {
civInfo.policies.freePolicies++ civInfo.policies.freePolicies++
if(construction.cityInfo.civInfo.isPlayerCivilization()) if(construction.cityInfo.civInfo.isPlayerCivilization())
UnCivGame.Current.screen = PolicyPickerScreen(civInfo) UnCivGame.Current.screen = PolicyPickerScreen(civInfo)

View File

@ -1,14 +1,47 @@
package com.unciv.models.gamebasics package com.unciv.models.gamebasics
import java.util.HashSet import java.util.*
class Technology { class Technology : ICivilopedia {
override val description: String
get(){
val SB=StringBuilder()
if(baseDescription!=null) SB.appendln(baseDescription)
val enabledUnits = GameBasics.Units.values.filter { it.requiredTech==name }
if(enabledUnits.isNotEmpty()) SB.appendln("Units enabled: "+enabledUnits.map { it.name }.joinToString())
val enabledBuildings = GameBasics.Buildings.values.filter { it.requiredTech==name }
val regularBuildings = enabledBuildings.filter { !it.isWonder }
if(regularBuildings.isNotEmpty())
SB.appendln("Buildings enabled: "+regularBuildings.map { it.name + " ("+it.getShortDescription()+")" }.joinToString())
val wonders = enabledBuildings.filter { it.isWonder }
if(wonders.isNotEmpty()) SB.appendln("Wonders enabled: "+wonders.map { it.name }.joinToString())
val revealedResource = GameBasics.TileResources.values.filter { it.revealedBy==name }.firstOrNull() // can only be one
if(revealedResource!=null) SB.appendln("Reveals $revealedResource on map")
val tileImprovements = GameBasics.TileImprovements.values.filter { it.techRequired==name }
if(tileImprovements.isNotEmpty()) SB.appendln("Tile improvements enabled: "+tileImprovements.map { it.name }.joinToString())
val improvedImprovements = GameBasics.TileImprovements.values.filter { it.improvingTech==name }.groupBy { it.improvingTechStats.toString()!! }
improvedImprovements.forEach{
val impimpString = it.value.joinToString { it.name } +" provide" + (if(it.value.size==1) "s" else "") +" "+it.key
SB.appendln(impimpString)
}
return SB.toString().trim()
}
lateinit var name: String lateinit var name: String
var description: String? = null var baseDescription: String? = null
var cost: Int = 0 var cost: Int = 0
@JvmField var prerequisites = HashSet<String>() var prerequisites = HashSet<String>()
@JvmField var column: TechColumn? = null // The column that this tech is in the tech tree var column: TechColumn? = null // The column that this tech is in the tech tree
@JvmField var row: Int = 0 var row: Int = 0
override fun toString(): String {
return name
}
} }

View File

@ -16,7 +16,7 @@ class TileImprovement : NamedStats(), ICivilopedia {
private val turnsToBuild: Int = 0 // This is the base cost. private val turnsToBuild: Int = 0 // This is the base cost.
fun getTurnsToBuild(civInfo: CivilizationInfo): Int { fun getTurnsToBuild(civInfo: CivilizationInfo): Int {
var realTurnsToBuild = turnsToBuild.toFloat() var realTurnsToBuild = turnsToBuild.toFloat()
if (civInfo.buildingUniques.contains("WorkerConstruction")) if (civInfo.buildingUniques.contains("Worker construction increased 25%, provides 2 free workers"))
realTurnsToBuild *= 0.75f realTurnsToBuild *= 0.75f
if (civInfo.policies.isAdopted("Citizenship")) if (civInfo.policies.isAdopted("Citizenship"))
realTurnsToBuild *= 0.75f realTurnsToBuild *= 0.75f

View File

@ -39,6 +39,7 @@ class CivilopediaScreen : CameraStageBaseScreen() {
map["Terrains"] = GameBasics.Terrains.values map["Terrains"] = GameBasics.Terrains.values
map["Tile Improvements"] = GameBasics.TileImprovements.values map["Tile Improvements"] = GameBasics.TileImprovements.values
map["Units"] = GameBasics.Units.values map["Units"] = GameBasics.Units.values
map["Technologies"] = GameBasics.Technologies.values
val nameList = List<ICivilopedia>(CameraStageBaseScreen.skin) val nameList = List<ICivilopedia>(CameraStageBaseScreen.skin)

View File

@ -55,7 +55,7 @@ class VictoryScreen : PickerScreen() {
fun scienceVictoryColumn():Table{ fun scienceVictoryColumn():Table{
val t = Table() val t = Table()
t.defaults().pad(5f) t.defaults().pad(5f)
t.add(getMilestone("Built Apollo Program",civInfo.buildingUniques.contains("ApolloProgram"))).row() t.add(getMilestone("Built Apollo Program",civInfo.buildingUniques.contains("Allows the building of spaceship parts"))).row()
val scienceVictory = civInfo.scienceVictory val scienceVictory = civInfo.scienceVictory