Skip to content

Commit

Permalink
The AI now builds missionaries (if in theology) and diplomats
Browse files Browse the repository at this point in the history
The AI now builds missionaries if it is in theology. That is a bit questionable since the televangelists are not really available when the AI is in theology. Another problem is that the AI is not long in theology even so if it is preferred government since all the AI personalities use almost the same advance order for  research.

The AI now also builds diplomats, but it still does not establish embassies.

..\ctp2_code\ai\CityManagement\governor.cpp
..\ctp2_code\ai\CityManagement\governor.h
..\ctp2_code\gs\newdb\strategy.cdb
..\ctp2_data\default\aidata\strategies.txt
..\ctp2_data\default\aidata\unitbuildlists.txt
  • Loading branch information
MartinGuehmann committed Apr 20, 2019
1 parent 271f518 commit 31f0ae6
Show file tree
Hide file tree
Showing 5 changed files with 158 additions and 40 deletions.
28 changes: 28 additions & 0 deletions ctp2_code/ai/CityManagement/governor.cpp
Expand Up @@ -3573,6 +3573,16 @@ void Governor::ComputeDesiredUnits()
strategy.GetSpecialUnitsCount(desired_count);
break;

case BUILD_UNIT_LIST_DIPLOMAT:
if(!strategy.GetDiplomatUnitsCount(desired_count))
strategy.GetSpecialUnitsCount(desired_count);
break;

case BUILD_UNIT_LIST_MISSIONARY:
if(!strategy.GetMissionaryUnitsCount(desired_count))
strategy.GetSpecialUnitsCount(desired_count);
break;

case BUILD_UNIT_LIST_SPECIAL:
strategy.GetSpecialUnitsCount(desired_count);
break;
Expand Down Expand Up @@ -3690,6 +3700,8 @@ void Governor::ComputeDesiredUnits()

case BUILD_UNIT_LIST_SLAVERY:
case BUILD_UNIT_LIST_SPY:
case BUILD_UNIT_LIST_DIPLOMAT:
case BUILD_UNIT_LIST_MISSIONARY:
case BUILD_UNIT_LIST_SPECIAL:
case BUILD_UNIT_LIST_FREIGHT:
if (best_unit_type >= 0)
Expand Down Expand Up @@ -3951,6 +3963,8 @@ StringId Governor::GetUnitsAdvice(SlicContext & sc) const
|| static_cast<BUILD_UNIT_LIST>(i) == BUILD_UNIT_LIST_SEA_SETTLER
|| static_cast<BUILD_UNIT_LIST>(i) == BUILD_UNIT_LIST_SLAVERY
|| static_cast<BUILD_UNIT_LIST>(i) == BUILD_UNIT_LIST_SPY
|| static_cast<BUILD_UNIT_LIST>(i) == BUILD_UNIT_LIST_DIPLOMAT
|| static_cast<BUILD_UNIT_LIST>(i) == BUILD_UNIT_LIST_MISSIONARY
|| static_cast<BUILD_UNIT_LIST>(i) == BUILD_UNIT_LIST_SPECIAL
|| static_cast<BUILD_UNIT_LIST>(i) == BUILD_UNIT_LIST_SEA_TRANSPORT
|| static_cast<BUILD_UNIT_LIST>(i) == BUILD_UNIT_LIST_AIR_TRANSPORT
Expand Down Expand Up @@ -4343,6 +4357,8 @@ sint32 Governor::GetNeededUnitType(const CityData *city, sint32 & list_num) cons
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SEA_SETTLER
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SLAVERY
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SPY
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_DIPLOMAT
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_MISSIONARY
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SPECIAL
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SEA_TRANSPORT
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_AIR_TRANSPORT
Expand Down Expand Up @@ -4420,6 +4436,8 @@ sint32 Governor::GetNeededUnitType(const CityData *city, sint32 & list_num) cons
(
static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SLAVERY
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SPY
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_DIPLOMAT
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_MISSIONARY
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SPECIAL
)
{
Expand Down Expand Up @@ -4497,6 +4515,14 @@ const UnitBuildListRecord * Governor::GetBuildListRecord(const StrategyRecord &
// Assert(strategy.HasSpyUnitList());
return strategy.HasSpyUnitList() ? strategy.GetSpyUnitListPtr() : NULL;

case BUILD_UNIT_LIST_DIPLOMAT:
// Assert(strategy.HasDiplomatUnitList());
return strategy.HasDiplomatUnitList() ? strategy.GetDiplomatUnitListPtr() : NULL;

case BUILD_UNIT_LIST_MISSIONARY:
// Assert(strategy.HasDiplomatUnitList());
return strategy.HasMissionaryUnitList() ? strategy.GetMissionaryUnitListPtr() : NULL;

case BUILD_UNIT_LIST_SPECIAL:
Assert(strategy.HasSpecialUnitList());
return strategy.HasSpecialUnitList() ? strategy.GetSpecialUnitListPtr() : NULL;
Expand Down Expand Up @@ -4661,6 +4687,7 @@ sint32 Governor::GetNeededGarrisonUnitType(const CityData * city, sint32 & list_
(
( static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SLAVERY
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SPY
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_DIPLOMAT
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SPECIAL
)
&& garrisonComplete > build_settler_production_level
Expand Down Expand Up @@ -4701,6 +4728,7 @@ sint32 Governor::GetNeededGarrisonUnitType(const CityData * city, sint32 & list_
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SEA_SETTLER
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SLAVERY
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SPY
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_DIPLOMAT
|| static_cast<BUILD_UNIT_LIST>(list_num) == BUILD_UNIT_LIST_SPECIAL
)
{
Expand Down
2 changes: 2 additions & 0 deletions ctp2_code/ai/CityManagement/governor.h
Expand Up @@ -121,6 +121,8 @@ class Governor {
BUILD_UNIT_LIST_SEA_SETTLER,
BUILD_UNIT_LIST_SLAVERY,
BUILD_UNIT_LIST_SPY,
BUILD_UNIT_LIST_DIPLOMAT,
BUILD_UNIT_LIST_MISSIONARY,
BUILD_UNIT_LIST_SPECIAL,

BUILD_UNIT_LIST_RANGED,
Expand Down
4 changes: 4 additions & 0 deletions ctp2_code/gs/newdb/strategy.cdb
Expand Up @@ -251,6 +251,8 @@ Strategy {
Bit (Int) SpecialUnitsCount
Bit (Int) SpyUnitsCount
Bit (Int) SlaveryUnitsCount
Bit (Int) DiplomatUnitsCount
Bit (Int) MissionaryUnitsCount
Bit (Int) SeaTransportUnitsCount
Bit (Int) AirTransportUnitsCount

Expand All @@ -267,6 +269,8 @@ Strategy {
Bit (Record UnitBuildList) SpecialUnitList
Bit (Record UnitBuildList) SpyUnitList
Bit (Record UnitBuildList) SlaverUnitList
Bit (Record UnitBuildList) DiplomatUnitList
Bit (Record UnitBuildList) MissionaryUnitList
Bit (Record UnitBuildList) SeaTransportUnitList
Bit (Record UnitBuildList) AirTransportUnitList
Bit (Record UnitBuildList) FreightUnitList
Expand Down

0 comments on commit 31f0ae6

Please sign in to comment.