lindsay40k
Emperor
Is it possible to mod away the restriction on players making a PA? We don't mind team play but we don't like early game tech pooling.
case TRADE_PERMANENT_ALLIANCE:
if (!(GET_TEAM(getTeam()).isAVassal()) && !(GET_TEAM(GET_PLAYER(eWhoTo).getTeam()).isAVassal()))
{
if (getTeam() != GET_PLAYER(eWhoTo).getTeam() && !GET_TEAM(GET_PLAYER(eWhoTo).getTeam()).isVassal(getTeam()))
{
if (!atWar(getTeam(), GET_PLAYER(eWhoTo).getTeam()))
{
if (GET_TEAM(getTeam()).isPermanentAllianceTrading() || GET_TEAM(GET_PLAYER(eWhoTo).getTeam()).isPermanentAllianceTrading())
{
if ((GET_TEAM(getTeam()).getNumMembers() == 1) && (GET_TEAM(GET_PLAYER(eWhoTo).getTeam()).getNumMembers() == 1))
{
return true;
}
}
}
}
}
break;
void CvTeam::addTeam(TeamTypes eTeam)
{
CLLNode<TradeData>* pNode;
CvDeal* pLoopDeal;
CvPlot* pLoopPlot;
CvWString szBuffer;
bool bValid;
int iLoop;
int iI, iJ;
FAssert(eTeam != NO_TEAM);
FAssert(eTeam != getID());
for (iI = 0; iI < MAX_PLAYERS; iI++)
{
if (GET_PLAYER((PlayerTypes)iI).isAlive())
{
if ((GET_PLAYER((PlayerTypes)iI).getTeam() != getID()) && (GET_PLAYER((PlayerTypes)iI).getTeam() != eTeam))
{
if (GET_TEAM(GET_PLAYER((PlayerTypes)iI).getTeam()).isHasMet(getID()) && GET_TEAM(GET_PLAYER((PlayerTypes)iI).getTeam()).isHasMet(eTeam))
{
szBuffer = gDLL->getText("TXT_KEY_MISC_PLAYER_PERMANENT_ALLIANCE", getName().GetCString(), GET_TEAM(eTeam).getName().GetCString());
gDLL->getInterfaceIFace()->addMessage(((PlayerTypes)iI), false, GC.getEVENT_MESSAGE_TIME(), szBuffer, "AS2D_THEIRALLIANCE", MESSAGE_TYPE_MINOR_EVENT, NULL, (ColorTypes)GC.getInfoTypeForString("COLOR_HIGHLIGHT_TEXT"));
}
}
}
}
szBuffer = gDLL->getText("TXT_KEY_MISC_PLAYER_PERMANENT_ALLIANCE", getName().GetCString(), GET_TEAM(eTeam).getName().GetCString());
GC.getGameINLINE().addReplayMessage(REPLAY_MESSAGE_MAJOR_EVENT, getLeaderID(), szBuffer, -1, -1, (ColorTypes)GC.getInfoTypeForString("COLOR_HIGHLIGHT_TEXT"));
for (pLoopDeal = GC.getGameINLINE().firstDeal(&iLoop); pLoopDeal != NULL; pLoopDeal = GC.getGameINLINE().nextDeal(&iLoop))
{
if (((GET_PLAYER(pLoopDeal->getFirstPlayer()).getTeam() == getID()) && (GET_PLAYER(pLoopDeal->getSecondPlayer()).getTeam() == eTeam)) ||
((GET_PLAYER(pLoopDeal->getFirstPlayer()).getTeam() == eTeam) && (GET_PLAYER(pLoopDeal->getSecondPlayer()).getTeam() == getID())))
{
bValid = true;
if (pLoopDeal->getFirstTrades() != NULL)
{
for (pNode = pLoopDeal->getFirstTrades()->head(); pNode; pNode = pLoopDeal->getFirstTrades()->next(pNode))
{
if ((pNode->m_data.m_eItemType == TRADE_OPEN_BORDERS) ||
(pNode->m_data.m_eItemType == TRADE_DEFENSIVE_PACT) ||
(pNode->m_data.m_eItemType == TRADE_PEACE_TREATY) ||
(pNode->m_data.m_eItemType == TRADE_VASSAL) ||
(pNode->m_data.m_eItemType == TRADE_SURRENDER))
{
bValid = false;
}
}
}
if (pLoopDeal->getSecondTrades() != NULL)
{
for (pNode = pLoopDeal->getSecondTrades()->head(); pNode; pNode = pLoopDeal->getSecondTrades()->next(pNode))
{
if ((pNode->m_data.m_eItemType == TRADE_OPEN_BORDERS) ||
(pNode->m_data.m_eItemType == TRADE_DEFENSIVE_PACT) ||
(pNode->m_data.m_eItemType == TRADE_PEACE_TREATY) ||
(pNode->m_data.m_eItemType == TRADE_VASSAL) ||
(pNode->m_data.m_eItemType == TRADE_SURRENDER))
{
bValid = false;
}
}
}
if (!bValid)
{
pLoopDeal->kill();
}
}
}
shareItems(eTeam);
GET_TEAM(eTeam).shareItems(getID());
for (iI = 0; iI < MAX_TEAMS; iI++)
{
if ((iI != getID()) && (iI != eTeam))
{
if (GET_TEAM((TeamTypes)iI).isAlive())
{
if (GET_TEAM(eTeam).isHasMet((TeamTypes)iI))
{
meet(((TeamTypes)iI), false);
}
else if (isHasMet((TeamTypes)iI))
{
GET_TEAM(eTeam).meet(((TeamTypes)iI), false);
}
}
}
}
for (iI = 0; iI < MAX_TEAMS; iI++)
{
if ((iI != getID()) && (iI != eTeam))
{
if (GET_TEAM((TeamTypes)iI).isAlive())
{
if (GET_TEAM(eTeam).isAtWar((TeamTypes)iI))
{
declareWar(((TeamTypes)iI), false, GET_TEAM(eTeam).AI_getWarPlan((TeamTypes)iI));
}
else if (isAtWar((TeamTypes)iI))
{
GET_TEAM(eTeam).declareWar(((TeamTypes)iI), false, AI_getWarPlan((TeamTypes)iI));
}
}
}
}
for (iI = 0; iI < MAX_TEAMS; iI++)
{
if ((iI != getID()) && (iI != eTeam))
{
if (GET_TEAM((TeamTypes)iI).isAlive())
{
if (GET_TEAM(eTeam).isPermanentWarPeace((TeamTypes)iI))
{
setPermanentWarPeace(((TeamTypes)iI), true);
}
else if (isPermanentWarPeace((TeamTypes)iI))
{
GET_TEAM(eTeam).setPermanentWarPeace(((TeamTypes)iI), true);
}
}
}
}
for (iI = 0; iI < MAX_TEAMS; iI++)
{
if ((iI != getID()) && (iI != eTeam))
{
if (GET_TEAM((TeamTypes)iI).isAlive())
{
if (GET_TEAM(eTeam).isOpenBorders((TeamTypes)iI))
{
setOpenBorders(((TeamTypes)iI), true);
GET_TEAM((TeamTypes)iI).setOpenBorders(getID(), true);
}
else if (isOpenBorders((TeamTypes)iI))
{
GET_TEAM(eTeam).setOpenBorders(((TeamTypes)iI), true);
GET_TEAM((TeamTypes)iI).setOpenBorders(eTeam, true);
}
}
}
}
for (iI = 0; iI < MAX_TEAMS; iI++)
{
if ((iI != getID()) && (iI != eTeam))
{
if (GET_TEAM((TeamTypes)iI).isAlive())
{
if (GET_TEAM(eTeam).isDefensivePact((TeamTypes)iI))
{
setDefensivePact(((TeamTypes)iI), true);
GET_TEAM((TeamTypes)iI).setDefensivePact(getID(), true);
}
else if (isDefensivePact((TeamTypes)iI))
{
GET_TEAM(eTeam).setDefensivePact(((TeamTypes)iI), true);
GET_TEAM((TeamTypes)iI).setDefensivePact(eTeam, true);
}
}
}
}
for (iI = 0; iI < MAX_TEAMS; iI++)
{
if ((iI != getID()) && (iI != eTeam))
{
if (GET_TEAM((TeamTypes)iI).isAlive())
{
if (GET_TEAM(eTeam).isForcePeace((TeamTypes)iI))
{
setForcePeace(((TeamTypes)iI), true);
GET_TEAM((TeamTypes)iI).setForcePeace(getID(), true);
}
else if (isForcePeace((TeamTypes)iI))
{
GET_TEAM(eTeam).setForcePeace(((TeamTypes)iI), true);
GET_TEAM((TeamTypes)iI).setForcePeace(eTeam, true);
}
}
}
}
for (iI = 0; iI < MAX_TEAMS; iI++)
{
if ((iI != getID()) && (iI != eTeam))
{
if (GET_TEAM((TeamTypes)iI).isAlive())
{
if (GET_TEAM(eTeam).isVassal((TeamTypes)iI))
{
setVassal(((TeamTypes)iI), true, isCapitulated());
}
else if (isVassal((TeamTypes)iI))
{
GET_TEAM(eTeam).setVassal(((TeamTypes)iI), true, isCapitulated());
}
}
}
}
for (iI = 0; iI < MAX_TEAMS; iI++)
{
if ((iI != getID()) && (iI != eTeam))
{
if (GET_TEAM((TeamTypes)iI).isAlive())
{
if (GET_TEAM((TeamTypes)iI).isVassal(eTeam))
{
GET_TEAM((TeamTypes)iI).setVassal(getID(), true, GET_TEAM((TeamTypes)iI).isCapitulated());
}
else if (GET_TEAM((TeamTypes)iI).isVassal(getID()))
{
GET_TEAM((TeamTypes)iI).setVassal(eTeam, true, GET_TEAM((TeamTypes)iI).isCapitulated());
}
}
}
}
shareCounters(eTeam);
GET_TEAM(eTeam).shareCounters(getID());
for (iI = 0; iI < MAX_PLAYERS; iI++)
{
if (GET_PLAYER((PlayerTypes)iI).getTeam() == eTeam)
{
GET_PLAYER((PlayerTypes)iI).setTeam(getID());
}
}
for (iI = 0; iI < GC.getMapINLINE().numPlotsINLINE(); iI++)
{
pLoopPlot = GC.getMapINLINE().plotByIndexINLINE(iI);
pLoopPlot->changeVisibilityCount(getID(), pLoopPlot->getVisibilityCount(eTeam), NO_INVISIBLE, false);
for (iJ = 0; iJ < GC.getNumInvisibleInfos(); iJ++)
{
pLoopPlot->changeInvisibleVisibilityCount(getID(), ((InvisibleTypes)iJ), pLoopPlot->getInvisibleVisibilityCount(eTeam, ((InvisibleTypes)iJ)));
}
if (pLoopPlot->isRevealed(eTeam, false))
{
pLoopPlot->setRevealed(getID(), true, false, eTeam, false);
}
}
GC.getGameINLINE().updatePlotGroups();
for (iI = 0; iI < MAX_TEAMS; iI++)
{
if ((iI != getID()) && (iI != eTeam))
{
GET_TEAM((TeamTypes)iI).setWarWeariness(getID(), ((GET_TEAM((TeamTypes)iI).getWarWeariness(getID()) + GET_TEAM((TeamTypes)iI).getWarWeariness(eTeam)) / 2));
GET_TEAM((TeamTypes)iI).setStolenVisibilityTimer(getID(), ((GET_TEAM((TeamTypes)iI).getStolenVisibilityTimer(getID()) + GET_TEAM((TeamTypes)iI).getStolenVisibilityTimer(eTeam)) / 2));
GET_TEAM((TeamTypes)iI).AI_setAtWarCounter(getID(), ((GET_TEAM((TeamTypes)iI).AI_getAtWarCounter(getID()) + GET_TEAM((TeamTypes)iI).AI_getAtWarCounter(eTeam)) / 2));
GET_TEAM((TeamTypes)iI).AI_setAtPeaceCounter(getID(), ((GET_TEAM((TeamTypes)iI).AI_getAtPeaceCounter(getID()) + GET_TEAM((TeamTypes)iI).AI_getAtPeaceCounter(eTeam)) / 2));
GET_TEAM((TeamTypes)iI).AI_setHasMetCounter(getID(), ((GET_TEAM((TeamTypes)iI).AI_getHasMetCounter(getID()) + GET_TEAM((TeamTypes)iI).AI_getHasMetCounter(eTeam)) / 2));
GET_TEAM((TeamTypes)iI).AI_setDefensivePactCounter(getID(), ((GET_TEAM((TeamTypes)iI).AI_getDefensivePactCounter(getID()) + GET_TEAM((TeamTypes)iI).AI_getDefensivePactCounter(eTeam)) / 2));
GET_TEAM((TeamTypes)iI).AI_setShareWarCounter(getID(), ((GET_TEAM((TeamTypes)iI).AI_getShareWarCounter(getID()) + GET_TEAM((TeamTypes)iI).AI_getShareWarCounter(eTeam)) / 2));
GET_TEAM((TeamTypes)iI).AI_setWarSuccess(getID(), ((GET_TEAM((TeamTypes)iI).AI_getWarSuccess(getID()) + GET_TEAM((TeamTypes)iI).AI_getWarSuccess(eTeam)) / 2));
GET_TEAM((TeamTypes)iI).AI_setEnemyPeacetimeTradeValue(getID(), ((GET_TEAM((TeamTypes)iI).AI_getEnemyPeacetimeTradeValue(getID()) + GET_TEAM((TeamTypes)iI).AI_getEnemyPeacetimeTradeValue(eTeam)) / 2));
GET_TEAM((TeamTypes)iI).AI_setEnemyPeacetimeGrantValue(getID(), ((GET_TEAM((TeamTypes)iI).AI_getEnemyPeacetimeGrantValue(getID()) + GET_TEAM((TeamTypes)iI).AI_getEnemyPeacetimeGrantValue(eTeam)) / 2));
if (GET_TEAM((TeamTypes)iI).isAlive())
{
GET_TEAM((TeamTypes)iI).AI_setWarPlan(getID(), NO_WARPLAN, false);
GET_TEAM((TeamTypes)iI).AI_setWarPlan(eTeam, NO_WARPLAN, false);
}
}
}
AI_updateWorstEnemy();
AI_updateAreaStragies();
GC.getGameINLINE().updateScore(true);
}