mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-30 15:30:43 -04:00
RIP PolicyManager.PolicyEffects
This commit is contained in:
parent
97916e15a1
commit
1fb566ec30
@ -22,7 +22,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Oligarchy",
|
"name": "Oligarchy",
|
||||||
"effect": "Units in cities cost no Maintenance, garrisoned city +50% attacking strength",
|
"effect": "Units in cities cost no Maintenance, garrisoned city +50% attacking strength",
|
||||||
"uniques": ["Units in cities cost no Maintenance"]
|
"uniques": ["Units in cities cost no Maintenance", "+50% attacking strength for cities with garrisoned units"]
|
||||||
"row": 1,
|
"row": 1,
|
||||||
"column": 5
|
"column": 5
|
||||||
},
|
},
|
||||||
|
@ -112,7 +112,6 @@ object BattleDamage {
|
|||||||
|
|
||||||
fun getAttackModifiers(attacker: ICombatant, tileToAttackFrom:TileInfo?, defender: ICombatant): HashMap<String, Float> {
|
fun getAttackModifiers(attacker: ICombatant, tileToAttackFrom:TileInfo?, defender: ICombatant): HashMap<String, Float> {
|
||||||
val modifiers = getGeneralModifiers(attacker, defender)
|
val modifiers = getGeneralModifiers(attacker, defender)
|
||||||
val policies = attacker.getCivInfo().policies
|
|
||||||
|
|
||||||
if (attacker is MapUnitCombatant) {
|
if (attacker is MapUnitCombatant) {
|
||||||
modifiers.putAll(getTileSpecificModifiers(attacker, defender.getTile()))
|
modifiers.putAll(getTileSpecificModifiers(attacker, defender.getTile()))
|
||||||
@ -147,14 +146,14 @@ object BattleDamage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (policies.autocracyCompletedTurns > 0 && policies.hasEffect("+20% attack bonus to all Military Units for 30 turns"))
|
if (attacker.getCivInfo().policies.autocracyCompletedTurns > 0)
|
||||||
modifiers["Autocracy Complete"] = 0.2f
|
modifiers["Autocracy Complete"] = 0.2f
|
||||||
|
|
||||||
if (defender is CityCombatant &&
|
if (defender is CityCombatant &&
|
||||||
attacker.getCivInfo().hasUnique("+15% Combat Strength for all units when attacking Cities"))
|
attacker.getCivInfo().hasUnique("+15% Combat Strength for all units when attacking Cities"))
|
||||||
modifiers["Statue of Zeus"] = 0.15f
|
modifiers["Statue of Zeus"] = 0.15f
|
||||||
} else if (attacker is CityCombatant) {
|
} else if (attacker is CityCombatant) {
|
||||||
if (policies.hasEffect("Units in cities cost no Maintenance, garrisoned city +50% attacking strength")
|
if (attacker.getCivInfo().hasUnique("+50% attacking strength for cities with garrisoned units")
|
||||||
&& attacker.city.getCenterTile().militaryUnit != null)
|
&& attacker.city.getCenterTile().militaryUnit != null)
|
||||||
modifiers["Oligarchy"] = 0.5f
|
modifiers["Oligarchy"] = 0.5f
|
||||||
}
|
}
|
||||||
|
@ -208,7 +208,7 @@ class CityStats {
|
|||||||
var happinessFromPolicies = 0f
|
var happinessFromPolicies = 0f
|
||||||
if (civInfo.hasUnique("+1 happiness for every 10 citizens in a city"))
|
if (civInfo.hasUnique("+1 happiness for every 10 citizens in a city"))
|
||||||
happinessFromPolicies += (cityInfo.population.population / 10).toFloat()
|
happinessFromPolicies += (cityInfo.population.population / 10).toFloat()
|
||||||
if (civInfo.policies.hasEffect("+1 gold and -1 unhappiness for every 2 citizens in capital")
|
if (civInfo.hasUnique("+1 gold and -1 unhappiness for every 2 citizens in capital")
|
||||||
&& cityInfo.isCapital())
|
&& cityInfo.isCapital())
|
||||||
happinessFromPolicies += (cityInfo.population.population / 2).toFloat()
|
happinessFromPolicies += (cityInfo.population.population / 2).toFloat()
|
||||||
if (civInfo.hasUnique("+1 happiness for every city connected to capital")
|
if (civInfo.hasUnique("+1 happiness for every city connected to capital")
|
||||||
|
@ -63,7 +63,7 @@ class CivInfoStats(val civInfo: CivilizationInfo){
|
|||||||
// Inca unique according to https://civilization.fandom.com/wiki/Incan_%28Civ5%29
|
// Inca unique according to https://civilization.fandom.com/wiki/Incan_%28Civ5%29
|
||||||
if (civInfo.nation.greatAndeanRoad)
|
if (civInfo.nation.greatAndeanRoad)
|
||||||
transportationUpkeep = (transportationUpkeep - hillsUpkeep) / 2
|
transportationUpkeep = (transportationUpkeep - hillsUpkeep) / 2
|
||||||
if (civInfo.policies.hasEffect("Maintenance on roads & railroads reduced by 33%, +2 gold from all trade routes"))
|
if (civInfo.hasUnique("Maintenance on roads & railroads reduced by 33%, +2 gold from all trade routes"))
|
||||||
transportationUpkeep = (transportationUpkeep * 2 / 3f).toInt()
|
transportationUpkeep = (transportationUpkeep * 2 / 3f).toInt()
|
||||||
return transportationUpkeep
|
return transportationUpkeep
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,6 @@ import com.unciv.Constants
|
|||||||
import com.unciv.models.ruleset.Policy
|
import com.unciv.models.ruleset.Policy
|
||||||
import com.unciv.models.ruleset.UniqueMap
|
import com.unciv.models.ruleset.UniqueMap
|
||||||
import com.unciv.models.ruleset.VictoryType
|
import com.unciv.models.ruleset.VictoryType
|
||||||
import com.unciv.models.translations.getPlaceholderParameters
|
|
||||||
import com.unciv.models.translations.getPlaceholderText
|
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
@ -16,7 +14,6 @@ class PolicyManager {
|
|||||||
@Transient lateinit var civInfo: CivilizationInfo
|
@Transient lateinit var civInfo: CivilizationInfo
|
||||||
// Needs to be separate from the actual adopted policies, so that
|
// Needs to be separate from the actual adopted policies, so that
|
||||||
// in different game versions, policies can have different effects
|
// in different game versions, policies can have different effects
|
||||||
@Transient internal val policyEffects = HashSet<String>()
|
|
||||||
@Transient internal val policyUniques = UniqueMap()
|
@Transient internal val policyUniques = UniqueMap()
|
||||||
|
|
||||||
var freePolicies = 0
|
var freePolicies = 0
|
||||||
@ -48,7 +45,6 @@ class PolicyManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun addPolicyToTransients(policy: Policy){
|
fun addPolicyToTransients(policy: Policy){
|
||||||
policyEffects.addAll(policy.uniques)
|
|
||||||
for(unique in policy.uniqueObjects)
|
for(unique in policy.uniqueObjects)
|
||||||
policyUniques.addUnique(unique)
|
policyUniques.addUnique(unique)
|
||||||
}
|
}
|
||||||
@ -90,8 +86,6 @@ class PolicyManager {
|
|||||||
|
|
||||||
fun isAdopted(policyName: String): Boolean = adoptedPolicies.contains(policyName)
|
fun isAdopted(policyName: String): Boolean = adoptedPolicies.contains(policyName)
|
||||||
|
|
||||||
fun hasEffect(effectName:String) = policyEffects.contains(effectName)
|
|
||||||
|
|
||||||
fun isAdoptable(policy: Policy): Boolean {
|
fun isAdoptable(policy: Policy): Boolean {
|
||||||
if(isAdopted(policy.name)) return false
|
if(isAdopted(policy.name)) return false
|
||||||
if (policy.name.endsWith("Complete")) return false
|
if (policy.name.endsWith("Complete")) return false
|
||||||
|
@ -6,7 +6,6 @@ open class Policy : INamed {
|
|||||||
lateinit var branch: PolicyBranch // not in json - added in gameBasics
|
lateinit var branch: PolicyBranch // not in json - added in gameBasics
|
||||||
|
|
||||||
override lateinit var name: String
|
override lateinit var name: String
|
||||||
lateinit var effect: String
|
|
||||||
var uniques: ArrayList<String> = ArrayList()
|
var uniques: ArrayList<String> = ArrayList()
|
||||||
val uniqueObjects:List<Unique> by lazy { uniques.map { Unique(it) } }
|
val uniqueObjects:List<Unique> by lazy { uniques.map { Unique(it) } }
|
||||||
var row: Int = 0
|
var row: Int = 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user