playXP

서브 메뉴

Page. 1 / 12522 [내 메뉴에 추가]
글쓰기
작성자 아이콘 개념의극한
작성일 2013-12-31 11:02:28 KST 조회 244
제목
문명 5 핵 AI
//
			// Operation vs. Other Civs
			//
			// If at war, consider launching an operation
			if(IsUsingStrategy(eStrategyFightAWar))
			{
				// check nuke launches
				// Loop through each enemy
				for(iPlayerLoop = 0; iPlayerLoop < MAX_MAJOR_CIVS; iPlayerLoop++)
				{
					eLoopPlayer = (PlayerTypes) iPlayerLoop;
		
					// Is this a player we have relations with?
					if(eLoopPlayer != m_pPlayer->GetID() && m_pPlayer->GetDiplomacyAI()->IsPlayerValid(eLoopPlayer))
					{
						bool bLaunchNuke = false;
						// only evaluate nukes when we have nukes and we've declared war on someone
						if (m_pPlayer->getNumNukeUnits() > 0 && GET_TEAM(m_pPlayer->getTeam()).isAtWar(GET_PLAYER(eLoopPlayer).getTeam())) 
						{
							// they nuked us, so we can nuke them.
							if (m_pPlayer->GetDiplomacyAI()->GetNumTimesNuked(eLoopPlayer) > 0)
							{	
								bLaunchNuke = true;
							}
							// if we already nuked them, uhhh, keep it up!
							else if (GET_PLAYER(eLoopPlayer).GetDiplomacyAI()->GetNumTimesNuked(m_pPlayer->GetID()) > 0)
							{
								bLaunchNuke = true;
							}
							else 
							{
								bool bRollForNuke = false;
								WarProjectionTypes eLastWarProjection = m_pPlayer->GetDiplomacyAI()->GetLastWarProjection(eLoopPlayer);
								WarProjectionTypes eCurrentWarProjection = m_pPlayer->GetDiplomacyAI()->GetWarProjection(eLoopPlayer);
								if (eCurrentWarProjection == WAR_PROJECTION_DESTRUCTION)
								{
									// roll every turn
									bRollForNuke = true;
								}
								else if (eCurrentWarProjection != WAR_PROJECTION_UNKNOWN && eCurrentWarProjection != NO_WAR_PROJECTION_TYPE && 
									eLastWarProjection != WAR_PROJECTION_UNKNOWN && eLastWarProjection != NO_WAR_PROJECTION_TYPE && 
									eCurrentWarProjection < eLastWarProjection)
								{
									// roll for nukes!
									bRollForNuke = true;
								}
		
								if (bRollForNuke)
								{
									int iFlavorNuke = m_pPlayer->GetGrandStrategyAI()->GetPersonalityAndGrandStrategy((FlavorTypes)GC.getInfoTypeForString("FLAVOR_USE_NUKE"));
									int iRoll  = GC.getGame().getJonRandNum(10, "Roll to see if we're going to nuke!");
									int iRoll2 = GC.getGame().getJonRandNum(10, "Second roll to see if we're going to nuke!");
									if (iRoll < iFlavorNuke && iRoll2 < iFlavorNuke)
									{
										bLaunchNuke = true;
									}
								}
							}
						}
		
						if (bLaunchNuke)
						{
							RequestNukeAttack(eLoopPlayer);
						}
		
					}
				}

CvMilitaryAI.cpp


AI 핵 조건들

1. 핵공격을 받았는가?

OR

2. 핵공격을 실시했는가?

Or

3. 적이 너무 강한가?

OR

4. 전쟁 양상이 너무 악화됬는가?



간디가 nuke_propensity 가 12 라서 게임중 가장 핵을 많이 만들고 많이 씀 ㅁㄴㅇㄹ



지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

발도장 찍기
아이콘 DieKatze (2013-12-31 11:17:51 KST)
0↑ ↓0
센스 이미지
AI가 핵쓰기 시작하면 망한 판이라던데, 간디 빼고 선제 핵공격 하는 경우는 또 못본거 같아요
후면장갑일격 (2013-12-31 11:18:36 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
어휴 어지러워
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.