Added civ-wide per-building stat bonus

This commit is contained in:
Yair Morgenstern
2020-07-30 19:05:07 +03:00
parent ca58bb22ac
commit 8dfc147bb1
4 changed files with 18 additions and 12 deletions

View File

@ -137,8 +137,11 @@ class Building : NamedStats(), IConstruction{
val adoptedPolicies = civInfo.policies.adoptedPolicies
val baseBuildingName = getBaseBuilding(civInfo.gameInfo.ruleSet).name
if (adoptedPolicies.contains("Organized Religion") && cultureBuildings.contains(baseBuildingName ))
stats.happiness += 1
for(unique in civInfo.getMatchingUniques("[] from every []")) {
val placeholderParams = unique.getPlaceholderParameters()
if (placeholderParams[1] != baseBuildingName) continue
stats.add(Stats.parse(placeholderParams[0]))
}
if (adoptedPolicies.contains("Free Religion") && cultureBuildings.contains(baseBuildingName ))
stats.culture += 1f
@ -155,13 +158,6 @@ class Building : NamedStats(), IConstruction{
if (adoptedPolicies.contains("Constitution") && isWonder)
stats.culture += 2f
if (baseBuildingName == "Castle"
&& civInfo.hasUnique("+1 happiness, +2 culture and +3 gold from every Castle")){
stats.happiness+=1
stats.culture+=2
stats.gold+=3
}
if (adoptedPolicies.contains("Police State") && baseBuildingName == "Courthouse")
stats.happiness += 3
@ -196,8 +192,13 @@ class Building : NamedStats(), IConstruction{
override fun getProductionCost(civInfo: CivilizationInfo): Int {
var productionCost = cost.toFloat()
if (!isWonder && culture != 0f && civInfo.policies.hasEffect("Building time of culture buildings reduced by 15%"))
productionCost *= 0.85f
if(!isWonder)
for(unique in civInfo.getMatchingUniques("Production cost of [] buildings reduced by []%")){
val placeholderParams = unique.getPlaceholderParameters()
val stat = Stat.valueOf(placeholderParams[0])
if(this.isStatRelated(stat))
productionCost *= (1f - placeholderParams[1].toFloat()/100)
}
if (name == "Courthouse" && civInfo.policies.hasEffect("+3 Happiness from every Courthouse. Build Courthouses in half the usual time."))
productionCost *= 0.5f

View File

@ -14,6 +14,7 @@ import com.unciv.models.ruleset.tile.TileImprovement
import com.unciv.models.ruleset.tile.TileResource
import com.unciv.models.ruleset.unit.BaseUnit
import com.unciv.models.ruleset.unit.Promotion
import com.unciv.models.stats.Stat
import com.unciv.models.stats.Stats
import com.unciv.ui.worldscreen.unit.UnitActions
import java.lang.reflect.Field
@ -201,6 +202,7 @@ object TranslationFileWriter {
for(parameter in parameters) {
val parameterName = when {
parameter.toIntOrNull() != null -> "amount"
Stat.values().any { it.name == parameter } -> "stat"
RulesetCache.getBaseRuleset().terrains.containsKey(parameter) -> "terrain"
RulesetCache.getBaseRuleset().units.containsKey(parameter) -> "unit"
RulesetCache.getBaseRuleset().tileImprovements.containsKey(parameter) -> "tileImprovement"