24 0.785, 0.883, 0.957, 1.103, 1.093, 1.003, 0.957, 0.890};
31 std::int64_t minCashOnHand,
32 std::int64_t moneyOwed = 0)
noexcept;
36 rules::PlayerNumber player,
43 rules::PlayerNumber player,
44 rules::board::SquareType property,
52 std::int64_t moneyOwed = 0)
noexcept;
57 rules::GameState&
state,
58 rules::PlayerNumber player,
64 rules::GameState&
state,
65 rules::PlayerNumber player,
73 rules::PlayerNumber player,
92 std::int64_t minCashOnHand,
93 std::uint8_t housingPurchaseStrategy,
94 std::int64_t moneyOwed = 0)
noexcept;
120 std::int64_t minCashOnHand,
121 std::uint8_t housingPurchaseStrategy,
122 std::int64_t moneyOwed = 0)
noexcept;
135 std::int64_t minCashOnHand,
138 std::int64_t moneyOwed = 0)
noexcept;
146 rules::PlayerNumber player,
151 rules::PlayerNumber player,
158 rules::PlayerNumber player)
noexcept;
176 std::array<double, 8>
property{};
183 const WorthFactors&
factors)
noexcept;
197 std::array<std::int64_t, rules::MaxPlayers>
moneyOwed{};
208 const WinningChanceConfig&
config,
248 const TradeEvaluationConfig&
config)
noexcept;
252 std::span<const rules::PlayerNumber>
players,
256 const TradeEvaluationConfig&
config,
272 std::span<const rules::PlayerNumber>
partners,
276 const FairTradeConfig&
config,
277 std::span<const ai::trade::FutureImmunityRecord> immunities = {})
noexcept;
289 std::span<const rules::PlayerNumber>
partners,
292 const MonopolyProposalConfig&
config)
noexcept;
300 const MonopolyProposalConfig&
config)
noexcept;
354 const ProactiveTradeInputs&
inputs,
355 const MonopolyProposalConfig&
config)
noexcept;
410 const CounterProposalPreflightInputs&
inputs,
411 const CounterProposalPreflightConfig&
config,
412 CounterProposalSession&
session,
413 std::span<const ai::trade::FutureImmunityRecord> immunities = {})
noexcept;
445 const CounterProposalPreflightResult&
preflight,
447 const CounterProposalBalanceConfig&
config,
448 std::span<const ai::trade::FutureImmunityRecord> immunities = {})
noexcept;
454 std::int64_t minCashOnHand,
455 int maxHousesPerSquareForGiveAway,
456 std::span<const std::int64_t> moneyOwed = {})
noexcept;
std::array< rules::PlayerNumber, rules::MaxPlayers > players
constexpr std::uint8_t HouseBuyWithin12
EconomicActionPlan planBuyHouseAction(const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::uint8_t housingPurchaseStrategy, std::int64_t moneyOwed) noexcept
CounterProposalPreflightResult counterProposalPreflight(const rules::GameState &state, rules::PlayerNumber player, const ai::trade::TradeProposalList ¤tTrade, const CounterProposalPreflightInputs &inputs, const CounterProposalPreflightConfig &config, CounterProposalSession &session, std::span< const ai::trade::FutureImmunityRecord > immunities) noexcept
EconomicActionPlan planDebtLiquidationStep(const rules::GameState &state, rules::PlayerNumber player, bool sellHouses) noexcept
@ ExpectedRentIncludingMonopolies
@ ExpectedRentExcludingMonopolies
bool hypotheticalBuyHouse(rules::GameState &state, rules::PlayerNumber player, std::int64_t moneyOwed) noexcept
CounterProposalBalanceStatus
bool shouldGiveAwayMonopoly(const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, int maxHousesPerSquareForGiveAway, std::span< const std::int64_t > moneyOwed) noexcept
bool mortgageWorstProperty(rules::GameState &state, rules::PlayerNumber player, bool sellHouses, bool mortgageMonopoly) noexcept
bool buildSemiImportantTrade(const rules::GameState &state, rules::PlayerNumber player, std::span< const double > playerAttitudes, const ai::trade::PropertySets &properties, const SemiImportantTradeInputs &inputs, ai::trade::TradeProposalList &proposals, const MonopolyProposalConfig &config) noexcept
double evaluateTrade(const rules::GameState &state, rules::PlayerNumber player, rules::PlayerNumber strategyPlayer, const ai::trade::TradeProposalList &proposals, const TradeEvaluationConfig &config) noexcept
CounterProposalBalanceResult counterProposalBalance(const rules::GameState &state, rules::PlayerNumber player, const CounterProposalPreflightResult &preflight, ai::trade::TradeProposalList &proposals, const CounterProposalBalanceConfig &config, std::span< const ai::trade::FutureImmunityRecord > immunities) noexcept
HousePurchaseDecision shouldBuyHouse(const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::uint8_t housingPurchaseStrategy, std::int64_t moneyOwed) noexcept
std::int64_t cashAvailableAfterHousing(const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
bool buildMonopolyTrade(const rules::GameState &state, rules::PlayerNumber player, rules::board::SquareGroup group, std::span< const rules::PlayerNumber > partners, const ai::trade::PropertySets &properties, ai::trade::TradeProposalList &proposals, const MonopolyProposalConfig &config) noexcept
std::int64_t excessCashAvailable(const rules::GameState &state, rules::PlayerNumber player, bool cashOnly, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
std::int64_t tradeBidForProperty(const rules::GameState &state, rules::PlayerNumber player, rules::board::SquareType property, std::int64_t currentBid, rules::PlayerNumber currentBidder, const AuctionBidConfig &config) noexcept
bool shouldBuyProperty(const rules::GameState &state, rules::PlayerNumber player, rules::board::SquareType property, CashStrategy strategy, std::int64_t minCashOnHand, std::span< const std::int64_t > moneyOwed) noexcept
std::optional< rules::board::SquareType > chooseHousingAuctionSquare(const rules::GameState &state, rules::PlayerNumber player, HousingAuctionBuilding building, CashStrategy strategy, std::int64_t minCashOnHand, rules::board::PropertySet legalSquares, bool reservedBuilding, std::int64_t moneyOwed) noexcept
EconomicActionPlan planUnmortgagePropertyAction(const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
std::int64_t bidForAuctionItem(const rules::GameState &state, rules::PlayerNumber player, rules::board::SquareType item, std::int64_t currentBid, rules::PlayerNumber currentBidder, const AuctionBidConfig &config, bool useTenDollarIncrement) noexcept
bool buildMonopolyForCash(const rules::GameState &state, rules::PlayerNumber player, rules::PlayerNumber firstPartner, const ai::trade::PropertySets &properties, ai::trade::TradeProposalList &proposals, const MonopolyProposalConfig &config) noexcept
std::optional< bool > chooseFractionTax(const rules::GameState &state, rules::PlayerNumber player) noexcept
double evaluateWinningChances(const rules::GameState &state, rules::PlayerNumber player, const WinningChanceConfig &config, std::span< double > savePlayerChances) noexcept
EconomicActionPlan planHouseSaleAction(const rules::GameState &state, rules::board::SquareType referenceSquare) noexcept
ProactiveTradeResult buildProactiveTrade(const rules::GameState &state, rules::PlayerNumber player, std::span< const double > playerAttitudes, const ai::trade::PropertySets &properties, const ProactiveTradeInputs &inputs, const MonopolyProposalConfig &config) noexcept
constexpr std::uint8_t CriticalHousingLevel
std::int64_t totalWorthWithFactors(const rules::GameState &state, rules::PlayerNumber player, const WorthFactors &factors) noexcept
bool shouldUnmortgageProperty(const rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
rules::board::SquareType hypotheticalUnmortgageProperty(rules::GameState &state, rules::PlayerNumber player, bool onlyMonopolies, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
void mortgageNegativeCashPlayers(rules::GameState &state) noexcept
constexpr std::uint8_t HouseBuyAtLeast3
std::optional< JailExitChoice > chooseJailExitChoice(const rules::GameState &state, rules::PlayerNumber player, bool canRollDoubles, bool canPayFee, bool canUseCard) noexcept
rules::board::SquareType hypotheticalUnmortgageMonopolyProperty(rules::GameState &state, rules::PlayerNumber player, CashStrategy strategy, std::int64_t minCashOnHand, std::int64_t moneyOwed) noexcept
void evaluateTradePlayerList(const rules::GameState &state, std::span< const rules::PlayerNumber > players, rules::PlayerNumber strategyPlayer, const ai::trade::TradeProposalList &proposals, bool givingMonopolyForCash, const TradeEvaluationConfig &config, std::span< double > evaluations) noexcept
bool makeTradeFair(const rules::GameState &state, rules::PlayerNumber player, std::span< const rules::PlayerNumber > partners, std::int64_t giveMost, bool givingMonopoly, ai::trade::TradeProposalList &proposals, const FairTradeConfig &config, std::span< const ai::trade::FutureImmunityRecord > immunities) noexcept
constexpr std::array< double, 8 > MonopolyAverageLandingFrequency
std::array< MonopolyTradeGenerosity, WhatToTradeEntries > WhatToTradeTable
std::array< double, WhatToTradeEntries > CashMultiplierTable
std::array< rules::board::PropertySet, rules::MaxPlayers > PropertySets
std::array< TradeProposalRecord, rules::MaxPlayers > TradeProposalList
std::uint32_t PropertySet
std::uint8_t PlayerNumber
constexpr PlayerNumber NobodyPlayer
TradeEvaluationConfig evaluation
std::uint8_t housingPurchaseStrategy
double monopolySuicideFactor
FairTradeConfig fairTrade
double minEvaluationThreshold
ai::trade::WhatToTradeTable whatToTrade
double lowestPropertyImportanceForCounter
std::int64_t maxGiveInTrade
std::size_t maxIterations
CounterProposalBalanceStatus status
double propertyImportance
int numberTimesAllowPropertyTrade
TradeEvaluationConfig evaluation
double tradeCounterProbability
std::array< double, rules::MaxPlayers > playerAttitude
ai::trade::PlayerPropertyAttitudeList preparation
CounterProposalStatus status
ai::trade::PropertyTradeMemory propertyMemory
double lastTradeEvaluation
bool acted() const noexcept
rules::board::SquareType square
TradeEvaluationConfig evaluation
std::array< bool, rules::MaxPlayers > localAIPlayer
std::array< double, rules::MaxPlayers > playerAttitude
ai::trade::CashMultiplierTable cashMultipliers
double minEvaluationThreshold
double minGiveMonopolyEvaluation
ai::trade::WhatToTradeTable whatToTrade
FairTradeConfig fairTrade
ai::trade::TradeProposalList proposal
ai::trade::PropertyImportanceConfig propertyImportance
WinningChanceConfig winningChance
WorthFactors worthFactors
std::int64_t jailCardValue
rules::board::SquareType purchasingProperty
double tradeImportanceFactor
rules::PlayerNumber purchasingPlayer
double cashLiquidAssetsDependence
std::array< std::int64_t, rules::MaxPlayers > minCashOnHand
double monopolyNotOwnedStageCashMultiplier
std::array< CashStrategy, rules::MaxPlayers > cashStrategy
double buyingStageCashMultiplier
double monopolyOwnedStageCashMultiplier
std::array< std::int64_t, rules::MaxPlayers > moneyOwed
double noMonopolyStageCashMultiplier
std::array< double, 6 > cashCow