mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-30 22:58:50 +07:00
Add Militaristic type city-state.
This commit is contained in:

committed by
Yair Morgenstern

parent
3b515f58d7
commit
a8e248b892
@ -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",
|
||||
|
@ -3,5 +3,6 @@ package com.unciv.logic.civilization
|
||||
enum class CityStateType{
|
||||
Cultured,
|
||||
Maritime,
|
||||
Mercantile
|
||||
Mercantile,
|
||||
Militaristic
|
||||
}
|
@ -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
|
||||
}
|
||||
|
@ -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())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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()
|
||||
|
Reference in New Issue
Block a user