Is there a way to renew Open Borders before it lapses?

Yeah, but why should they be programmed to automatically not allow OB in that time frame when they would have no initial clue what my intentions are? Maybe I want to send an arch to create a landmark to their benefit? Why would they decline that possibility or any of my assets in trade (if we're on relatively good terms diplomatically), when I could simply be wanting passage for a neighboring war or any other reason that excludes digging their land? They don't know I'm a thief (yet)... If they deny me their OB after I've already had access to their lands and took advantage of it to dig up sites, then I understand them not providing further entrance.

It sucks pouring significant hammers into arch play, something that's promoted as a crucially incentivized aspect of winning a CV, yet its potential can never be maximized because the AI unknowingly nullifies it en masse once you start excelling with influence. It takes away some fun, and I just don't agree with how it's always functioned. If the AI needs to be programmed to slow my CV chances by refusing my OB so I don't get more tourism bonus%, then of course I've no issue with that, but the current implementation of this has the side effect of stunting arch play, which I believe needs adjustment in order to bring out the best experience possible. VP is too good to let something like this slide, as these are the kinds of smaller things that need refinement when the community talks of "going for gold".

I rest my case, and hopefully others will come to understand the reason for my dispute.

It only takes one OB and a well executed plan to strip a player's land of around 6-9 artifacts. That's the majority (if not the totality) of a player's in-borders artifacts.

G
 
A turn before open borders will end, AI just ask human with propose for new open borders(with recalculated cost if needed). If AI dont want new proposal then just inform human with impossible deal cost.
If human declines, nothing happens - open borders will just end as usual.
If human agree, then add new proposal - lets name it Open Borders X(where X is number from previous open borders)
OR if an engine in current state allows, then just increase a deal length of current OB and replace cost of a deal.

We lost only one turn in terms of wrong calculation(person who accepts pays twice(cost of last day from previous deal and cost from new deal))
 
So maybe a good approach to this issue, especially if the arch mechanics are changed such that archeologists can dig without mutual OB, would be to enable cancellation of OB deals on denouncement, as is done for embassies.
If it's doable, I really like this approach.
Except, now that I think about it, perhaps it can be exploited by humans? Like expel a rival civ from your territory if they're about to seize a city while attacking from your realm, or to get rid of missionaries... Not major issues, but minor exploitations.
Hmm... On balance I still like it.
 
It's relevant to the discussion, so I've improved the diplo AI mechanics for stealing artifacts as follows:

- AI will now always have an opinion penalty if you steal their artifacts, regardless of if you make a promise or not (with the previous mechanic, you could apparently steal one artifact per AI with no penalty). The penalty and duration increases every time you steal an artifact from the same AI (caps at 40 negative opinion for 3+ artifacts) and it decays over time. Making a promise and keeping it will lower but not eliminate the penalty.

- AI will no longer give Open Borders to players who have stolen any of their artifacts if there are still any artifacts in their lands that can be stolen by that player. This applies to both humans and AIs, is independent of the opinion penalty (so even if they've forgiven you, they're still not letting you in until their sites are excavated), and distinguishes between normal and hidden antiquity sites.
 
It's relevant to the discussion, so I've improved the diplo AI mechanics for stealing artifacts as follows:

- AI will now always have an opinion penalty if you steal their artifacts, regardless of if you make a promise or not (with the previous mechanic, you could apparently steal one artifact per AI with no penalty). The penalty and duration increases every time you steal an artifact from the same AI (caps at 40 negative opinion for 3+ artifacts) and it decays over time. Making a promise and keeping it will lower but not eliminate the penalty.

- AI will no longer give Open Borders to players who have stolen any of their artifacts if there are still any artifacts in their lands that can be stolen by that player. This applies to both humans and AIs, is independent of the opinion penalty (so even if they've forgiven you, they're still not letting you in until their sites are excavated), and distinguishes between normal and hidden antiquity sites.

And you are sure the AI has no bias on Open Borders to a player....just for the fact that Archaeology is out? It certain feels that way that all of my open borders get shut down around this time period.
 
And you are sure the AI has no bias on Open Borders to a player....just for the fact that Archaeology is out? It certain feels that way that all of my open borders get shut down around this time period.

Yes. Feel free to check the code :)

Code:
/// How much in V-POINTS (aka value) is Open Borders worth?  You gotta admit that V-POINTS sound pretty cool though
int CvDealAI::GetOpenBordersValue(bool bFromMe, PlayerTypes eOtherPlayer, bool bUseEvenValue)
{
   CvAssertMsg(GetPlayer()->GetID() != eOtherPlayer, "DEAL_AI: Trying to check value of Open Borders with oneself.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");

   MajorCivApproachTypes eApproach = GetPlayer()->GetDiplomacyAI()->GetMajorCivApproach(eOtherPlayer, /*bHideTrueFeelings*/ false);

   // If we're friends, then OB is always equally valuable to both parties
#if !defined(MOD_BALANCE_CORE)
   if(eApproach == MAJOR_CIV_APPROACH_FRIENDLY)
       return 50;
#else
   int iItemValue = 100;
#endif

#if defined(MOD_DIPLOMACY_CIV4_FEATURES)
   if (MOD_DIPLOMACY_CIV4_FEATURES) {
       if (bFromMe)
       {
           // If it's my item and I'm the vassal of the other player, accept it.
           if (GET_TEAM(GET_PLAYER(eOtherPlayer).getTeam()).GetMaster() == GET_PLAYER(GetPlayer()->GetID()).getTeam())
           {
               return iItemValue;
           }
       }
       else
       {
           // If it's their item and they're my vassal, accept it.
           if (GET_TEAM(GetPlayer()->getTeam()).GetMaster() == GET_PLAYER(eOtherPlayer).getTeam())
           {
               return iItemValue;
           }
       }
   }
#endif

   // Me giving Open Borders to the other guy
   if(bFromMe)
   {
       if (!GetPlayer()->GetDiplomacyAI()->IsWillingToGiveOpenBordersToPlayer(eOtherPlayer))
       {
           return INT_MAX;
       }
       // Approach is important
       switch(eApproach)
       {
       case MAJOR_CIV_APPROACH_HOSTILE:
       case MAJOR_CIV_APPROACH_GUARDED:
       case MAJOR_CIV_APPROACH_WAR:
           return INT_MAX;
           break;
       case MAJOR_CIV_APPROACH_DECEPTIVE:
           iItemValue += 400;
           break;
       case MAJOR_CIV_APPROACH_AFRAID:
           iItemValue += 300;
           break;
       case MAJOR_CIV_APPROACH_FRIENDLY:
           iItemValue += 50;
           break;
       case MAJOR_CIV_APPROACH_NEUTRAL:
           iItemValue += 200;
           break;
       default:
           CvAssertMsg(false, "DEAL_AI: AI player has no valid Approach for Open Borders valuation.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.")
           iItemValue += 100;
           break;
       }

       // If they're at war with our enemies then we're more likely to give them OB
       int iNumEnemiesAtWarWith = GetPlayer()->GetDiplomacyAI()->GetNumOurEnemiesPlayerAtWarWith(eOtherPlayer);
#if defined(MOD_BALANCE_CORE_DEALS)
       if(iNumEnemiesAtWarWith > 0)
#else
       if(iNumEnemiesAtWarWith >= 2)
#endif
       {
#if defined(MOD_BALANCE_CORE_DEALS)
           iItemValue *= (100 - (iNumEnemiesAtWarWith * 5));
#else
           iItemValue *= 10;
#endif
           iItemValue /= 100;
       }
#if !defined(MOD_BALANCE_CORE_DEALS)
       else if(iNumEnemiesAtWarWith == 1)
       {
           iItemValue *= 50;
           iItemValue /= 100;
       }
#endif
#if defined(MOD_BALANCE_FLIPPED_TOURISM_MODIFIER_OPEN_BORDERS)
       if (GetPlayer()->GetCulture()->GetTourism() / 100 > 0)
       {
           // The civ we need influence on the most should ALWAYS be included
           if (GetPlayer()->GetCulture()->GetCivLowestInfluence(false /*bCheckOpenBorders*/) == eOtherPlayer)
           {
               iItemValue *= 50;
               iItemValue /= 100;
           }

           // If have influence over half the civs, want OB with the other half
           if (GetPlayer()->GetCulture()->GetNumCivsToBeInfluentialOn() <= GetPlayer()->GetCulture()->GetNumCivsInfluentialOn())
           {
               if (GetPlayer()->GetCulture()->GetInfluenceLevel(eOtherPlayer) < INFLUENCE_LEVEL_INFLUENTIAL)
               {
                   iItemValue *= 50;
                   iItemValue /= 100;
               }
           }
       }
#endif
#if !defined(MOD_BALANCE_FLIPPED_TOURISM_MODIFIER_OPEN_BORDERS)
       // Do we think he's going for culture victory?
       AIGrandStrategyTypes eCultureStrategy = (AIGrandStrategyTypes) GC.getInfoTypeForString("AIGRANDSTRATEGY_CULTURE");
       if (eCultureStrategy != NO_AIGRANDSTRATEGY && GetPlayer()->GetGrandStrategyAI()->GetGuessOtherPlayerActiveGrandStrategy(eOtherPlayer) == eCultureStrategy)
       {
           CvPlayer &kOtherPlayer = GET_PLAYER(eOtherPlayer);

           // If he has tourism and he's not influential on us yet, resist!
           if (kOtherPlayer.GetCulture()->GetTourism() / 100 > 0 && kOtherPlayer.GetCulture()->GetInfluenceOn(GetPlayer()->GetID()) < INFLUENCE_LEVEL_INFLUENTIAL)
           {
               iItemValue *= 500;
               iItemValue /= 100;
           }
       }
#if defined(MOD_BALANCE_CORE_DEALS)
       if(MOD_BALANCE_CORE_DEALS)
       {
           CvPlayer &kOtherPlayer = GET_PLAYER(eOtherPlayer);
           if (kOtherPlayer.GetCulture()->GetTourism() / 100 > 0 && (kOtherPlayer.GetCulture()->GetInfluenceOn(GetPlayer()->GetID()) > INFLUENCE_LEVEL_FAMILIAR) && (kOtherPlayer.GetCulture()->GetInfluenceOn(GetPlayer()->GetID()) < INFLUENCE_LEVEL_INFLUENTIAL))
           {
               if(GetPlayer()->GetDiplomacyAI()->GetMajorCivOpinion(eOtherPlayer) <= MAJOR_CIV_OPINION_NEUTRAL)
               {
                   if(GetPlayer()->GetDiplomacyAI()->GetVictoryBlockLevel(eOtherPlayer) >= BLOCK_LEVEL_STRONG || GetPlayer()->GetDiplomacyAI()->GetVictoryDisputeLevel(eOtherPlayer) >= DISPUTE_LEVEL_STRONG)
                   {
                       iItemValue = 100000;
                   }
               }
           }
       }
#endif
#endif
   }
    // Other guy giving me Open Borders
   else
   {
#if defined(MOD_BALANCE_CORE)
       if (!GetPlayer()->GetDiplomacyAI()->IsWantsOpenBordersWithPlayer(eOtherPlayer))
       {
           return INT_MAX;
       }

       // Approach is important
       switch(eApproach)
       {
       //If we don't like him, don't take his borders. It's a trap!
       case MAJOR_CIV_APPROACH_WAR:
       case MAJOR_CIV_APPROACH_HOSTILE:
       case MAJOR_CIV_APPROACH_DECEPTIVE:
       case MAJOR_CIV_APPROACH_GUARDED:
           return INT_MAX;
           break;
       case MAJOR_CIV_APPROACH_AFRAID:
           iItemValue += 200;
           break;
       case MAJOR_CIV_APPROACH_FRIENDLY:
           iItemValue += 100;
           break;
       case MAJOR_CIV_APPROACH_NEUTRAL:
           iItemValue += 50;
           break;
       default:
           CvAssertMsg(false, "DEAL_AI: AI player has no valid Approach for Open Borders valuation.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.")
           iItemValue += 100;
           break;
       }
       // Proximity is very important
       switch(GetPlayer()->GetProximityToPlayer(eOtherPlayer))
       {
       case PLAYER_PROXIMITY_DISTANT:
           iItemValue *= 70;
           iItemValue /= 100;
           break;
       case PLAYER_PROXIMITY_FAR:
           iItemValue *= 80;
           iItemValue /= 100;
           break;
       case PLAYER_PROXIMITY_CLOSE:
           iItemValue *= 90;
           iItemValue /= 100;
           break;
       case PLAYER_PROXIMITY_NEIGHBORS:
           iItemValue *= 110;
           iItemValue /= 100;
           break;
       default:
           CvAssertMsg(false, "DEAL_AI: AI player has no valid Proximity for Open Borders valuation.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.")
           iItemValue = 0;
           break;
       }
#else
       // Proximity is very important
       switch(GetPlayer()->GetProximityToPlayer(eOtherPlayer))
       {
       case PLAYER_PROXIMITY_DISTANT:
           iItemValue = 5;
           break;
       case PLAYER_PROXIMITY_FAR:
           iItemValue = 10;
           break;
       case PLAYER_PROXIMITY_CLOSE:
           iItemValue = 15;
           break;
       case PLAYER_PROXIMITY_NEIGHBORS:
           iItemValue = 30;
           break;
       default:
           CvAssertMsg(false, "DEAL_AI: AI player has no valid Proximity for Open Borders valuation.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.")
           iItemValue = 0;
           break;
       }
#endif
       // Reduce value by half if the other guy only has a single City
       if(GET_PLAYER(eOtherPlayer).getNumCities() == 1)
       {
           iItemValue *= 50;
           iItemValue /= 100;
       }
#if defined(MOD_BALANCE_CORE_DIPLOMACY)
       if(GetPlayer()->IsCramped() && GET_PLAYER(eOtherPlayer).getNumCities() > GetPlayer()->getNumCities())
       {
           iItemValue *= 125;
           iItemValue /= 100;
       }
       if(GetPlayer()->GetDiplomacyAI()->GetNeighborOpinion(eOtherPlayer) == MAJOR_CIV_OPINION_ENEMY)
       {
           iItemValue *= 125;
           iItemValue /= 100;
       }
       if(GetPlayer()->GetDiplomacyAI()->MusteringForNeighborAttack(eOtherPlayer))
       {
           iItemValue *= 150;
           iItemValue /= 100;
       }
       //We need to explore?
       EconomicAIStrategyTypes eNeedRecon = (EconomicAIStrategyTypes) GC.getInfoTypeForString("ECONOMICAISTRATEGY_NEED_RECON");
       EconomicAIStrategyTypes eNavalRecon = (EconomicAIStrategyTypes) GC.getInfoTypeForString("ECONOMICAISTRATEGY_NEED_RECON_SEA");
       if(eNeedRecon != NO_ECONOMICAISTRATEGY && GetPlayer()->GetEconomicAI()->IsUsingStrategy(eNeedRecon))
       {
           iItemValue *= 115;
           iItemValue /= 100;
       }
       if(eNavalRecon != NO_ECONOMICAISTRATEGY && GetPlayer()->GetEconomicAI()->IsUsingStrategy(eNavalRecon))
       {
           iItemValue *= 115;
           iItemValue /= 100;
       }
#endif
       // Boost value greatly if we are going for a culture win
       // If going for culture win always want open borders against civs we need influence on
#if !defined(MOD_BALANCE_FLIPPED_TOURISM_MODIFIER_OPEN_BORDERS)
       AIGrandStrategyTypes eCultureStrategy = (AIGrandStrategyTypes) GC.getInfoTypeForString("AIGRANDSTRATEGY_CULTURE");
       if (eCultureStrategy != NO_AIGRANDSTRATEGY && GetPlayer()->GetGrandStrategyAI()->GetActiveGrandStrategy() == eCultureStrategy && GetPlayer()->GetCulture()->GetTourism() / 100 > 0 )
       {
           // The civ we need influence on the most should ALWAYS be included
           if (GetPlayer()->GetCulture()->GetCivLowestInfluence(false /*bCheckOpenBorders*/) == eOtherPlayer)
           {
               iItemValue *= 1000;
               iItemValue /= 100;
           }

           // If have influence over half the civs, want OB with the other half
           else if (GetPlayer()->GetCulture()->GetNumCivsToBeInfluentialOn() <= GetPlayer()->GetCulture()->GetNumCivsInfluentialOn())
           {
               if (GetPlayer()->GetCulture()->GetInfluenceLevel(eOtherPlayer) < INFLUENCE_LEVEL_INFLUENTIAL)
               {
                   iItemValue *= 500;
                   iItemValue /= 100;
               }
           }

           else if (GetPlayer()->GetProximityToPlayer(eOtherPlayer) == PLAYER_PROXIMITY_NEIGHBORS)
           {
               // If we're cramped then we want OB more with our neighbors
               if(GetPlayer()->IsCramped())
               {
                   iItemValue *= 300;
                   iItemValue /= 100;
               }
           }
       }
#endif
#if defined(MOD_BALANCE_FLIPPED_TOURISM_MODIFIER_OPEN_BORDERS)
       // Do we think he's going for culture victory? If we're contesting this, don't take his open borders!
       CvPlayer &kOtherPlayer = GET_PLAYER(eOtherPlayer);
       // Opinion also matters
       if(GetPlayer()->GetDiplomacyAI()->GetMajorCivApproach(eOtherPlayer, /*bHideTrueFeelings*/ false) < MAJOR_CIV_APPROACH_FRIENDLY)
       {
           if (kOtherPlayer.GetCulture()->GetTourism() / 100 > 0 && (kOtherPlayer.GetCulture()->GetInfluenceOn(GetPlayer()->GetID()) < INFLUENCE_LEVEL_INFLUENTIAL))
           {
               if(GetPlayer()->GetDiplomacyAI()->GetVictoryBlockLevel(eOtherPlayer) >= BLOCK_LEVEL_STRONG || GetPlayer()->GetDiplomacyAI()->GetVictoryDisputeLevel(eOtherPlayer) >= DISPUTE_LEVEL_STRONG)
               {
                   return INT_MAX;
               }

               // If he has influence over half the civs, want to block OB with the other half
               if (kOtherPlayer.GetCulture()->GetNumCivsToBeInfluentialOn() <= kOtherPlayer.GetCulture()->GetNumCivsInfluentialOn())
               {
                   return INT_MAX;
               }
           }
       }
#endif
   }

   // Are we trying to find the middle point between what we think this item is worth and what another player thinks it's worth?
   if(bUseEvenValue)
   {
       int iReverseValue = GET_PLAYER(eOtherPlayer).GetDealAI()->GetOpenBordersValue(!bFromMe, GetPlayer()->GetID(), /*bUseEvenValue*/ false);

       if (iReverseValue == INT_MAX)
           //no deal, can't agree on a value
           iItemValue = INT_MAX;
       else
           iItemValue = (iItemValue + iReverseValue)/2;
   }

   return iItemValue;
}

The key section is here:
Code:
#if defined(MOD_BALANCE_FLIPPED_TOURISM_MODIFIER_OPEN_BORDERS)
      // Do we think he's going for culture victory? If we're contesting this, don't take his open borders!
       CvPlayer &kOtherPlayer = GET_PLAYER(eOtherPlayer);
       // Opinion also matters
       if(GetPlayer()->GetDiplomacyAI()->GetMajorCivApproach(eOtherPlayer, /*bHideTrueFeelings*/ false) < MAJOR_CIV_APPROACH_FRIENDLY)
       {
           if (kOtherPlayer.GetCulture()->GetTourism() / 100 > 0 && (kOtherPlayer.GetCulture()->GetInfluenceOn(GetPlayer()->GetID()) < INFLUENCE_LEVEL_INFLUENTIAL))
           {
               if(GetPlayer()->GetDiplomacyAI()->GetVictoryBlockLevel(eOtherPlayer) >= BLOCK_LEVEL_STRONG || GetPlayer()->GetDiplomacyAI()->GetVictoryDisputeLevel(eOtherPlayer) >= DISPUTE_LEVEL_STRONG)
               {
                   return INT_MAX;
               }

               // If he has influence over half the civs, want to block OB with the other half
               if (kOtherPlayer.GetCulture()->GetNumCivsToBeInfluentialOn() <= kOtherPlayer.GetCulture()->GetNumCivsInfluentialOn())
               {
                   return INT_MAX;
               }
           }
       }
#endif

And if you're curious, here's the updated IsWillingToGiveOpenBordersToPlayer function that I sent in my pull request.

Code:
/// Do we want to give Open Borders to eOtherPlayer?
bool CvDiplomacyAI::IsWillingToGiveOpenBordersToPlayer(PlayerTypes ePlayer)
{
   CvAssertMsg(ePlayer >= 0, "DIPLOMACY_AI: Invalid Player Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");
   CvAssertMsg(ePlayer < MAX_MAJOR_CIVS, "DIPLOMACY_AI: Invalid Player Index.  Please send Jon this with your last 5 autosaves and what changelist # you're playing.");

// If going for culture win we always want open borders against civs we need influence on
#if defined (MOD_BALANCE_FLIPPED_TOURISM_MODIFIER_OPEN_BORDERS)
   //If we need influence over them, we want to give OB, thanks.
   if ((m_pPlayer->GetCulture()->GetInfluenceLevel(ePlayer) > INFLUENCE_LEVEL_FAMILIAR) && (m_pPlayer->GetCulture()->GetInfluenceTrend(ePlayer) >= INFLUENCE_TREND_STATIC))
   {
       return true;
   }
#else
   //If we need influence over them, we want to give OB, thanks.
   if ((GET_PLAYER(ePlayer).GetCulture()->GetInfluenceLevel(m_pPlayer->GetID()) > INFLUENCE_LEVEL_FAMILIAR) && (GET_PLAYER(ePlayer).GetCulture()->GetInfluenceTrend(m_pPlayer->GetID()) >= INFLUENCE_TREND_STATIC))
   {
       return false;
   }
#endif
#if defined(MOD_DIPLOMACY_CIV4_FEATURES)
   if (IsVassal(ePlayer) || GET_PLAYER(ePlayer).GetDiplomacyAI()->IsVassal(GetPlayer()->GetID()))
       return true;
#endif
#if defined(MOD_BALANCE_CORE)
   if (IsDenouncedPlayer(ePlayer) || GET_PLAYER(ePlayer).GetDiplomacyAI()->IsDenouncedPlayer(GetPlayer()->GetID()))
   {
       return false;
   }
   if (IsArmyInPlaceForAttack(ePlayer) || IsWantsSneakAttack(ePlayer))
   {
       return false;
   }
   if (GET_PLAYER(ePlayer).GetDiplomacyAI()->IsCloseToDominationVictory())
   {
       return false;
   }
   // Are they here to steal our PRICELESS ARCHAEOLOGICAL ARTIFACTS???
   if (GetNegativeArchaeologyPoints(ePlayer) > 0 || IsPlayerMadeNoDiggingPromise(ePlayer) ||
       IsPlayerIgnoredNoDiggingPromise(ePlayer) || IsPlayerBrokenNoDiggingPromise(ePlayer))
   {
       int iHiddenSites = GetPlayer()->GetEconomicAI()->GetVisibleHiddenAntiquitySitesOwnTerritory();
       int iNormalSites = GetPlayer()->GetEconomicAI()->GetVisibleAntiquitySitesOwnTerritory() - iHiddenSites;
       PolicyBranchTypes eArtistry = (PolicyBranchTypes)GC.getPOLICY_BRANCH_AESTHETICS();
 
       if (iNormalSites > 0)
       {
           return false;
       }
       // Have they unlocked Artistry?
       if (iHiddenSites > 0 && GET_PLAYER(ePlayer).GetPlayerPolicies()->IsPolicyBranchUnlocked(eArtistry))
       {
           return false;
       }
   }
   if (GET_TEAM(GetTeam()).IsHasDefensivePact(GET_PLAYER(ePlayer).getTeam()) || IsDoFAccepted(ePlayer))
   {
       return true;
   }
#endif

   MajorCivApproachTypes eApproach = GetMajorCivApproach(ePlayer, /*bHideTrueFeelings*/ true);
   if (eApproach >= MAJOR_CIV_APPROACH_AFRAID)
   {
       return true;
   }
   if (GetPlayerMilitaryStrengthComparedToUs(ePlayer) <= STRENGTH_AVERAGE)
   {
       return true;
   }

#if defined(MOD_BALANCE_CORE)
   if (!GET_PLAYER(ePlayer).isHuman() && GET_PLAYER(ePlayer).GetDiplomacyAI()->MusteringForNeighborAttack(m_pPlayer->GetID()))
   {
       return true;
   }
#endif
   return false;
}

The only thing referring to Archaeology is the check I added for the upcoming version, and it's only run if:
Code:
// Are they here to steal our PRICELESS ARCHAEOLOGICAL ARTIFACTS???
if (GetNegativeArchaeologyPoints(ePlayer) > 0 || IsPlayerMadeNoDiggingPromise(ePlayer) ||
       IsPlayerIgnoredNoDiggingPromise(ePlayer) || IsPlayerBrokenNoDiggingPromise(ePlayer))
You have dug up 1+ artifacts from them, or you've made, ignored or broken a promise not to dig up artifacts with them.
 
Last edited:
Yes. Feel free to check the code :)

Thank you, looks like your right. Hmm...it may be more the fact that I find the AI very belligerent around this time. I assumed it was because of Archaeology and digs but maybe its just a good war time. Perhaps that is why its hard to get open borders
 
It only takes one OB and a well executed plan to strip a player's land of around 6-9 artifacts. That's the majority (if not the totality) of a player's in-borders artifacts.

G
Perhaps this might've been the case in years past, but I think the 3 arch cap has done a fine job in preventing things of this nature since its introduction. I have faith it would still hold up. Once/if any changes go through, I'll specifically play test an artistry game with Knowledge Through Devotion, to see if it's too exploitable.
 
Perhaps this might've been the case in years past, but I think the 3 arch cap has done a fine job in preventing things of this nature since its introduction. I have faith it would still hold up. Once/if any changes go through, I'll specifically play test an artistry game with Knowledge Through Devotion, to see if it's too exploitable.

Artistry with Knowledge Through Devotion is my go-to, and from my point of view the AI not allowing Open Borders is the main way the AI can frustrate my archeological ambitions (apart from being at war with me). With faith purchases you can dig up a lot of artifacts.

I feel the balance at the moment is pretty good though. Civs with a strong science game may well unlock the tech before I do, as happened in my last game with the Maya. And yes, the 3 arch cap big improvement in terms of reducing archeologist spam. The AI seems fairly good at using archeologists themselves these days.

I'm certainly not going to complain about civs being more willing to open their borders though.

Somethin I have noticed it that civs will occasionally contact you saying 'don't dig up my artifacts' when you've build a landmark but I think in those cases it doesn't actually represent how they feel towards you. I haven't noticed any negative diplo modifiers following that announcement. Only when I actually dig stuff up. Similarly, when I do into the 'talk to this person about something' menu, there is occasionally an option for me to tell them to stop digging stuff up in my lands. Even though they didn't (I always tend to get there first myself). I assume the trigger is from archeologists entering/passing through your borders or something. Similar to how you can tell people to stop spying on you even if you don't have any proof they are doing it.
 
I never see AI keep the "don't dig on my lands" promise. Only thing I can do before open borders expires is to put a worker on the tile and scan my whole territory for rival archeologists, and start working on some random improvement when I spot one.
 
I never see AI keep the "don't dig on my lands" promise. Only thing I can do before open borders expires is to put a worker on the tile and scan my whole territory for rival archeologists, and start working on some random improvement when I spot one.

You can declare war. :)

Also, I fixed the AI not keeping the "don't dig on my lands" promise (I think). If it persists, let me know.

There was an existing check to prevent it from happening, but due to a typo it was testing if you had made the promise to them, rather than if they had made the promise to you as intended.
 
Quick semi-related archaeology question, just finished a game on the 10-23 beta and I was able to grab the artifact and then send a second archaeologist to instantly build a monument anyway. Is this intended?
 
Quick semi-related archaeology question, just finished a game on the 10-23 beta and I was able to grab the artifact and then send a second archaeologist to instantly build a monument anyway. Is this intended?

No- please report on Github. :)
 
Done. Should I try to go back through auto saves to find an example? I know I did it near Venice after vassalizing them near the end of the game.
 
Done. Should I try to go back through auto saves to find an example? I know I did it near Venice after vassalizing them near the end of the game.

It would be ideal, yeah.
 
@Gazebo , maybe not the ideal solution, but is there a way to teleport missionaries out of a rival country when open borders expire, like what happens to military units? (Just have to make sure they don't teleport to another civ with no open borders agreement.)
 
@Gazebo , maybe not the ideal solution, but is there a way to teleport missionaries out of a rival country when open borders expire, like what happens to military units? (Just have to make sure they don't teleport to another civ with no open borders agreement.)

Missionaries don't need Open Borders?
 
Yes, they do... Well they don't need it but it helps. Isn't... isn't this what started the thread?? Read Stalker0's initial post.

Ah, I see. :)

Still though, teleportation outside of the borders has risks to it, and the player may not want their missionaries teleported...
 
You can see how many turns is left on the deal page but an indicator with remaining turns in the UI next to the AI in question you maybe be ideal.
Not sure if that is possible to add.
 
Top Bottom