Add Militaristic type city-state.

This commit is contained in:
Duan Tao
2019-07-09 19:05:53 +08:00
committed by Yair Morgenstern
parent 3b515f58d7
commit a8e248b892
5 changed files with 44 additions and 2 deletions

View File

@ -939,6 +939,19 @@
secondaryColor:[194,97,255],
cities:["Antwerp"]
},
{
name:"Dublin",
adjective:["Dublin"],
cityStateType:"Militaristic",
declaringWar:"You leave us no choice. War it must be.",
attacked:"Very well, this shall not be forgotten.",
afterPeace:"May peace forever bless our lands.",
mainColor:[0, 0, 0],
secondaryColor:[211,180,113],
cities:["Dublin"]
},
/*
{
name:"Tyre",

View File

@ -3,5 +3,6 @@ package com.unciv.logic.civilization
enum class CityStateType{
Cultured,
Maritime,
Mercantile
Mercantile,
Militaristic
}

View File

@ -6,6 +6,7 @@ import com.badlogic.gdx.math.Vector2
import com.unciv.Constants
import com.unciv.UnCivGame
import com.unciv.logic.GameInfo
import com.unciv.logic.automation.NextTurnAutomation
import com.unciv.logic.city.CityInfo
import com.unciv.logic.civilization.diplomacy.DiplomacyManager
import com.unciv.logic.civilization.diplomacy.DiplomaticStatus
@ -397,5 +398,18 @@ class CivilizationInfo {
updateStatsForNextTurn()
}
fun giftMilitaryUnitBy(otherCiv: CivilizationInfo) {
val city = NextTurnAutomation().getClosestCities(this, otherCiv).city1
if (city == null) {
addNotification("Exception! Failed to find a suitable city to place gift unit.".tr(), null, Color.RED)
} else {
var militaryUnit = city.cityConstructions
.getConstructableUnits().filter { !it.unitType.isCivilian() && it.unitType.isLandUnit()}
.random()
placeUnitNearTile(city.location, militaryUnit.name)
addNotification("[${otherCiv.civName}] gave us a [${militaryUnit.name}] as gift near [${city.name}]!".tr(), null, Color.RED)
}
}
//endregion
}

View File

@ -3,6 +3,7 @@ package com.unciv.logic.civilization.diplomacy
import com.badlogic.gdx.graphics.Color
import com.unciv.Constants
import com.unciv.logic.civilization.AlertType
import com.unciv.logic.civilization.CityStateType
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.civilization.PopupAlert
import com.unciv.logic.trade.Trade
@ -30,7 +31,8 @@ enum class DiplomacyFlags{
BorderConflict,
SettledCitiesNearUs,
AgreedToNotSettleNearUs,
IgnoreThemSettlingNearUs
IgnoreThemSettlingNearUs,
ProvideMilitaryUnit
}
enum class DiplomaticModifiers{
@ -260,12 +262,23 @@ class DiplomacyManager() {
if(!hasFlag(DiplomacyFlags.DeclarationOfFriendship))
revertToZero(DiplomaticModifiers.DeclarationOfFriendship, 1/2f) //decreases slowly and will revert to full if it is declared later
if(otherCiv().isCityState() && otherCiv().getCityStateType() == CityStateType.Militaristic) {
if (relationshipLevel() < RelationshipLevel.Friend) {
if (hasFlag(DiplomacyFlags.ProvideMilitaryUnit)) removeFlag(DiplomacyFlags.ProvideMilitaryUnit)
}
else {
if (!hasFlag(DiplomacyFlags.ProvideMilitaryUnit)) setFlag(DiplomacyFlags.ProvideMilitaryUnit, 20)
}
}
for(flag in flagsCountdown.keys.toList()) {
flagsCountdown[flag] = flagsCountdown[flag]!! - 1
if(flagsCountdown[flag]==0) {
flagsCountdown.remove(flag)
if(flag==DiplomacyFlags.AgreedToNotSettleNearUs.name)
addModifier(DiplomaticModifiers.FulfilledPromiseToNotSettleCitiesNearUs,10f)
else if(flag==DiplomacyFlags.ProvideMilitaryUnit.name)
civInfo.giftMilitaryUnitBy(otherCiv())
}
}

View File

@ -104,6 +104,7 @@ class DiplomacyScreen:CameraStageBaseScreen() {
CityStateType.Cultured -> "Provides [" + (3 * (currentPlayerCiv.getEra().ordinal+1)).toString() + "] culture at [30] Influence"
CityStateType.Maritime -> "Provides 3 food in capital and 1 food in other cities at [30] Influence"
CityStateType.Mercantile -> "Provides 3 happiness at [30] Influence"
CityStateType.Militaristic -> "Provides land units every 20 turns at [30] Influence"
}
val friendBonusLabel = friendBonusText.toLabel()