[BTS] SGOTM 26 - Home Slices

At T109 get 10% ep just in case 1 turn of 100% ep output is not enough and make decision at T110?

I don't think WT wants to use the EP slider at all so I think we need to come to an agreement if we want to spend gold on the EP slider or not. Once we've agreed to do so, then we need to figure out the details of how much slider, how many turns, etc. Peter should start spending fewer EP on us once he meets SB so once we have eyes on his research I'm hoping that we're able to keep it.

Personally, I'm in favor of using the slider as mentioned before. 1 turn of lost research by running the slider is nothing compared to us losing many turns duplicating Peter's research.
 
Ok, I traded Math to Sitting Bull for 10:gold: + map and Monotheism to Peter for 50:gold: + map.
Paused and uploaded again.

Interesting results. :)
Spoiler :






Ha, Math to Sitting Bull only got us +1 fair trade since we've know him so long.
We are never going to get to +4 fair trade Friendly at this rate!

Our 3rd missionary can infect Yakaterinburg T115, our 1st Yaroslavl' on T116, and our 2nd Novgorod T117.
If Peter remains with only 3 Tao cities, we bribe him to Confu on T116.
If Peter gets a 4th Tao city, then we bribe him on Confu on T117.

Our Galley can head back down south to check the last fogged tile after dropping off the 2 missionaries.

**Edit**
Jeez, those Russians are crazy.
That new city has NOTHING :lol:
 
Last edited:
+1 vote

At T109 get 10% ep just in case 1 turn of 100% ep output is not enough and make decision at T110?
We now have enough money to run 100% slider all the way through Banking. :D
Check the originally planned micro with 3 Courthouses, and spending 100% on T108 should be ok since we have 510:gold:

I think we should do 100%:espionage: slider on Peter now T108, then 10%:espionage: on T109 and 90%:science: on Aesthetics since Peter will likely be past the medium sized tech by T109.

We find out what Peter is teching T110 since 100% slider on T108 is not enough to reveal what Peter is teching on T109.

We can trade Aesthetics for Peter on T116 for Iron Working + switch to Confu (as long as he meets Sitting Bull before then)
Then when he is Friendly, hopefully Currency + new ??? tech for Philosophy.
 
Last edited:
Our 3rd missionary can infect Yakaterinburg T115, our 1st Yaroslavl' on T116, and our 2nd Novgorod T117.
If Peter remains with only 3 Tao cities, we bribe him to Confu on T116.
If Peter gets a 4th Tao city, then we bribe him on Confu on T117.

:lol:
Iirc, WT’s formula was 6 Peter cities forces 3 Confu cities.
 
Now is when we want to know what Peter is teching so we don't duplicate his research, right?

Can we discuss using the EP slider at 100% on Peter now?
I thought we wanted to wait till after Peter meets SB, so Peter doesn’t bump his ep slider twice.
 
Iirc, WT’s formula was 6 Peter cities forces 3 Confu cities.
It is the lessor of cities/2 or Tao cities -1.
Once Peter gets a 4th Tao city, we need 3 Confu cities.

I thought we wanted to wait till after Peter meets SB, so Peter doesn’t bump his ep slider twice.
Where the AI touches its espionage slider is unknown. :hmm:

Almost always it is somewhere between vision on their tech and vision on their cities I think.
 
I thought we wanted to wait till after Peter meets SB, so Peter doesn’t bump his ep slider twice.
Are you sure that's a real thing. Have you tested this?? I don't know that he'll bump it if we go 100% for one turn but I'm not 100% sure about this. But even if he does will he also actually bump his slider when he meets SB or just divert some of his EP toward SB?
 
It is the lessor of cities/2 or Tao cities -1.
Once Peter gets a 4th Tao city, we need 3 Confu cities.


Where the AI touches its espionage slider is unknown. :hmm:

Almost always it is somewhere between vision on their tech and vision on their cities I think.
If you can make sense of this formula:

There probably is no hate ... the code for AI allocation of espionage points is quite weird -- it appears they can only press their '+' buttons to adjust the weights in the espionage screen.

They recognize any deficits and try to catch up through incrementing the weights by certain values that calculate to

difference(espionage points spent)/8 - attitude_value.

The weights are capped at 99. There is no way for an AI to reduce them again ... if you open a late-ADs save in debug mode and check AI-EP-weights you will often see the 99s allocated to various opponents, also the friendly ones ... :crazyeye:

So the AI east of Toku could also be another Toku without contact to anybody else -- thus he had to spend all EPs on our Toku who is now desperately trying to catch up ...

Yes, I used conditional formatting in the 'loss'-column to quickly see where we were bleeding fractional commerce the most. The freebee:science: included in the modifier-multiplication makes the difference so that for certain values of total commerce choosing a 50%-50% slider for 2 turns can be better than 0%-100% slider.
Maybe this means it’s better to put the eps on peter now before he meets SB because he wouldn’t need to change the weights to continue being 100% on us.

More basically, as long as we stay below a value of 1 in that formula he wouldn’t need to change his weights.
 
Is seeing an AI’s research a “passive” mission. Will our cost to see Peter’s research go down when we put Confu in one of his cities?

The costs for the passive espionage missions are equal to their base costs (200 for investigate city) multiplied by (100+TheirPointsAgainstYou)/100 but then they are also subject to the same modifiers as the active missions. These all work multiplicative:
  • One of your cities has a trade route to the target city: -20% = *0.8

  • Your state religion is present in the city (these two bonuses will add up to a total of -40% = *0.6):
+ You have the holy city for this religion: -25% = *0.75
+ Target Player has adopted a different/no state religion: -15% = *0.85​
  • Target City has a certain amount of your city culture (not plot culture!): -50% * YourCC/(TheirCC+YourCC) --> *0.5 ... *1.0
  • Target City has a Security Bureau: +50% = *1.5
  • Distance Modifier: +100%*(PlotDistanceToYourCapital + MapMaxPlotDistance)/MapMaxPlotDistance (MapMaxPlotDistance = 72 / 111 for standard / huge maps) --> *1.02 ... *2.0
  • Multiplier for ratio of total/ever accumulated :espionage: points (not the allocated points for missions): (2*TheirPoints + YourPoints)/(TheirPoints + 2*YourPoints) --> *0.5 ... *2.0 (this is the percentage given behind the player's name in the espionage screen)
  • Target Player has recently run a counterespionage mission against you: +100% = *2.0
  • {for active missions: discount for fortified turns of spy: -10% ... -50% = *0.9 ... *0.5}
I guess the 120% increase comes from the Security Bureaus + either a counterespionage mission against you (which has cost Pericles points against you so that the increase < 150%) or an infiltration by a Great Spy which lead to a drastic increase of TheirPointsAgainstYou and shifted the ratio of total/ever accumulated :espionage: points. The mission costs are independent of CitySize so Pergamon is a bit more expensive than Athens because it probably is farther away from your capital. Samos doesn't get the *0.8 from TradeRoutes but has no SecBureau. Halicarnassus has no SecBureau and gets the additional *0.6 for your State Religion (I assume you have the Holy City). But this is all very speculative, a save might help to clarify things.
 
Is seeing an AI’s research a “passive” mission. Will our cost to see Peter’s research go down when we put Confu in one of his cities?
I guess See Research does not get bonuses. Bonuses are only for passive missions applied to specific cities:
Passive Missions
Base Factor * (100+How much they have against you)

Demographics=0.3
City Visibility=1.2
Investigate=2
See Research=0.75

Destroy improvement
75 * Game speed factor

Destroy building/Project/Production
6 * hammer cost

Steal gold
3* gold to steal [gold available to steal is Total Gold* pop of this city/total pop]

Insert Culture
3* culture to insert (5% of Total culture for the tile)

Poison Water/Unhapiness
120

City Revolt
500

Steal Tech
1.5 * cost of tech

Switch civic/religion
600 * game speed factor

Counter espionage
100* game speed factor


One note, missions that target cities are eligible for bonuses

Spoiler :

nt CvPlayer::getEspionageMissionBaseCost(EspionageMissionTypes eMission, PlayerTypes eTargetPlayer, const CvPlot* pPlot, int iExtraData, const CvUnit* pSpyUnit) const
{
CvEspionageMissionInfo& kMission = GC.getEspionageMissionInfo(eMission);
int iBaseMissionCost = kMission.getCost();

// -1 means this mission is disabled
if (iBaseMissionCost == -1)
{
return -1;
}

CvCity* pCity = NULL;
if (NULL != pPlot)
{
pCity = pPlot->getPlotCity();
}

if (kMission.isSelectPlot())
{
if (NULL == pPlot)
{
return -1;
}

if (!pPlot->isRevealed(getTeam(), false))
{
return -1;
}
}

if (NULL == pCity && kMission.isTargetsCity())
{
return -1;
}

int iMissionCost = -1;

if (kMission.getStealTreasuryTypes() > 0)
{
// Steal Treasury
int iNumTotalGold = (GET_PLAYER(eTargetPlayer).getGold() * kMission.getStealTreasuryTypes()) / 100;

if (NULL != pCity)
{
iNumTotalGold *= pCity->getPopulation();
iNumTotalGold /= std::max(1, GET_PLAYER(eTargetPlayer).getTotalPopulation());
}

if (iNumTotalGold > 0)
{
iMissionCost = (iBaseMissionCost * iNumTotalGold) / 100;
}
}
else if (kMission.getBuyTechCostFactor() > 0)
{
// Buy (Steal) Tech
TechTypes eTech = (TechTypes)iExtraData;
int iProdCost = MAX_INT;

if (NO_TECH == eTech)
{
for (int iTech = 0; iTech < GC.getNumTechInfos(); ++iTech)
{
if (canStealTech(eTargetPlayer, (TechTypes)iTech))
{
int iCost = GET_TEAM(getTeam()).getResearchCost((TechTypes)iTech);
if (iCost < iProdCost)
{
iProdCost = iCost;
eTech = (TechTypes)iTech;
}
}
}
}
else
{
iProdCost = GET_TEAM(getTeam()).getResearchCost(eTech);
}

if (NO_TECH != eTech)
{
if (canStealTech(eTargetPlayer, eTech))
{
iMissionCost = iBaseMissionCost + ((100 + kMission.getBuyTechCostFactor()) * iProdCost) / 100;
}
}
}
else if (kMission.getSwitchCivicCostFactor() > 0)
{
// Switch Civics
CivicTypes eCivic = (CivicTypes)iExtraData;

if (NO_CIVIC == eCivic)
{
for (int iCivic = 0; iCivic < GC.getNumCivicInfos(); ++iCivic)
{
if (canForceCivics(eTargetPlayer, (CivicTypes)iCivic))
{
eCivic = (CivicTypes)iCivic;
break;
}
}
}

if (NO_CIVIC != eCivic)
{
if (canForceCivics(eTargetPlayer, eCivic))
{
iMissionCost = iBaseMissionCost + (kMission.getSwitchCivicCostFactor() * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getAnarchyPercent()) / 10000;
}
}
}
else if (kMission.getSwitchReligionCostFactor() > 0)
{
// Switch Religions
ReligionTypes eReligion = (ReligionTypes)iExtraData;

if (NO_RELIGION == eReligion)
{
for (int iReligion = 0; iReligion < GC.getNumReligionInfos(); ++iReligion)
{
if (canForceReligion(eTargetPlayer, (ReligionTypes)iReligion))
{
eReligion = (ReligionTypes)iReligion;
break;
}
}
}

if (NO_RELIGION != eReligion)
{
if (canForceReligion(eTargetPlayer, eReligion))
{
iMissionCost = iBaseMissionCost + (kMission.getSwitchReligionCostFactor() * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getAnarchyPercent()) / 10000;
}
}
}
else if (kMission.getDestroyUnitCostFactor() > 0)
{
// Destroys Unit
CvUnit* pUnit = GET_PLAYER(eTargetPlayer).getUnit(iExtraData);
int iCost = MAX_INT;

if (NULL == pUnit)
{
if (NULL != pPlot)
{
CLLNode<IDInfo>* pUnitNode = pPlot->headUnitNode();

while (pUnitNode != NULL)
{
CvUnit* pLoopUnit = ::getUnit(pUnitNode->m_data);
pUnitNode = pPlot->nextUnitNode(pUnitNode);

if (canSpyDestroyUnit(eTargetPlayer, *pLoopUnit))
{
int iValue = getProductionNeeded(pLoopUnit->getUnitType());
if (iValue < iCost)
{
iCost = iValue;
pUnit = pLoopUnit;
}
}
}

}
}
else
{
iCost = getProductionNeeded(pUnit->getUnitType());
}

if (NULL != pUnit)
{
if (canSpyDestroyUnit(eTargetPlayer, *pUnit))
{
iMissionCost = iBaseMissionCost + ((100 + kMission.getDestroyUnitCostFactor()) * iCost) / 100;
}
}
}
else if (kMission.getDestroyProjectCostFactor() > 0)
{
ProjectTypes eProject = (ProjectTypes) iExtraData;
int iCost = MAX_INT;

if (NO_PROJECT == eProject)
{
for (int iProject = 0; iProject < GC.getNumProjectInfos(); ++iProject)
{
if (canSpyDestroyProject(eTargetPlayer, (ProjectTypes)iProject))
{
int iValue = getProductionNeeded((ProjectTypes)iProject);

if (iValue < iCost)
{
iCost = iValue;
eProject = (ProjectTypes)iProject;
}
}
}
}
else
{
iCost = getProductionNeeded(eProject);
}

if (NO_PROJECT != eProject)
{
if (canSpyDestroyProject(eTargetPlayer, eProject))
{
iMissionCost = iBaseMissionCost + ((100 + kMission.getDestroyProjectCostFactor()) * iCost) / 100;
}
}
}
else if (kMission.getDestroyProductionCostFactor() > 0)
{
FAssert(NULL != pCity);
if (NULL != pCity)
{
iMissionCost = iBaseMissionCost + ((100 + kMission.getDestroyProductionCostFactor()) * pCity->getProduction()) / 100;
}
}
else if (kMission.getBuyUnitCostFactor() > 0)
{
// Buy Unit
CvUnit* pUnit = GET_PLAYER(eTargetPlayer).getUnit(iExtraData);
int iCost = MAX_INT;

if (NULL == pUnit)
{
if (NULL != pPlot)
{
CLLNode<IDInfo>* pUnitNode = pPlot->headUnitNode();

while (pUnitNode != NULL)
{
CvUnit* pLoopUnit = ::getUnit(pUnitNode->m_data);
pUnitNode = pPlot->nextUnitNode(pUnitNode);

if (canSpyBribeUnit(eTargetPlayer, *pLoopUnit))
{
int iValue = getProductionNeeded(pLoopUnit->getUnitType());
if (iValue < iCost)
{
iCost = iValue;
pUnit = pLoopUnit;
}
}
}

}
}
else
{
iCost = getProductionNeeded(pUnit->getUnitType());
}


if (NULL != pUnit)
{
if (canSpyBribeUnit(eTargetPlayer, *pUnit))
{
iMissionCost = iBaseMissionCost + ((100 + kMission.getBuyUnitCostFactor()) * iCost) / 100;
}
}
}
else if (kMission.getDestroyBuildingCostFactor() > 0)
{
BuildingTypes eBuilding = (BuildingTypes) iExtraData;
int iCost = MAX_INT;

if (NO_BUILDING == eBuilding)
{
for (int iBuilding = 0; iBuilding < GC.getNumBuildingInfos(); ++iBuilding)
{
if (canSpyDestroyBuilding(eTargetPlayer, (BuildingTypes)iBuilding))
{
int iValue = getProductionNeeded((BuildingTypes)iBuilding);

if (iValue < iCost)
{
iCost = iValue;
eBuilding = (BuildingTypes)iBuilding;
}
}
}
}
else
{
iCost = getProductionNeeded(eBuilding);
}

if (NO_BUILDING != eBuilding)
{
if (NULL != pCity && pCity->getNumRealBuilding(eBuilding) > 0)
{
if (canSpyDestroyBuilding(eTargetPlayer, eBuilding))
{
iMissionCost = iBaseMissionCost + ((100 + kMission.getDestroyBuildingCostFactor()) * iCost) / 100;
}
}
}
}
else if (kMission.getBuyCityCostFactor() > 0)
{
// Buy City
if (NULL != pCity)
{
iMissionCost = iBaseMissionCost + (kMission.getBuyCityCostFactor() * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getGrowthPercent()) / 10000;
}
}
else if (kMission.getCityInsertCultureCostFactor() > 0)
{
// Insert Culture into City
if (NULL != pPlot && pPlot->getCulture(getID()) > 0)
{
int iCultureAmount = kMission.getCityInsertCultureAmountFactor() * pCity->countTotalCultureTimes100();
iCultureAmount /= 10000;
iCultureAmount = std::max(1, iCultureAmount);
iMissionCost = iBaseMissionCost + (kMission.getCityInsertCultureCostFactor() * iCultureAmount) / 100;
}
}
else if (kMission.isDestroyImprovement())
{
if (NULL != pPlot && !pPlot->isCity())
{
if (pPlot->getImprovementType() != NO_IMPROVEMENT || pPlot->getRouteType() != NO_ROUTE)
{
iMissionCost = (iBaseMissionCost * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getBuildPercent()) / 100;
}
}
}
else if (kMission.getCityPoisonWaterCounter() > 0)
{
FAssert(NULL != pCity);
// Cannot poison a city's water supply if it's already poisoned (value is negative when active)
if (NULL != pCity && pCity->getEspionageHealthCounter() <= 0)
{
iMissionCost = iBaseMissionCost;
}
}

// Make city unhappy
else if (kMission.getCityUnhappinessCounter() > 0)
{
FAssert(NULL != pCity);
// Cannot make a city unhappy if you've already done it (value is negative when active)
if (NULL != pCity && pCity->getEspionageHappinessCounter() <= 0)
{
iMissionCost = iBaseMissionCost;
}
}

// Make city Revolt
else if (kMission.getCityRevoltCounter() > 0)
{
FAssert(NULL != pCity);
// Cannot make a city revolt if it's already revolting
if (NULL != pCity && pCity->getOccupationTimer() == 0)
{
iMissionCost = iBaseMissionCost;
}
}
else if (kMission.getCounterespionageMod() > 0)
{
if (GET_TEAM(getTeam()).getCounterespionageTurnsLeftAgainstTeam(GET_PLAYER(eTargetPlayer).getTeam()) <= 0)
{
iMissionCost = (iBaseMissionCost * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getResearchPercent()) / 100;
}
}
else if (kMission.getPlayerAnarchyCounter() > 0)
{
// Player anarchy timer: can't add more turns of anarchy to player already in the midst of it
if (!GET_PLAYER(eTargetPlayer).isAnarchy())
{
iMissionCost = (iBaseMissionCost * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getAnarchyPercent()) / 100;
}
}
else if (kMission.isPassive())
{
iMissionCost = (iBaseMissionCost * (100 + GET_TEAM(GET_PLAYER(eTargetPlayer).getTeam()).getEspionagePointsAgainstTeam(getTeam()))) / 100;
}
else
{
iMissionCost = (iBaseMissionCost * GC.getGameSpeedInfo(GC.getGameINLINE().getGameSpeedType()).getResearchPercent()) / 100;
}

if (iMissionCost < 0)
{
return -1;
}

return iMissionCost;
}
 
I hope to get Aes free from either SB or Peter. We have 15 turns or so to wait for that, so I don't like the 90% aes plan.

If Peter gets any tech other than MC next, then we will have to do MC ourselves 1st thing cus he won't get MC fast enough.

Back when we were going to wait to turn on research til T111, I was against EPs on Peter, but now, we could start MC on T109 if we knew he wasn't doing it.
Seems like we can get that knowledge with 1t slider. Maybe work another fur or two in Cows. Maybe work silver instead of Deer after 4whip in Silver?
 
Last edited:
In the final analysis, we want to know what Peter is researching from now on. So we’re gonna have to spend those EPs sooner or later, I suppose it makes sense to do it sooner.

Judging from Kait’s test, peter will eventually research the compass-optic path. So maybe we can force that by gifting him the techs we’ve done, as needed.
 
Back
Top Bottom