Code
5019/// Checks to see if there are any technologies to steal5020/// If so, steals them!5021void CvEspionageAI::StealTechnology()5022{5023 CvPlayerEspionage* pEspionage = m_pPlayer->GetEspionage();50245025 // try to steal technologies5026 for(uint uiDefendingPlayer = 0; uiDefendingPlayer < MAX_MAJOR_CIVS; uiDefendingPlayer++)5027 {5028 PlayerTypes eDefendingPlayer = (PlayerTypes)uiDefendingPlayer;5029 int iHeistLocationCounter = 0;5030 while(pEspionage->m_aiNumTechsToStealList[uiDefendingPlayer] > 0)5031 {5032 // steal a tech5033 CvAssertMsg(pEspionage->m_aaPlayerStealableTechList[uiDefendingPlayer].size() > 0, "pEspionage->m_aaPlayerStealableTechList[uiPlayer] list is empty. Not good");5034 TeamTypes eTeam = m_pPlayer->getTeam();5035 TechTypes eStolenTech = pEspionage->m_aaPlayerStealableTechList[uiDefendingPlayer][0];5036 GET_TEAM(eTeam).setHasTech(eStolenTech, true, m_pPlayer->GetID(), true, true);5037 GET_TEAM(eTeam).GetTeamTechs()->SetNoTradeTech(eStolenTech, true);50385039 // send out notifications to the parties that were stolen from5040 CvPlot* pPlot = GC.getMap().plot(pEspionage->m_aHeistLocations[uiDefendingPlayer][iHeistLocationCounter].m_iX, pEspionage->m_aHeistLocations[uiDefendingPlayer][iHeistLocationCounter].m_iY);5041 CvAssertMsg(pPlot, "Could not find plot location for HeistLocation");5042 if(pPlot)5043 {5044 CvCity* pCity = pPlot->getPlotCity();5045 CvAssertMsg(pCity, "Plot does not contain a city");5046 if(pCity)5047 {5048 CvAssertMsg(pCity->getOwner() == uiDefendingPlayer, "City does not belong to player. This is very strange");5049 CvCityEspionage* pCityEspionage = pCity->GetCityEspionage();5050 CvAssertMsg(pCityEspionage, "City did not have CityEspionage data");5051 if(pCityEspionage)5052 {5053 CvPlayerEspionage* pDefendingPlayerEspionage = GET_PLAYER(eDefendingPlayer).GetEspionage();5054 if(pDefendingPlayerEspionage)5055 {5056 pDefendingPlayerEspionage->AddSpyMessage(pCity->getX(), pCity->getY(), m_pPlayer->GetID(), pCityEspionage->m_aiResult[m_pPlayer->GetID()], eStolenTech);5057 }5058 }5059 }5060 }5061 iHeistLocationCounter++;50625063 // recalculate the num techs to steal list5064 pEspionage->BuildStealableTechList((PlayerTypes)uiDefendingPlayer);5065 if(pEspionage->m_aaPlayerStealableTechList[uiDefendingPlayer].size() > 0 && pEspionage->m_aiNumTechsToStealList[uiDefendingPlayer] > 0)5066 {5067 pEspionage->m_aiNumTechsToStealList[uiDefendingPlayer]--;5068 }5069 else5070 {5071 pEspionage->m_aiNumTechsToStealList[uiDefendingPlayer] = 0;5072 }5073 }5074 }5075}