mirror of
https://github.com/nolen777/eagle0.git
synced 2026-07-28 20:55:44 +00:00
returning a leader creates a treaty (#2408)
Former-commit-id: e32c9c24f3c3d89afcec0104d3f6975c706eb72a
This commit is contained in:
@@ -224,4 +224,5 @@ monthsReconConsideredRecent 12
|
||||
aiMinimumCharismaForSwornBrother 65
|
||||
aiMinimumConstitutionForSwornBrother 65
|
||||
vassalMinimumGoldToSendSupplies 100
|
||||
vassalMinimumFoodToSendSupplies 200
|
||||
vassalMinimumFoodToSendSupplies 200
|
||||
treatyMonthsFromReturningLeader 12
|
||||
|
@@ -539,6 +539,7 @@ scala_library(
|
||||
"//src/main/scala/net/eagle0/eagle/library/actions/impl/common:action",
|
||||
"//src/main/scala/net/eagle0/eagle/library/actions/impl/common:immediate_single_result_action",
|
||||
"//src/main/scala/net/eagle0/eagle/library/settings",
|
||||
"//src/main/scala/net/eagle0/eagle/library/util:date_utils",
|
||||
"//src/main/scala/net/eagle0/eagle/library/util:eagle_require",
|
||||
"//src/main/scala/net/eagle0/eagle/library/util:faction_utils",
|
||||
"//src/main/scala/net/eagle0/eagle/library/util:province_distances",
|
||||
|
||||
+30
@@ -24,12 +24,14 @@ import net.eagle0.eagle.common.action_result_type.ActionResultType.{
|
||||
CAPTURED_HERO_RETURNED,
|
||||
RECRUIT_HEROES
|
||||
}
|
||||
import net.eagle0.eagle.common.treaty.Treaty
|
||||
import net.eagle0.eagle.common.unaffiliated_hero.UnaffiliatedHero
|
||||
import net.eagle0.eagle.common.unaffiliated_hero.UnaffiliatedHero.Type.{
|
||||
OUTLAW,
|
||||
PRISONER
|
||||
}
|
||||
import net.eagle0.eagle.internal.action_result.ActionResult
|
||||
import net.eagle0.eagle.internal.changed_faction.ChangedFaction
|
||||
import net.eagle0.eagle.internal.changed_hero.ChangedHero
|
||||
import net.eagle0.eagle.internal.changed_hero.ChangedHero.Loyalty
|
||||
import net.eagle0.eagle.internal.changed_province.ChangedProvince
|
||||
@@ -60,6 +62,10 @@ object HandleCapturedHeroesCommand
|
||||
Settings.getDouble(SettingsKeys.factionBiasAgainstFormerOnExile)
|
||||
private def startingLoyalty: Double =
|
||||
Settings.getDouble(SettingsKeys.startingLoyalty)
|
||||
private def treatyMonthsFromReturningLeader: Int =
|
||||
Settings.getInt(SettingsKeys.treatyMonthsFromReturningLeader)
|
||||
|
||||
import net.eagle0.eagle.library.util.DateUtils._Date
|
||||
|
||||
private case class HandleCapturedHeroesCommand(
|
||||
sc: HandleCapturedHeroSelectedCommand,
|
||||
@@ -208,6 +214,30 @@ object HandleCapturedHeroesCommand
|
||||
addedRulingPlayerHeroIds = Vector(capturedHeroId)
|
||||
)
|
||||
),
|
||||
changedFactions = Vector(
|
||||
ChangedFaction(
|
||||
id = actingFactionId,
|
||||
removedTreatyPartners = Vector(capturedFromFactionId),
|
||||
addedTreaties = Vector(
|
||||
Treaty(
|
||||
targetFactionId = capturedFromFactionId,
|
||||
endDate =
|
||||
gs.currentDate.addMonths(treatyMonthsFromReturningLeader)
|
||||
)
|
||||
)
|
||||
),
|
||||
ChangedFaction(
|
||||
id = capturedFromFactionId,
|
||||
removedTreatyPartners = Vector(actingFactionId),
|
||||
addedTreaties = Vector(
|
||||
Treaty(
|
||||
targetFactionId = actingFactionId,
|
||||
endDate =
|
||||
gs.currentDate.addMonths(treatyMonthsFromReturningLeader)
|
||||
)
|
||||
)
|
||||
)
|
||||
),
|
||||
notificationDetails = CapturedHeroReturnedDetails(
|
||||
capturedFromFactionId = capturedFromFactionId,
|
||||
provinceId = provinceId,
|
||||
|
||||
+48
-1
@@ -14,11 +14,13 @@ import net.eagle0.eagle.common.action_result_type.ActionResultType.{
|
||||
CAPTURED_HERO_IMPRISONED,
|
||||
CAPTURED_HERO_RETURNED
|
||||
}
|
||||
import net.eagle0.eagle.common.date.Date
|
||||
import net.eagle0.eagle.common.recruitment_info.RecruitmentInfo
|
||||
import net.eagle0.eagle.common.recruitment_info.RecruitmentStatus.{
|
||||
RECRUITMENT_STATUS_OUTLAW,
|
||||
RECRUITMENT_STATUS_PRISONER
|
||||
}
|
||||
import net.eagle0.eagle.common.treaty.Treaty
|
||||
import net.eagle0.eagle.common.unaffiliated_hero.UnaffiliatedHero
|
||||
import net.eagle0.eagle.common.unaffiliated_hero.UnaffiliatedHero.Type.{
|
||||
OUTLAW,
|
||||
@@ -44,6 +46,7 @@ class HandleCapturedHeroesCommandTest
|
||||
val capturedHeroFaction = 12
|
||||
|
||||
private val gameState: GameState = GameState(
|
||||
currentDate = Date(year = 343, month = 4),
|
||||
provinces = Map(
|
||||
19 -> Province(
|
||||
id = 19,
|
||||
@@ -100,7 +103,8 @@ class HandleCapturedHeroesCommandTest
|
||||
SettingsKeys.recruitmentAdjustmentForOutlaw -> "50",
|
||||
SettingsKeys.recruitmentAdjustmentPerTurnForPrisoner -> "5",
|
||||
SettingsKeys.minOddsForQuest -> "-150",
|
||||
SettingsKeys.minOddsForRecruitment -> "80"
|
||||
SettingsKeys.minOddsForRecruitment -> "80",
|
||||
SettingsKeys.treatyMonthsFromReturningLeader -> "10"
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -238,4 +242,47 @@ class HandleCapturedHeroesCommandTest
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
it should "add a treaty if Return chosen" in {
|
||||
val selectedCommand = HandleCapturedHeroSelectedCommand(
|
||||
selectedOption = RETURN_CAPTURED_HERO_OPTION,
|
||||
heroId = 6
|
||||
)
|
||||
|
||||
val commandWithReturnOption = availableCommand.update(
|
||||
_.availableHeroes.head.options :+= RETURN_CAPTURED_HERO_OPTION
|
||||
)
|
||||
|
||||
val result = HandleCapturedHeroesCommand
|
||||
.make(
|
||||
actingFactionId = actingFactionId,
|
||||
gameState = gameState,
|
||||
availableCommand = commandWithReturnOption,
|
||||
selectedCommand = selectedCommand
|
||||
)
|
||||
.immediateExecute
|
||||
|
||||
result.`type` shouldBe CAPTURED_HERO_RETURNED
|
||||
result.changedFactions.head.id shouldBe actingFactionId
|
||||
result.changedFactions.head.addedTreaties shouldBe Vector(
|
||||
Treaty(
|
||||
targetFactionId = capturedHeroFaction,
|
||||
endDate = Date(year = 344, month = 2)
|
||||
)
|
||||
)
|
||||
result.changedFactions.head.removedTreatyPartners shouldBe Vector(
|
||||
capturedHeroFaction
|
||||
)
|
||||
|
||||
result.changedFactions.last.id shouldBe capturedHeroFaction
|
||||
result.changedFactions.last.addedTreaties shouldBe Vector(
|
||||
Treaty(
|
||||
targetFactionId = actingFactionId,
|
||||
endDate = Date(year = 344, month = 2)
|
||||
)
|
||||
)
|
||||
result.changedFactions.last.removedTreatyPartners shouldBe Vector(
|
||||
actingFactionId
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user