Shurdus
Am I Napoleon?
Same here. Pick it up!Correct me if i'm wrong but isn't 2W1N a coast? Did you mean 2W1S? Frankly I think (if I'm right) this means you need to pick up your ghandi thread.
Same here. Pick it up!Correct me if i'm wrong but isn't 2W1N a coast? Did you mean 2W1S? Frankly I think (if I'm right) this means you need to pick up your ghandi thread.
What was the original map script for this map?
First Great Scientist made an Academy in Babylon. I tried farming another but, courtesy of GLH, ended up with a Merchant, which is not bad in itself as I might need upgrade gold at one point - as I lack IRON.
[...]
Cyrus has a spare iron to trade which could help mass-upgrade Trebuchets. (resource+gpt+pillage to cancel the deal)
You need a border pop to get there so the galley can cross the ocean tiles. By my count she already has 4 island cities.That seems odd the islands to cathy's east should be uninhabited if its reachable by galleys, she's a rexing beast!
Well I'm not planning on keeping Cathy angry with me but I agree the situation looks grim. I'll look at what's possible diplo-wise here.@ Kossin:
I played this game and found I was a bit more lucky than you.
It's really bad luck that Cathy has conquered Hatty. The game would have been easier if it hadn't happen.
In your game, to conquer Wang is feasible but I don't think we can go further. In case you haven't noticed, Cathy (or say, her team) has the worst attitude towards you (Cathy to you +2, Hatty to you -1. +0.5 on average). You'll easily be her target especially when you're at war.
The war against Wang is feasible but I think we are unlike to go further.
Frankly the chance to win this game is dim. The land is OK with the GLH but Cathy is too powerful in this map. Maybe you'll find something else if you retry this map.
Yes that would work, however I need Cathy at Friendly for that. Moreover I probably want to keep Cathy out of wars on the contrary as then she'll steamroll and vassal everyone.Kossin, I agree with Dingding that your chances here of winning are slim, unfortunately on diety it seems that some AI's can run away with the game. There is one possible way of winning that I see but its a huge risk and its a good chance you wont even get a chance to try it out.
Basically, if you manage to get Cathy into a war with another nation and somehow get her stack out of reach of you, you could potentially take Hatty's comparatively weakly defended cities and if you're lucky, sue for peace. This extra land plus Cathy's loss of a vassal may be your only route to victory. However, there's a lot between you and that happening. But it definately seems to me that looking at the current situation, you have no peaceful path to victory...
The only other thing that I can think of is if there are some fantastic islands or other landmasses out there that you are first to settle but again I doubt that would be enough.
Every move you make alters the RNG and thus AI decisions. It's kinda stupid and makes various games impossible to really compare.Looks like this game varies a lot. In my game by 225AD WK got Lib. By 800AD Cathy had vassalized Cyrus+Shaka while Hatty had taken on WK.
@ Kossin:
I played this game and found I was a bit more lucky than you.
It's really bad luck that Cathy has conquered Hatty. The game would have been easier if it hadn't happen.
In your game, to conquer Wang is feasible but I don't think we can go further. In case you haven't noticed, Cathy (or say, her team) has the worst attitude towards you (Cathy to you +2, Hatty to you -1. +0.5 on average). You'll easily be her target especially when you're at war.
Is the diplo score averaged like that? I thought that applied only when the team is being considered as the target of a DOW. But if Cathy's side is considering a DOW, then isn't Hatty's rating irrelevant?
In this game you probably can't bribe Cathy into peace because your land is inferior 40% of hers. She will decline the peace demand by "We'd rather win this game".Well I'm not planning on keeping Cathy angry with me but I agree the situation looks grim. I'll look at what's possible diplo-wise here.
I didn't have anything to bribe Cathy out of the war unfortunately as taking over Hatty would have made this game easy afterwards.
If I lose, oh well. It was a good try.
There are two different attitudes if it concerns the teams: team attitude (the average of all the inter-relations) and player-to-player attitude.
The first one applies to tech trade/ DoW consideration, etc.
The second one applies to resource trade, change civic, change religion, etc.
If I understand correctly, Cathy will take the team attitude in the DoW decision. Anyway, it's Cautious in Kossin's game, no matter team or player attitude.
[B]CvTeamAI.cpp:[/B]
AttitudeTypes CvTeamAI::AI_getAttitude(TeamTypes eTeam, bool bForced) const
{
int iAttitude;
int iCount;
int iI, iJ;
FAssertMsg(eTeam != getID(), "shouldn't call this function on ourselves");
iAttitude = 0;
iCount = 0;
for (iI = 0; iI < MAX_PLAYERS; iI++)
{
if (GET_PLAYER((PlayerTypes)iI).isAlive())
{
if (GET_PLAYER((PlayerTypes)iI).getTeam() == getID())
{
for (iJ = 0; iJ < MAX_PLAYERS; iJ++)
{
if (GET_PLAYER((PlayerTypes)iJ).isAlive() && iI != iJ)
{
TeamTypes eTeamLoop = GET_PLAYER((PlayerTypes)iJ).getTeam();
if (eTeamLoop == eTeam || GET_TEAM(eTeamLoop).isVassal(eTeam) || GET_TEAM(eTeam).isVassal(eTeamLoop))
{
iAttitude += GET_PLAYER((PlayerTypes)iI).AI_getAttitude((PlayerTypes)iJ, bForced);
iCount++;
}
}
}
}
}
}
if (iCount > 0)
{
return ((AttitudeTypes)(iAttitude / iCount));
}
return ATTITUDE_CAUTIOUS;
}
int CvTeamAI::AI_getAttitudeVal(TeamTypes eTeam, bool bForced) const
{
int iAttitudeVal;
int iCount;
int iI, iJ;
FAssertMsg(eTeam != getID(), "shouldn't call this function on ourselves");
iAttitudeVal = 0;
iCount = 0;
for (iI = 0; iI < MAX_PLAYERS; iI++)
{
if (GET_PLAYER((PlayerTypes)iI).isAlive())
{
if (GET_PLAYER((PlayerTypes)iI).getTeam() == getID())
{
for (iJ = 0; iJ < MAX_PLAYERS; iJ++)
{
if (GET_PLAYER((PlayerTypes)iJ).isAlive())
{
if (GET_PLAYER((PlayerTypes)iJ).getTeam() == eTeam)
{
iAttitudeVal += GET_PLAYER((PlayerTypes)iI).AI_getAttitudeVal((PlayerTypes)iJ, bForced);
iCount++;
}
}
}
}
}
}
if (iCount > 0)
{
return (iAttitudeVal / iCount);
}
return 0;
}
[B]CvPlayerAI.cpp:[/B]
AttitudeTypes CvPlayerAI::AI_getAttitude(PlayerTypes ePlayer, bool bForced) const
{
PROFILE_FUNC();
FAssertMsg(ePlayer != getID(), "shouldn't call this function on ourselves");
return (AI_getAttitudeFromValue(AI_getAttitudeVal(ePlayer, bForced)));
}
int CvPlayerAI::AI_getAttitudeVal(PlayerTypes ePlayer, bool bForced) const
{
PROFILE_FUNC();
int iRankDifference;
int iAttitude;
int iI;
FAssertMsg(ePlayer != getID(), "shouldn't call this function on ourselves");
if (bForced)
{
if (getTeam() == GET_PLAYER(ePlayer).getTeam() || (GET_TEAM(getTeam()).isVassal(GET_PLAYER(ePlayer).getTeam()) && !GET_TEAM(getTeam()).isCapitulated()))
{
return 100;
}
if (isBarbarian() || GET_PLAYER(ePlayer).isBarbarian())
{
return -100;
}
}
iAttitude = GC.getLeaderHeadInfo(getPersonalityType()).getBaseAttitude();
iAttitude += GC.getHandicapInfo(GET_PLAYER(ePlayer).getHandicapType()).getAttitudeChange();
// if (GC.getGameINLINE().isOption(GAMEOPTION_AGGRESSIVE_AI))
// {
// if (GET_PLAYER(ePlayer).isHuman())
// {
// iAttitude -= 2;
// }
// }
if (!(GET_PLAYER(ePlayer).isHuman()))
{
iAttitude += (4 - abs(AI_getPeaceWeight() - GET_PLAYER(ePlayer).AI_getPeaceWeight()));
iAttitude += std::min(GC.getLeaderHeadInfo(getPersonalityType()).getWarmongerRespect(), GC.getLeaderHeadInfo(GET_PLAYER(ePlayer).getPersonalityType()).getWarmongerRespect());
}
iAttitude -= std::max(0, (GET_TEAM(GET_PLAYER(ePlayer).getTeam()).getNumMembers() - GET_TEAM(getTeam()).getNumMembers()));
iRankDifference = (GC.getGameINLINE().getPlayerRank(getID()) - GC.getGameINLINE().getPlayerRank(ePlayer));
if (iRankDifference > 0)
{
iAttitude += ((GC.getLeaderHeadInfo(getPersonalityType()).getWorseRankDifferenceAttitudeChange() * iRankDifference) / (GC.getGameINLINE().countCivPlayersEverAlive() + 1));
}
else
{
iAttitude += ((GC.getLeaderHeadInfo(getPersonalityType()).getBetterRankDifferenceAttitudeChange() * -(iRankDifference)) / (GC.getGameINLINE().countCivPlayersEverAlive() + 1));
}
if ((GC.getGameINLINE().getPlayerRank(getID()) >= (GC.getGameINLINE().countCivPlayersEverAlive() / 2)) &&
(GC.getGameINLINE().getPlayerRank(ePlayer) >= (GC.getGameINLINE().countCivPlayersEverAlive() / 2)))
{
iAttitude++;
}
if (GET_TEAM(GET_PLAYER(ePlayer).getTeam()).AI_getWarSuccess(getTeam()) > GET_TEAM(getTeam()).AI_getWarSuccess(GET_PLAYER(ePlayer).getTeam()))
{
iAttitude += GC.getLeaderHeadInfo(getPersonalityType()).getLostWarAttitudeChange();
}
iAttitude += AI_getCloseBordersAttitude(ePlayer);
iAttitude += AI_getWarAttitude(ePlayer);
iAttitude += AI_getPeaceAttitude(ePlayer);
iAttitude += AI_getSameReligionAttitude(ePlayer);
iAttitude += AI_getDifferentReligionAttitude(ePlayer);
iAttitude += AI_getBonusTradeAttitude(ePlayer);
iAttitude += AI_getOpenBordersAttitude(ePlayer);
iAttitude += AI_getDefensivePactAttitude(ePlayer);
iAttitude += AI_getRivalDefensivePactAttitude(ePlayer);
iAttitude += AI_getRivalVassalAttitude(ePlayer);
iAttitude += AI_getShareWarAttitude(ePlayer);
iAttitude += AI_getFavoriteCivicAttitude(ePlayer);
iAttitude += AI_getTradeAttitude(ePlayer);
iAttitude += AI_getRivalTradeAttitude(ePlayer);
for (iI = 0; iI < NUM_MEMORY_TYPES; iI++)
{
iAttitude += AI_getMemoryAttitude(ePlayer, ((MemoryTypes)iI));
}
iAttitude += AI_getColonyAttitude(ePlayer);
iAttitude += AI_getAttitudeExtra(ePlayer);
return range(iAttitude, -100, 100);
}