mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-14 01:39:40 +07:00
Added "don't spread religion to us" demand
This commit is contained in:
@ -186,6 +186,8 @@ Do you want to break your promise to [leaderName]? =
|
||||
Break promise =
|
||||
We promised not to settle near them ([count] turns remaining) =
|
||||
They promised not to settle near us ([count] turns remaining) =
|
||||
We promised not to spread religion to them ([count] turns remaining) =
|
||||
They promised not to spread religion to us ([count] turns remaining) =
|
||||
|
||||
[civName] is upset that you demanded tribute from [cityState], whom they have pledged to protect! =
|
||||
[civName] is upset that you attacked [cityState], whom they have pledged to protect! =
|
||||
@ -213,8 +215,13 @@ Demands =
|
||||
Please don't settle new cities near us. =
|
||||
Very well, we shall look for new lands to settle. =
|
||||
We shall do as we please. =
|
||||
We noticed your new city near our borders, despite your promise. This will have....implications. =
|
||||
I've been informed that my armies have taken tribute from [civName], a city-state under your protection.\nI assure you, this was quite unintentional, and I hope that this does not serve to drive us apart. =
|
||||
We noticed your new city near our borders, despite your promise. This will have....implications. =
|
||||
|
||||
Please don't spread your religion to us. =
|
||||
Very well, we shall spread our faith elsewhere. =
|
||||
We noticed you have continued spreading your faith, despite your promise. This will have...consequences. =
|
||||
|
||||
I've been informed that my armies have taken tribute from [civName], a city-state under your protection.\nI assure you, this was quite unintentional, and I hope that this does not serve to drive us apart. =
|
||||
We asked [civName] for a tribute recently and they gave in.\nYou promised to protect them from such things, but we both know you cannot back that up. =
|
||||
It's come to my attention that I may have attacked [civName].\nWhile it was not my goal to be at odds with your empire, this was deemed a necessary course of action. =
|
||||
I thought you might like to know that I've launched an invasion of one of your little pet states.\nThe lands of [civName] will make a fine addition to my own. =
|
||||
@ -1056,6 +1063,8 @@ One of our trades with [nation] has ended =
|
||||
One of our trades with [nation] has been cut short =
|
||||
[nation] agreed to stop settling cities near us! =
|
||||
[nation] refused to stop settling cities near us! =
|
||||
[nation] agreed to stop spreading religion to us! =
|
||||
[nation] refused to stop spreading religion to us! =
|
||||
We have allied with [nation]. =
|
||||
We have lost alliance with [nation]. =
|
||||
We have discovered [naturalWonder]! =
|
||||
|
@ -105,6 +105,7 @@ object NextTurnAutomation {
|
||||
}
|
||||
private fun respondToPopupAlerts(civInfo: Civilization) {
|
||||
for (popupAlert in civInfo.popupAlerts.toList()) { // toList because this can trigger other things that give alerts, like Golden Age
|
||||
|
||||
if (popupAlert.type == AlertType.DemandToStopSettlingCitiesNear) { // we're called upon to make a decision
|
||||
val demandingCiv = civInfo.gameInfo.getCivilization(popupAlert.value)
|
||||
val diploManager = civInfo.getDiplomacyManager(demandingCiv)!!
|
||||
@ -112,6 +113,16 @@ object NextTurnAutomation {
|
||||
diploManager.agreeNotToSettleNear()
|
||||
else diploManager.refuseDemandNotToSettleNear()
|
||||
}
|
||||
|
||||
if (popupAlert.type == AlertType.DemandToStopSpreadingReligion) {
|
||||
val demandingCiv = civInfo.gameInfo.getCivilization(popupAlert.value)
|
||||
val diploManager = civInfo.getDiplomacyManager(demandingCiv)!!
|
||||
if (Automation.threatAssessment(civInfo, demandingCiv) >= ThreatLevel.High
|
||||
|| diploManager.isRelationshipLevelGT(RelationshipLevel.Ally))
|
||||
diploManager.agreeNotToSpreadReligionTo()
|
||||
else diploManager.refuseNotToSpreadReligionTo()
|
||||
}
|
||||
|
||||
if (popupAlert.type == AlertType.DeclarationOfFriendship) {
|
||||
val requestingCiv = civInfo.gameInfo.getCivilization(popupAlert.value)
|
||||
val diploManager = civInfo.getDiplomacyManager(requestingCiv)!!
|
||||
@ -123,7 +134,6 @@ object NextTurnAutomation {
|
||||
diploManager.otherCivDiplomacy().setFlag(DiplomacyFlags.DeclinedDeclarationOfFriendship, 10)
|
||||
requestingCiv.addNotification("[${civInfo.civName}] has denied our Declaration of Friendship!", NotificationCategory.Diplomacy, NotificationIcon.Diplomacy, civInfo.civName)
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -534,6 +544,8 @@ object NextTurnAutomation {
|
||||
val diploManager = civInfo.getDiplomacyManager(otherCiv)!!
|
||||
if (diploManager.hasFlag(DiplomacyFlags.SettledCitiesNearUs))
|
||||
onCitySettledNearBorders(civInfo, otherCiv)
|
||||
if (diploManager.hasFlag(DiplomacyFlags.SpreadReligionInOurCities))
|
||||
onReligionSpreadInOurCity(civInfo, otherCiv)
|
||||
}
|
||||
}
|
||||
|
||||
@ -557,6 +569,25 @@ object NextTurnAutomation {
|
||||
diplomacyManager.removeFlag(DiplomacyFlags.SettledCitiesNearUs)
|
||||
}
|
||||
|
||||
private fun onReligionSpreadInOurCity(civInfo: Civilization, otherCiv: Civilization){
|
||||
val diplomacyManager = civInfo.getDiplomacyManager(otherCiv)!!
|
||||
when {
|
||||
diplomacyManager.hasFlag(DiplomacyFlags.IgnoreThemSpreadingReligion) -> {}
|
||||
diplomacyManager.hasFlag(DiplomacyFlags.AgreedToNotSpreadReligion) -> {
|
||||
otherCiv.popupAlerts.add(PopupAlert(AlertType.ReligionSpreadDespiteOurPromise, civInfo.civName))
|
||||
diplomacyManager.setFlag(DiplomacyFlags.IgnoreThemSpreadingReligion, 100)
|
||||
diplomacyManager.setModifier(DiplomaticModifiers.BetrayedPromiseToNotSpreadReligionToUs, -20f)
|
||||
diplomacyManager.removeFlag(DiplomacyFlags.AgreedToNotSpreadReligion)
|
||||
}
|
||||
else -> {
|
||||
val threatLevel = Automation.threatAssessment(civInfo, otherCiv)
|
||||
if (threatLevel < ThreatLevel.High) // don't piss them off for no reason please.
|
||||
otherCiv.popupAlerts.add(PopupAlert(AlertType.DemandToStopSpreadingReligion, civInfo.civName))
|
||||
}
|
||||
}
|
||||
diplomacyManager.removeFlag(DiplomacyFlags.SpreadReligionInOurCities)
|
||||
}
|
||||
|
||||
fun getMinDistanceBetweenCities(civ1: Civilization, civ2: Civilization): Int {
|
||||
return getClosestCities(civ1, civ2)?.aerialDistance ?: Int.MAX_VALUE
|
||||
}
|
||||
|
@ -11,8 +11,13 @@ enum class AlertType : IsPartOfGameInfoSerialization {
|
||||
CityConquered,
|
||||
CityTraded,
|
||||
BorderConflict,
|
||||
|
||||
DemandToStopSettlingCitiesNear,
|
||||
CitySettledNearOtherCivDespiteOurPromise,
|
||||
|
||||
DemandToStopSpreadingReligion,
|
||||
ReligionSpreadDespiteOurPromise,
|
||||
|
||||
GoldenAge,
|
||||
DeclarationOfFriendship,
|
||||
StartIntro,
|
||||
|
@ -52,19 +52,27 @@ enum class DiplomacyFlags {
|
||||
DeclinedJoinWarOffer,
|
||||
ResearchAgreement,
|
||||
BorderConflict,
|
||||
|
||||
SettledCitiesNearUs,
|
||||
AgreedToNotSettleNearUs,
|
||||
IgnoreThemSettlingNearUs,
|
||||
|
||||
SpreadReligionInOurCities,
|
||||
AgreedToNotSpreadReligion,
|
||||
IgnoreThemSpreadingReligion,
|
||||
|
||||
ProvideMilitaryUnit,
|
||||
MarriageCooldown,
|
||||
NotifiedAfraid,
|
||||
RecentlyPledgedProtection,
|
||||
RecentlyWithdrewProtection,
|
||||
AngerFreeIntrusion,
|
||||
|
||||
RememberDestroyedProtectedMinor,
|
||||
RememberAttackedProtectedMinor,
|
||||
RememberBulliedProtectedMinor,
|
||||
RememberSidedWithProtectedMinor,
|
||||
|
||||
Denunciation,
|
||||
WaryOf,
|
||||
Bullied,
|
||||
@ -84,7 +92,9 @@ enum class DiplomaticModifiers(val text: String) {
|
||||
Denunciation("You have publicly denounced us!"),
|
||||
DenouncedOurAllies("You have denounced our allies"),
|
||||
RefusedToNotSettleCitiesNearUs("You refused to stop settling cities near us"),
|
||||
RefusedToNotSpreadReligionToUs("You refused to stop spreading religion to us"),
|
||||
BetrayedPromiseToNotSettleCitiesNearUs("You betrayed your promise to not settle cities near us"),
|
||||
BetrayedPromiseToNotSpreadReligionToUs("You betrayed your promise to not spread your religion to us"),
|
||||
UnacceptableDemands("Your arrogant demands are in bad taste"),
|
||||
UsedNuclearWeapons("Your use of nuclear weapons is disgusting!"),
|
||||
StealingTerritory("You have stolen our lands!"),
|
||||
@ -106,6 +116,7 @@ enum class DiplomaticModifiers(val text: String) {
|
||||
DenouncedOurEnemies("You have denounced our enemies"),
|
||||
OpenBorders("Our open borders have brought us closer together."),
|
||||
FulfilledPromiseToNotSettleCitiesNearUs("You fulfilled your promise to stop settling cities near us!"),
|
||||
FulfilledPromiseToNotSpreadReligion("You fulfilled your promise to stop spreading religion to us!"),
|
||||
GaveUsUnits("You gave us units!"),
|
||||
GaveUsGifts("We appreciate your gifts"),
|
||||
ReturnedCapturedUnits("You returned captured units to us"),
|
||||
@ -679,6 +690,21 @@ class DiplomacyManager() : IsPartOfGameInfoSerialization {
|
||||
NotificationCategory.Diplomacy, NotificationIcon.Diplomacy, civInfo.civName)
|
||||
}
|
||||
|
||||
fun agreeNotToSpreadReligionTo() {
|
||||
otherCivDiplomacy().setFlag(DiplomacyFlags.AgreedToNotSpreadReligion, 100)
|
||||
addModifier(DiplomaticModifiers.UnacceptableDemands, -10f)
|
||||
otherCiv().addNotification("[${civInfo.civName}] agreed to stop spreading religion to us!",
|
||||
NotificationCategory.Diplomacy, NotificationIcon.Diplomacy, civInfo.civName)
|
||||
}
|
||||
|
||||
fun refuseNotToSpreadReligionTo() {
|
||||
addModifier(DiplomaticModifiers.UnacceptableDemands, -20f)
|
||||
otherCivDiplomacy().setFlag(DiplomacyFlags.IgnoreThemSpreadingReligion, 100)
|
||||
otherCivDiplomacy().addModifier(DiplomaticModifiers.RefusedToNotSpreadReligionToUs, -15f)
|
||||
otherCiv().addNotification("[${civInfo.civName}] refused to stop spreading religion to us!",
|
||||
NotificationCategory.Diplomacy, NotificationIcon.Diplomacy, civInfo.civName)
|
||||
}
|
||||
|
||||
fun sideWithCityState() {
|
||||
otherCivDiplomacy().setModifier(DiplomaticModifiers.SidedWithProtectedMinor, -5f)
|
||||
otherCivDiplomacy().setFlag(DiplomacyFlags.RememberSidedWithProtectedMinor, 25)
|
||||
|
@ -189,6 +189,9 @@ object DiplomacyTurnManager {
|
||||
DiplomacyFlags.AgreedToNotSettleNearUs.name -> {
|
||||
addModifier(DiplomaticModifiers.FulfilledPromiseToNotSettleCitiesNearUs, 10f)
|
||||
}
|
||||
DiplomacyFlags.AgreedToNotSettleNearUs.name -> {
|
||||
addModifier(DiplomaticModifiers.FulfilledPromiseToNotSpreadReligion, 10f)
|
||||
}
|
||||
DiplomacyFlags.RecentlyAttacked.name -> {
|
||||
civInfo.cityStateFunctions.askForUnitGifts(otherCiv())
|
||||
}
|
||||
@ -282,6 +285,7 @@ object DiplomacyTurnManager {
|
||||
revertToZero(DiplomaticModifiers.BetrayedDefensivePact, 1 / 16f) // That's an outrageous thing to do
|
||||
revertToZero(DiplomaticModifiers.RefusedToNotSettleCitiesNearUs, 1 / 4f)
|
||||
revertToZero(DiplomaticModifiers.BetrayedPromiseToNotSettleCitiesNearUs, 1 / 8f) // That's a bastardly thing to do
|
||||
revertToZero(DiplomaticModifiers.BetrayedPromiseToNotSpreadReligionToUs, 1 / 8f)
|
||||
revertToZero(DiplomaticModifiers.UnacceptableDemands, 1 / 4f)
|
||||
revertToZero(DiplomaticModifiers.StealingTerritory, 1 / 4f)
|
||||
revertToZero(DiplomaticModifiers.DenouncedOurAllies, 1 / 4f)
|
||||
|
@ -175,16 +175,25 @@ class MajorCivDiplomacyTable(private val diplomacyScreen: DiplomacyScreen) {
|
||||
): Table? {
|
||||
val promisesTable = Table()
|
||||
|
||||
// Not for (flag in DiplomacyFlags.values()) - all other flags should result in DiplomaticModifiers or stay internal?
|
||||
val flag = DiplomacyFlags.AgreedToNotSettleNearUs
|
||||
if (otherCivDiplomacyManager.hasFlag(flag)) {
|
||||
if (otherCivDiplomacyManager.hasFlag(DiplomacyFlags.AgreedToNotSettleNearUs)) {
|
||||
val text =
|
||||
"We promised not to settle near them ([${otherCivDiplomacyManager.getFlag(flag)}] turns remaining)"
|
||||
"We promised not to settle near them ([${otherCivDiplomacyManager.getFlag(DiplomacyFlags.AgreedToNotSettleNearUs)}] turns remaining)"
|
||||
promisesTable.add(text.toLabel(Color.LIGHT_GRAY)).row()
|
||||
}
|
||||
if (diplomacyManager.hasFlag(flag)) {
|
||||
if (diplomacyManager.hasFlag(DiplomacyFlags.AgreedToNotSettleNearUs)) {
|
||||
val text =
|
||||
"They promised not to settle near us ([${diplomacyManager.getFlag(flag)}] turns remaining)"
|
||||
"They promised not to settle near us ([${diplomacyManager.getFlag(DiplomacyFlags.AgreedToNotSettleNearUs)}] turns remaining)"
|
||||
promisesTable.add(text.toLabel(Color.LIGHT_GRAY)).row()
|
||||
}
|
||||
|
||||
if (otherCivDiplomacyManager.hasFlag(DiplomacyFlags.AgreedToNotSpreadReligion)) {
|
||||
val text =
|
||||
"We promised not to spread religion to them ([${otherCivDiplomacyManager.getFlag(DiplomacyFlags.AgreedToNotSpreadReligion)}] turns remaining)"
|
||||
promisesTable.add(text.toLabel(Color.LIGHT_GRAY)).row()
|
||||
}
|
||||
if (diplomacyManager.hasFlag(DiplomacyFlags.AgreedToNotSpreadReligion)) {
|
||||
val text =
|
||||
"They promised not to spread religion to us ([${diplomacyManager.getFlag(DiplomacyFlags.AgreedToNotSpreadReligion)}] turns remaining)"
|
||||
promisesTable.add(text.toLabel(Color.LIGHT_GRAY)).row()
|
||||
}
|
||||
|
||||
@ -228,6 +237,20 @@ class MajorCivDiplomacyTable(private val diplomacyScreen: DiplomacyScreen) {
|
||||
}
|
||||
demandsTable.add(dontSettleCitiesButton).row()
|
||||
|
||||
val dontSpreadReligionButton = "Please don't spread your religion to us.".toTextButton()
|
||||
if (otherCiv.popupAlerts.any { it.type == AlertType.DemandToStopSpreadingReligion && it.value == viewingCiv.civName })
|
||||
dontSettleCitiesButton.disable()
|
||||
dontSettleCitiesButton.onClick {
|
||||
otherCiv.popupAlerts.add(
|
||||
PopupAlert(
|
||||
AlertType.DemandToStopSpreadingReligion,
|
||||
viewingCiv.civName
|
||||
)
|
||||
)
|
||||
dontSpreadReligionButton.disable()
|
||||
}
|
||||
demandsTable.add(dontSpreadReligionButton).row()
|
||||
|
||||
demandsTable.add(Constants.close.toTextButton().onClick { diplomacyScreen.updateRightSide(otherCiv) })
|
||||
return demandsTable
|
||||
}
|
||||
|
@ -92,6 +92,8 @@ class AlertPopup(
|
||||
AlertType.BorderConflict -> addBorderConflict()
|
||||
AlertType.DemandToStopSettlingCitiesNear -> addDemandToStopSettlingCitiesNear()
|
||||
AlertType.CitySettledNearOtherCivDespiteOurPromise -> addCitySettledNearOtherCivDespiteOurPromise()
|
||||
AlertType.DemandToStopSpreadingReligion -> addDemandToStopSpreadingReligion()
|
||||
AlertType.ReligionSpreadDespiteOurPromise -> addReligionSpreadDespiteOurPromise()
|
||||
AlertType.WonderBuilt -> addWonderBuilt()
|
||||
AlertType.TechResearched -> addTechResearched()
|
||||
AlertType.GoldenAge -> addGoldenAge()
|
||||
@ -241,6 +243,26 @@ class AlertPopup(
|
||||
}
|
||||
}
|
||||
|
||||
private fun addDemandToStopSpreadingReligion() {
|
||||
val otherciv = getCiv(popupAlert.value)
|
||||
val playerDiploManager = viewingCiv.getDiplomacyManager(otherciv)!!
|
||||
addLeaderName(otherciv)
|
||||
addGoodSizedLabel("Please don't spread religion to us.").row()
|
||||
addCloseButton("Very well, we shall spread our faith elsewhere.", KeyboardBinding.Confirm) {
|
||||
playerDiploManager.agreeNotToSpreadReligionTo()
|
||||
}.row()
|
||||
addCloseButton("We shall do as we please.", KeyboardBinding.Cancel) {
|
||||
playerDiploManager.refuseNotToSpreadReligionTo()
|
||||
}
|
||||
}
|
||||
|
||||
private fun addReligionSpreadDespiteOurPromise() {
|
||||
val otherciv = getCiv(popupAlert.value)
|
||||
addLeaderName(otherciv)
|
||||
addGoodSizedLabel("We noticed you have continued spreading your faith, despite your promise. This will have....consequences.").row()
|
||||
addCloseButton("Very well.")
|
||||
}
|
||||
|
||||
private fun addDiplomaticMarriage() {
|
||||
val city = getCity(popupAlert.value)
|
||||
addGoodSizedLabel(city.name.tr() + ": " + "What would you like to do with the city?".tr(), Constants.headingFontSize) // Add name because there might be several cities
|
||||
|
@ -1,6 +1,7 @@
|
||||
package com.unciv.ui.screens.worldscreen.unit.actions
|
||||
|
||||
import com.unciv.logic.civilization.NotificationCategory
|
||||
import com.unciv.logic.civilization.diplomacy.DiplomacyFlags
|
||||
import com.unciv.logic.map.mapunit.MapUnit
|
||||
import com.unciv.logic.map.tile.Tile
|
||||
import com.unciv.models.UnitAction
|
||||
@ -101,6 +102,10 @@ object UnitActionsReligion {
|
||||
city.religion.removeAllPressuresExceptFor(unit.religion!!)
|
||||
|
||||
UnitActionModifiers.activateSideEffects(unit, newStyleUnique)
|
||||
|
||||
if (city.civ != unit.civ) city.civ.getDiplomacyManager(unit.civ)!!
|
||||
.setFlag(DiplomacyFlags.SpreadReligionInOurCities, 30)
|
||||
|
||||
}.takeIf { unit.civ.religionManager.maySpreadReligionNow(unit)
|
||||
&& UnitActionModifiers.canActivateSideEffects(unit, newStyleUnique)}
|
||||
))
|
||||
|
Reference in New Issue
Block a user