Bazaar developer reference

CvGame::setWinner(TeamTypes, VictoryTypes)

Defined in
CvGame.cpp, line 5873
Class
CvGame
Hook name
CivHooks::CvGame_setWinner

Hooks

static bool BeforeCvGame_setWinner(CvGame* self, TeamTypes eNewWinner, VictoryTypes eNewVictory);static void AfterCvGame_setWinner(CvGame* self, TeamTypes eNewWinner, VictoryTypes eNewVictory);static void ReplaceCvGame_setWinner(void (*original)(CvGame*, TeamTypes, VictoryTypes), CvGame* self, TeamTypes eNewWinner, VictoryTypes eNewVictory);CivRegisterBefore<CivHooks::CvGame_setWinner>(host, &BeforeCvGame_setWinner);CivRegisterAfter<CivHooks::CvGame_setWinner>(host, &AfterCvGame_setWinner);CivRegisterReplace<CivHooks::CvGame_setWinner>(host, &ReplaceCvGame_setWinner);

Code

5873void CvGame::setWinner(TeamTypes eNewWinner, VictoryTypes eNewVictory)5874{5875	if((getWinner() != eNewWinner) || (getVictory() != eNewVictory))5876	{5877		m_eWinner = eNewWinner;5878		m_eVictory = eNewVictory;5879		SetWinningTurn(getElapsedGameTurns());58805881		// Reset UN countdown if necessary5882		SetUnitedNationsCountdown(0);58835884		if(getVictory() != NO_VICTORY && !IsStaticTutorialActive())5885		{5886			CvVictoryInfo* pkVictoryInfo = GC.getVictoryInfo(getVictory());5887			CvAssert(pkVictoryInfo);5888			if(pkVictoryInfo == NULL)5889				return;58905891			const char* szVictoryTextKey = pkVictoryInfo->GetTextKey();58925893			if(getWinner() != NO_TEAM)5894			{5895				const PlayerTypes winningTeamLeaderID = GET_TEAM(getWinner()).getLeaderID();5896				CvPlayerAI& kWinningTeamLeader = GET_PLAYER(winningTeamLeaderID);5897				const char* szWinningTeamLeaderNameKey = kWinningTeamLeader.getNameKey();58985899				Localization::String localizedText = Localization::Lookup("TXT_KEY_GAME_WON");5900				localizedText << GET_TEAM(getWinner()).getName().GetCString() << szVictoryTextKey;5901				addReplayMessage(REPLAY_MESSAGE_MAJOR_EVENT, winningTeamLeaderID, localizedText.toUTF8(), -1, -1);59025903				//Notify everyone of the victory5904				localizedText = Localization::Lookup("TXT_KEY_NOTIFICATION_VICTORY_WINNER");5905				localizedText << szWinningTeamLeaderNameKey << szVictoryTextKey;59065907				Localization::String localizedSummary = Localization::Lookup("TXT_KEY_NOTIFICATION_SUMMARY_VICTORY_WINNER");5908				localizedSummary << szWinningTeamLeaderNameKey;59095910				for(int iNotifyLoop = 0; iNotifyLoop < MAX_MAJOR_CIVS; ++iNotifyLoop){5911					PlayerTypes eNotifyPlayer = (PlayerTypes) iNotifyLoop;5912					CvPlayerAI& kCurNotifyPlayer = GET_PLAYER(eNotifyPlayer);5913					CvNotifications* pNotifications = kCurNotifyPlayer.GetNotifications();5914					if(pNotifications){5915						pNotifications->Add(NOTIFICATION_VICTORY, localizedText.toUTF8(), localizedSummary.toUTF8(), -1, -1, -1);5916					}5917				}59185919#if !defined(NO_ACHIEVEMENTS)5920				//--Start Achievements5921				//--Don't allow most in multiplayer so friends can't achieve-whore it up together5922				if(!GC.getGame().isGameMultiPlayer() && kWinningTeamLeader.isHuman() && kWinningTeamLeader.isLocalPlayer())5923				{5924					const bool bUsingDLC1Scenario = gDLL->IsModActivated(CIV5_DLC_01_SCENARIO_MODID);5925					const bool bUsingDLC2Scenario = gDLL->IsModActivated(CIV5_DLC_02_SCENARIO_MODID) || gDLL->IsModActivated(CIV5_COMPLETE_SCENARIO1_MODID);5926					const bool bUsingDLC3Scenario = gDLL->IsModActivated(CIV5_DLC_03_SCENARIO_MODID);5927					const bool bUsingDLC4Scenario = gDLL->IsModActivated(CIV5_DLC_04_SCENARIO_MODID);5928					const bool bUsingDLC5Scenario = gDLL->IsModActivated(CIV5_DLC_05_SCENARIO_MODID);5929					const bool bUsingDLC6Scenario = gDLL->IsModActivated(CIV5_DLC_06_SCENARIO_MODID);59305931					const bool bUsingXP1Scenario1 = gDLL->IsModActivated(CIV5_XP1_SCENARIO1_MODID);5932					const bool bUsingXP1Scenario2 = gDLL->IsModActivated(CIV5_XP1_SCENARIO2_MODID);5933					const bool bUsingXP1Scenario3 = gDLL->IsModActivated(CIV5_XP1_SCENARIO3_MODID);59345935					const bool bUsingXP2Scenario1 = gDLL->IsModActivated(CIV5_XP2_SCENARIO1_MODID);5936					const bool bUsingXP2Scenario2 = gDLL->IsModActivated(CIV5_XP2_SCENARIO2_MODID);59375938					const VictoryTypes eVictorySpaceRace = static_cast<VictoryTypes>(1);5939					const VictoryTypes eVictoryDomination = static_cast<VictoryTypes>(2);5940					const VictoryTypes eVictoryCultural = static_cast<VictoryTypes>(3);5941					const VictoryTypes eVictoryDiplomatic = static_cast<VictoryTypes>(4);59425943					const PolicyBranchTypes ePolicyBranchFreedom = static_cast<PolicyBranchTypes>(9);5944					const PolicyBranchTypes ePolicyBranchOrder = static_cast<PolicyBranchTypes>(10);5945					const PolicyBranchTypes ePolicyBranchAutocracy = static_cast<PolicyBranchTypes>(11);59465947					const HandicapTypes eHandicapDeity = static_cast<HandicapTypes>(7);59485949					//Games Won Stat5950					gDLL->IncrementSteamStat(ESTEAMSTAT_TOTAL_WINS);59515952					//Victory on Map Sizes5953					WorldSizeTypes	winnerMapSize = GC.getMap().getWorldSize();5954					switch(winnerMapSize)5955					{5956					case WORLDSIZE_DUEL:5957						gDLL->UnlockAchievement(ACHIEVEMENT_MAPSIZE_DUEL);5958						break;5959					case WORLDSIZE_TINY:5960						gDLL->UnlockAchievement(ACHIEVEMENT_MAPSIZE_TINY);5961						break;5962					case WORLDSIZE_SMALL:5963						gDLL->UnlockAchievement(ACHIEVEMENT_MAPSIZE_SMALL);5964						break;5965					case WORLDSIZE_STANDARD:5966						if(!bUsingXP2Scenario2 && !bUsingXP2Scenario1)5967						{5968							gDLL->UnlockAchievement(ACHIEVEMENT_MAPSIZE_STANDARD);5969						}5970						break;5971					case WORLDSIZE_LARGE:5972						gDLL->UnlockAchievement(ACHIEVEMENT_MAPSIZE_LARGE);5973						break;5974					case WORLDSIZE_HUGE:5975						gDLL->UnlockAchievement(ACHIEVEMENT_MAPSIZE_HUGE);5976						break;5977					default:5978						OutputDebugString("Playing on some other kind of world size.");5979					}59805981					//Victory on Map Types5982					CvString winnerMapName = CvPreGame::mapScriptName();5983					//OutputDebugString(winnerMapName);5984					//OutputDebugString("\n");59855986					if(winnerMapName == "Assets\\Maps\\Continents.lua")5987						gDLL->UnlockAchievement(ACHIEVEMENT_MAPTYPE_CONTINENTS);5988					else if(winnerMapName == "Assets\\Maps\\Pangaea.lua")5989						gDLL->UnlockAchievement(ACHIEVEMENT_MAPTYPE_PANGAEA);5990					else if(winnerMapName == "Assets\\Maps\\Archipelago.lua")5991						gDLL->UnlockAchievement(ACHIEVEMENT_MAPTYPE_ARCHIPELAGO);5992					else if(winnerMapName == "Assets\\Maps\\Earth_Duel.Civ5Map" || winnerMapName == "Assets\\Maps\\Earth_Huge.Civ5Map"5993						|| winnerMapName == "Assets\\Maps\\Earth_Large.Civ5Map" || winnerMapName == "Assets\\Maps\\Earth_Small.Civ5Map"5994						|| winnerMapName == "Assets\\Maps\\Earth_Standard.Civ5Map" || winnerMapName == "Assets\\Maps\\Earth_Tiny.Civ5Map")5995						gDLL->UnlockAchievement(ACHIEVEMENT_MAPTYPE_EARTH);5996					else5997						OutputDebugString("\n Playing some other map. \n\n");599859996000					//Victory on Difficulty Levels6001					HandicapTypes winnerHandicapType = getHandicapType();6002					if(!bUsingXP2Scenario1 && !bUsingXP2Scenario2) 6003					{6004						switch(winnerHandicapType)6005						{6006						case 0:6007							gDLL->UnlockAchievement(ACHIEVEMENT_DIFLEVEL_SETTLER);6008							break;6009						case 1:6010							gDLL->UnlockAchievement(ACHIEVEMENT_DIFLEVEL_CHIEFTAIN);6011							break;6012						case 2:6013							gDLL->UnlockAchievement(ACHIEVEMENT_DIFLEVEL_WARLORD);6014							break;6015						case 3:6016							gDLL->UnlockAchievement(ACHIEVEMENT_DIFLEVEL_PRINCE);6017							break;6018						case 4:6019							gDLL->UnlockAchievement(ACHIEVEMENT_DIFLEVEL_KING);6020							break;6021						case 5:6022							gDLL->UnlockAchievement(ACHIEVEMENT_DIFLEVEL_EMPEROR);6023							break;6024						case 6:6025							gDLL->UnlockAchievement(ACHIEVEMENT_DIFLEVEL_IMMORTAL);6026							break;6027						case 7:6028							gDLL->UnlockAchievement(ACHIEVEMENT_DIFLEVEL_DEITY);6029							break;6030						default:6031							OutputDebugString("Playing on some non-existant dif level.");6032						}6033					}60346035					//Different Victory Win Types6036					if(!bUsingXP2Scenario1 && !bUsingXP2Scenario2)6037					{6038						switch(eNewVictory)6039						{6040						case 0:6041							OutputDebugString("No current Achievement for a time victory");6042							break;6043						case 1:6044							gDLL->UnlockAchievement(ACHIEVEMENT_VICTORY_SPACE);6045							break;6046						case 2:6047							{6048								if(!bUsingXP1Scenario1)6049								{6050									gDLL->UnlockAchievement(ACHIEVEMENT_VICTORY_DOMINATION);6051								}6052							}6053							break;6054						case 3:6055							gDLL->UnlockAchievement(ACHIEVEMENT_VICTORY_CULTURE);6056							break;6057						case 4:6058							gDLL->UnlockAchievement(ACHIEVEMENT_VICTORY_DIPLO);6059							break;6060						default:6061							OutputDebugString("Your l33t victory skills allowed you to win in some other way.");6062						}6063					}606460656066					//Victory with Specific Leaders6067					CvString pLeader =  kWinningTeamLeader.getLeaderTypeKey();60686069					if(!bUsingDLC6Scenario && pLeader == "LEADER_ALEXANDER")6070						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_ALEXANDER);6071					else if(pLeader == "LEADER_WASHINGTON" && !bUsingXP2Scenario1)6072						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_WASHINGTON);6073					else if(!bUsingXP1Scenario3 && !bUsingDLC4Scenario && !bUsingXP2Scenario1 && pLeader == "LEADER_ELIZABETH")6074						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_ELIZABETH);6075					else if(!bUsingXP1Scenario2 && !bUsingXP1Scenario3 && !bUsingDLC4Scenario && pLeader == "LEADER_NAPOLEON")6076						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_NAPOLEON);6077					else if(!bUsingXP1Scenario2 && !bUsingXP1Scenario3 && !bUsingDLC4Scenario && pLeader == "LEADER_BISMARCK")6078						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_BISMARCK);6079					else if(!bUsingXP1Scenario3 && pLeader == "LEADER_CATHERINE")6080					{6081						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_CATHERINE);60826083						if(bUsingXP1Scenario1 && winnerHandicapType >= 5)6084						{6085							gDLL->UnlockAchievement(ACHIEVEMENT_XP1_42);6086						}6087					}6088					else if(!bUsingXP1Scenario2 && !bUsingXP2Scenario2 && pLeader == "LEADER_AUGUSTUS")6089						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_CAESAR);6090					else if(!bUsingDLC6Scenario && pLeader == "LEADER_RAMESSES")6091						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_RAMESSES);6092					else if(!bUsingXP1Scenario2 && !bUsingXP1Scenario1 && pLeader == "LEADER_ASKIA")6093						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_ASKIA);6094					else if(!bUsingXP1Scenario1 && !bUsingDLC6Scenario && pLeader == "LEADER_HARUN_AL_RASHID")6095						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_HARUN);6096					else if(!bUsingDLC6Scenario && pLeader == "LEADER_DARIUS")6097						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_DARIUS);6098					else if(!bUsingDLC3Scenario && pLeader == "LEADER_GANDHI")6099					{6100						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_GANDHI);6101						if(eNewVictory == 3 && kWinningTeamLeader.getNumCities() <= 3) //Bollywood6102							gDLL->UnlockAchievement(ACHIEVEMENT_SPECIAL_BOLLYWOOD);6103					}6104					else if(pLeader == "LEADER_RAMKHAMHAENG")6105						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_RAMKHAMHAENG);6106					else if(!bUsingDLC5Scenario && pLeader == "LEADER_WU_ZETIAN")6107						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_WU);6108					else if(!bUsingDLC5Scenario && pLeader == "LEADER_ODA_NOBUNAGA")6109						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_ODA);6110					else if(!bUsingDLC3Scenario && pLeader == "LEADER_HIAWATHA")6111						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_HIAWATHA);6112					else if(!bUsingDLC3Scenario && pLeader == "LEADER_MONTEZUMA")6113						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_MONTEZUMA);6114					else if(!bUsingXP1Scenario1 && !bUsingDLC6Scenario && pLeader == "LEADER_SULEIMAN")6115						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_SULEIMAN);6116					else if(pLeader == "LEADER_NEBUCHADNEZZAR")6117						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_NEBUCHADNEZZAR);6118					else if(!bUsingDLC5Scenario && pLeader == "LEADER_GENGHIS_KHAN")6119					{6120						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_GENGHIS);6121					}6122					else if(pLeader == "LEADER_ISABELLA")6123						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_ISABELLA);6124					else if(pLeader == "LEADER_PACHACUTI")6125						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_PACHACUTI);6126					else if(!bUsingDLC3Scenario && pLeader == "LEADER_KAMEHAMEHA")6127						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_KAMEHAMEHA);6128					else if(pLeader == "LEADER_HARALD")6129						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_BLUETOOTH);6130					else if(!bUsingDLC5Scenario && pLeader == "LEADER_SEJONG")6131						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_SEJONG);6132					else if(pLeader == "LEADER_MARIA")6133						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_01);6134					else if(!bUsingXP1Scenario2 && pLeader == "LEADER_THEODORA")6135						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_02);6136					else if(pLeader == "LEADER_DIDO")6137						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_03);6138					else if(pLeader == "LEADER_BOUDICCA")6139					{6140						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_04);61416142						if(bUsingXP1Scenario1 && winnerHandicapType >= 5)6143						{6144							gDLL->UnlockAchievement(ACHIEVEMENT_XP1_41);6145						}6146					}6147					else if(pLeader == "LEADER_SELASSIE")6148						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_05);6149					else if(pLeader == "LEADER_ATTILA")6150						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_06);6151					else if(pLeader == "LEADER_PACAL")6152						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_07);6153					else if(pLeader == "LEADER_WILLIAM")6154						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_08);6155					else if(!bUsingXP1Scenario3 && pLeader == "LEADER_GUSTAVUS_ADOLPHUS")6156						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_09);6157					else if(pLeader == "LEADER_ASHURBANIPAL" )6158						gDLL->UnlockAchievement(ACHIEVEMENT_XP2_01);6159					else if(pLeader == "LEADER_PEDRO")6160					{6161						gDLL->UnlockAchievement(ACHIEVEMENT_XP2_02);61626163						//Diplomatic Victory6164						if(eNewVictory == eVictoryDiplomatic)6165						{6166							gDLL->UnlockAchievement(ACHIEVEMENT_XP2_20);6167						}6168					}6169					else if(pLeader == "LEADER_GAJAH_MADA" )6170						gDLL->UnlockAchievement(ACHIEVEMENT_XP2_03);6171					else if(pLeader == "LEADER_AHMAD_ALMANSUR")6172						gDLL->UnlockAchievement(ACHIEVEMENT_XP2_04);6173					else if(pLeader == "LEADER_CASIMIR")6174					{6175						gDLL->UnlockAchievement(ACHIEVEMENT_XP2_05);61766177						//Space Victory6178						if(eNewVictory == eVictorySpaceRace)6179						{6180							gDLL->UnlockAchievement(ACHIEVEMENT_XP2_23);6181						}6182					}6183					else if(pLeader == "LEADER_MARIA_I")6184						gDLL->UnlockAchievement(ACHIEVEMENT_XP2_06);6185					else if(pLeader == "LEADER_POCATELLO")6186						gDLL->UnlockAchievement(ACHIEVEMENT_XP2_07);6187					else if(pLeader == "LEADER_ENRICO_DANDOLO")6188						gDLL->UnlockAchievement(ACHIEVEMENT_XP2_08);6189					else if(pLeader == "LEADER_SHAKA")6190						gDLL->UnlockAchievement(ACHIEVEMENT_XP2_09);6191					else6192						OutputDebugString("\nPlaying with a non-standard leader.\n");61936194					//One City6195					if(kWinningTeamLeader.getNumCities() == 1)6196					{6197						gDLL->UnlockAchievement(ACHIEVEMENT_ONECITY);6198					}61996200					//Uber Achievements for unlocking other achievements6201					if(gDLL->IsAchievementUnlocked(ACHIEVEMENT_MAPSIZE_DUEL) &&  gDLL->IsAchievementUnlocked(ACHIEVEMENT_MAPSIZE_TINY) &&  gDLL->IsAchievementUnlocked(ACHIEVEMENT_MAPSIZE_SMALL) &&  gDLL->IsAchievementUnlocked(ACHIEVEMENT_MAPSIZE_STANDARD) &&  gDLL->IsAchievementUnlocked(ACHIEVEMENT_MAPSIZE_LARGE) &&  gDLL->IsAchievementUnlocked(ACHIEVEMENT_MAPSIZE_HUGE) &&  gDLL->IsAchievementUnlocked(ACHIEVEMENT_MAPTYPE_ARCHIPELAGO) &&  gDLL->IsAchievementUnlocked(ACHIEVEMENT_MAPTYPE_CONTINENTS) &&  gDLL->IsAchievementUnlocked(ACHIEVEMENT_MAPTYPE_EARTH) &&  gDLL->IsAchievementUnlocked(ACHIEVEMENT_MAPTYPE_PANGAEA))6202					{6203						gDLL->UnlockAchievement(ACHIEVEMENT_MAPS_ALL);6204					}6205					if(gDLL->IsAchievementUnlocked(ACHIEVEMENT_VICTORY_CULTURE) && gDLL->IsAchievementUnlocked(ACHIEVEMENT_VICTORY_SPACE) && gDLL->IsAchievementUnlocked(ACHIEVEMENT_VICTORY_DIPLO) && gDLL->IsAchievementUnlocked(ACHIEVEMENT_VICTORY_DOMINATION))6206					{6207						gDLL->UnlockAchievement(ACHIEVEMENT_VICTORY_ALL);6208					}6209					if(gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_WASHINGTON) && gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_ELIZABETH) && gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_NAPOLEON)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_BISMARCK)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_CATHERINE)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_CAESAR)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_ALEXANDER)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_RAMESSES)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_ASKIA)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_HARUN)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_DARIUS)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_GANDHI)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_RAMKHAMHAENG)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_WU)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_ODA)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_HIAWATHA)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_MONTEZUMA)&& gDLL->IsAchievementUnlocked(ACHIEVEMENT_WIN_SULEIMAN))6210					{6211						gDLL->UnlockAchievement(ACHIEVEMENT_WIN_ALLBASELEADERS);6212					}62136214					//Victory/Ideology Achievements6215					const PolicyBranchTypes eBranch =kWinningTeamLeader.GetPlayerPolicies()->GetLateGamePolicyTree();6216					if(eBranch != NO_POLICY_BRANCH_TYPE)6217					{6218						if(eNewVictory == eVictorySpaceRace)6219						{6220							if(eBranch == ePolicyBranchFreedom)6221							{6222								gDLL->UnlockAchievement(ACHIEVEMENT_XP2_10);6223							}6224							else if(eBranch == ePolicyBranchOrder)6225							{6226								gDLL->UnlockAchievement(ACHIEVEMENT_XP2_11);6227							}6228						}6229						else if(eNewVictory == eVictoryDomination)6230						{6231							if(eBranch == ePolicyBranchOrder)6232							{6233								gDLL->UnlockAchievement(ACHIEVEMENT_XP2_17);6234							}6235							else if(eBranch == ePolicyBranchAutocracy)6236							{6237								gDLL->UnlockAchievement(ACHIEVEMENT_XP2_18);6238							}6239						}6240						else if(eNewVictory == eVictoryCultural)6241						{6242							if(eBranch == ePolicyBranchFreedom)6243							{6244								gDLL->UnlockAchievement(ACHIEVEMENT_XP2_12);6245							}6246							else if(eBranch == ePolicyBranchOrder)6247							{6248								gDLL->UnlockAchievement(ACHIEVEMENT_XP2_13);6249							}6250							else if(eBranch == ePolicyBranchAutocracy)6251							{6252								gDLL->UnlockAchievement(ACHIEVEMENT_XP2_14);6253							}6254						}6255						else if(eNewVictory == eVictoryDiplomatic)6256						{6257							if(eBranch == ePolicyBranchFreedom)6258							{6259								gDLL->UnlockAchievement(ACHIEVEMENT_XP2_15);6260							}6261							else if(eBranch == ePolicyBranchAutocracy)6262							{6263								gDLL->UnlockAchievement(ACHIEVEMENT_XP2_16);6264							}6265						}6266					}62676268					// World Congress related Achievements6269					if (GetGameLeagues()->GetNumActiveLeagues() > 0)6270					{6271						CvLeague* pLeague = GetGameLeagues()->GetActiveLeague();6272						if (pLeague)6273						{6274							// Diplomatic Victory without ever being host6275							if (eNewVictory == eVictoryDiplomatic)6276							{6277								if (!pLeague->HasMemberEverBeenHost(kWinningTeamLeader.GetID()))6278								{6279									gDLL->UnlockAchievement(ACHIEVEMENT_XP2_43);6280								}6281							}6282						}6283					}62846285					//Check for PSG6286					CvAchievementUnlocker::Check_PSG();62876288					//DLC1 Scenario Win Achievements6289					if(bUsingDLC1Scenario)6290					{6291						if(eNewVictory == 2)	//Only win by domination victory6292						{6293							CvString strHandicapType = this->getHandicapInfo().GetType();62946295							//All easier difficulty level achievements are unlocked when you beat it on a harder difficulty level.6296							bool bBeatOnHarderDifficulty = false;62976298							if(strHandicapType == "HANDICAP_DEITY")6299							{6300								gDLL->UnlockAchievement(ACHIEVEMENT_WIN_SCENARIO_01_DEITY);6301								bBeatOnHarderDifficulty = true;6302							}63036304							if(bBeatOnHarderDifficulty || strHandicapType == "HANDICAP_IMMORTAL")6305							{6306								gDLL->UnlockAchievement(ACHIEVEMENT_WIN_SCENARIO_01_IMMORTAL);6307								bBeatOnHarderDifficulty = true;6308							}63096310							if(bBeatOnHarderDifficulty || strHandicapType == "HANDICAP_EMPEROR")6311							{6312								gDLL->UnlockAchievement(ACHIEVEMENT_WIN_SCENARIO_01_EMPEROR);6313								bBeatOnHarderDifficulty = true;6314							}63156316							if(bBeatOnHarderDifficulty || strHandicapType == "HANDICAP_KING")6317							{6318								gDLL->UnlockAchievement(ACHIEVEMENT_WIN_SCENARIO_01_KING);6319								bBeatOnHarderDifficulty = true;6320							}63216322							//Despite it's name, this achievement is for any difficulty.6323							gDLL->UnlockAchievement(ACHIEVEMENT_WIN_SCENARIO_01_PRINCE_OR_BELOW);6324						}6325					}63266327					//DLC2 Scenario Win Achievements6328					if(bUsingDLC2Scenario)6329					{6330						CvString strCivType = kWinningTeamLeader.getCivilizationInfo().GetType();6331						if(strCivType == "CIVILIZATION_SPAIN")6332							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_02_WIN_SPAIN);6333						else if(strCivType == "CIVILIZATION_FRANCE")6334							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_02_WIN_FRANCE);6335						else if(strCivType == "CIVILIZATION_ENGLAND")6336							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_02_WIN_ENGLAND);6337						else if(strCivType == "CIVILIZATION_INCA")6338							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_02_WIN_INCA);6339						else if(strCivType == "CIVILIZATION_AZTEC")6340							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_02_WIN_AZTECS);6341						else if(strCivType == "CIVILIZATION_IROQUOIS")6342							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_02_WIN_IROQUOIS);6343					}63446345					//DLC3 Scenario Win Achievements6346					if(bUsingDLC3Scenario)6347					{6348						CvString strCivType = kWinningTeamLeader.getCivilizationInfo().GetType();6349						if(strCivType == "CIVILIZATION_POLYNESIA")6350							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_03_WIN_HIVA);6351						else if(strCivType == "CIVILIZATION_IROQUOIS")6352							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_03_WIN_TAHITI);6353						else if(strCivType == "CIVILIZATION_INDIA")6354							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_03_WIN_SAMOA);6355						else if(strCivType == "CIVILIZATION_AZTEC")6356							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_03_WIN_TONGA);6357					}63586359					//DLC4 Scenario Win Achievements6360					if(bUsingDLC4Scenario)6361					{6362						CvString strCivType = kWinningTeamLeader.getCivilizationInfo().GetType();6363						if(strCivType == "CIVILIZATION_DENMARK")6364							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_04_WIN_DENMARK);6365						else if(strCivType == "CIVILIZATION_ENGLAND")6366							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_04_WIN_ENGLAND);6367						else if(strCivType == "CIVILIZATION_GERMANY")6368							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_04_WIN_NORWAY);6369						else if(strCivType == "CIVILIZATION_FRANCE")6370							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_04_NORMANDY);63716372						switch(winnerHandicapType)6373						{6374						case 5:	//	Win scenario on Emperor (any civ)  YOU! The Conqueror6375							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_04_WIN_EMPEROR);6376							break;6377						case 6:	//	Win scenario on Immortal (any civ)  Surviving Domesday6378							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_04_WIN_IMMORTAL);6379							break;6380						case 7:	//	Win scenario on Deity (any civ)  Surviving Ragnarok6381							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_04_WIN_DEITY);6382							break;6383						}6384					}63856386					//DLC5 Scenario Win Achievements6387					if(bUsingDLC5Scenario)6388					{6389						// Civilization6390						CvString strCivType = kWinningTeamLeader.getCivilizationInfo().GetType();6391						if(strCivType == "CIVILIZATION_JAPAN")6392							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_05_WIN_JAPAN);6393						else if(strCivType == "CIVILIZATION_KOREA")6394							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_05_WIN_KOREA);6395						else if(strCivType == "CIVILIZATION_CHINA")6396							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_05_WIN_CHINA);6397						else if(strCivType == "CIVILIZATION_MONGOL")6398							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_05_WIN_MANCHU);63996400						// Difficulty6401						switch(winnerHandicapType)6402						{6403						case 5: // Emperor6404							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_05_WIN_EMPEROR);6405							break;6406						case 6: // Immortal6407							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_05_WIN_IMMORTAL);6408							break;6409						case 7: // Deity6410							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_05_WIN_DEITY);6411							break;6412						}64136414						// Win in less than 100 turns6415						if(getGameTurn() >= 0 && getGameTurn() < 100)6416						{6417							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_05_WIN_100TURNS);6418						}64196420					}64216422					//DLC6 Scenario Win Achievements6423					if(bUsingDLC6Scenario)6424					{6425						// Civilization6426						CvString strCivType = kWinningTeamLeader.getCivilizationInfo().GetType();6427						if(strCivType == "CIVILIZATION_OTTOMAN")6428							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_06_WIN_HITTITES);6429						else if(strCivType == "CIVILIZATION_GREECE")6430							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_06_WIN_GREECE);6431						else if(strCivType == "CIVILIZATION_ARABIA")6432							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_06_WIN_SUMER);6433						else if(strCivType == "CIVILIZATION_EGYPT")6434							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_06_WIN_EGYPT);6435						else if(strCivType == "CIVILIZATION_PERSIA")6436							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_06_WIN_PERSIA);64376438						// Difficulty6439						switch(winnerHandicapType)6440						{6441						case 3: // Prince6442							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_06_WIN_PRINCE);6443							break;6444						case 4: // King6445							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_06_WIN_KING);6446							break;6447						case 5:	// Emperor6448							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_06_WIN_EMPEROR);6449							break;6450						case 6:	// Immortal6451							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_06_WIN_IMMORTAL);6452							break;6453						case 7:	// Deity6454							gDLL->UnlockAchievement(ACHIEVEMENT_SCENARIO_06_WIN_DEITY);6455							break;6456						}64576458					}64596460					if(bUsingXP1Scenario1)6461					{6462						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_21);64636464						if(pLeader == "LEADER_HARUN_AL_RASHID" && winnerHandicapType >= 5)6465						{6466							gDLL->UnlockAchievement(ACHIEVEMENT_XP1_43);6467						}6468					}64696470					if(bUsingXP1Scenario2)6471					{6472						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_22);64736474						if(winnerHandicapType >= 7) //Deity or higher6475						{6476							if(pLeader == "LEADER_THEODORA")6477							{6478								typedef std::pair<int,int> Location;6479								typedef std::tr1::array<Location, 27> OriginalCitiesArray;6480								OriginalCitiesArray OriginalCities = {6481									Location(65,6), // Alexandria6482									Location(48,7), // Cyrene6483									Location(71,9),  // Caesarea6484									Location(79,13), // Palmyra6485									Location(74,14), // Damascus6486									Location(49,18), // Mistra6487									Location(68,20), // Seleucia6488									Location(73,20), // Antioch6489									Location(63,21), // Attalia6490									Location(76,21), // Edessa6491									Location(51,22), // Athens6492									Location(47,23), // Nicopolis6493									Location(57,23), // Ephesus6494									Location(67,24), // Iconium6495									Location(75,26), // Melitene6496									Location(63,27), // Dorylaeum6497									Location(50,28), // Thessalonica6498									Location(58,29), // Constantinople6499									Location(45,30), // Dyrrachium6500									Location(71,30), // Amasia6501									Location(54,31), // Adrianople6502									Location(64,32), // Amastris6503									Location(78,32), // Theodosiopolis6504									Location(49,34), // Naissus6505									Location(69,34), // Sinope6506									Location(75,34), // Trebizond6507									Location(45,35), // Sirmium	65086509								};					65106511								CvMap& kMap = GC.getMap();6512								const PlayerTypes eActivePlayer = GC.getGame().getActivePlayer();6513								bool bHasAllCities = true;65146515								//Test if we still own each city.6516								for(OriginalCitiesArray::iterator it = OriginalCities.begin(); it != OriginalCities.end(); ++it)6517								{6518									CvPlot* pkPlot = kMap.plot(it->first, it->second);6519									if(pkPlot != NULL)6520									{6521										CvCity* pkCity = pkPlot->getPlotCity();6522										if(pkCity != NULL)6523										{6524											if(pkCity->getOwner() == eActivePlayer)6525											{6526												continue;6527											}6528										}6529									}65306531									bHasAllCities = false;6532								}65336534								if(bHasAllCities)6535								{6536									gDLL->UnlockAchievement(ACHIEVEMENT_XP1_50);6537								}6538							}6539							else if(pLeader == "LEADER_AUGUSTUS")6540							{6541								typedef std::pair<int,int> Location;6542								typedef std::tr1::array<Location, 29> OriginalCitiesArray;6543								OriginalCitiesArray OriginalCities = {6544									Location(10,16), // Russadir6545									Location(15,18), // Iol Caesarea6546									Location(30,18), // Carthage6547									Location(37,19), // Syracuse6548									Location(4,23),  // Gades6549									Location(13,25), // Carthago Nova6550									Location(37,27), // Neapoli6551									Location(41,27), // Brundisium6552									Location(1,29),  // Olisipo6553									Location(6,29),  // Emerita Augusta6554									Location(15,30), // Tarraco6555									Location(33,31), // Rome6556									Location(14,34), // Caesaraugusta6557									Location(20,36), // Narbo6558									Location(24,36), // Massilia6559									Location(40,36), // Salonae6560									Location(28,37), // Genua6561									Location(34,37), // Ravenna6562									Location(3,39),  // Brigantium6563									Location(30,40), // Milan6564									Location(16,42), // Mediolanum6565									Location(22,42), // Lundunum6566									Location(32,45), // Casta Regina6567									Location(41,45), // Carnutum6568									Location(14,47), // Portus Namnetum6569									Location(21,48), // Lutetia6570									Location(26,49), // Trier6571									Location(17,52), // Coriallum6572									Location(22,53)  // Gesoriacum6573								};65746575								CvMap& kMap = GC.getMap();6576								const PlayerTypes eActivePlayer = GC.getGame().getActivePlayer();6577								bool bHasAllCities = true;65786579								//Test if we still own each city.6580								for(OriginalCitiesArray::iterator it = OriginalCities.begin(); it != OriginalCities.end(); ++it)6581								{6582									CvPlot* pkPlot = kMap.plot(it->first, it->second);6583									if(pkPlot != NULL)6584									{6585										CvCity* pkCity = pkPlot->getPlotCity();6586										if(pkCity != NULL)6587										{6588											if(pkCity->getOwner() == eActivePlayer)6589											{6590												continue;6591											}6592										}6593									}65946595									bHasAllCities = false;6596								}65976598								if(bHasAllCities)6599								{6600									gDLL->UnlockAchievement(ACHIEVEMENT_XP1_50);6601								}6602							}6603						}6604					}66056606					if(bUsingXP1Scenario3)6607					{6608						gDLL->UnlockAchievement(ACHIEVEMENT_XP1_23);6609					}661066116612					if(bUsingXP2Scenario1)6613					{6614						CvString strCivType = kWinningTeamLeader.getCivilizationInfo().GetType();6615						if(strCivType == "CIVILIZATION_AMERICA")6616						{6617							gDLL->UnlockAchievement(ACHIEVEMENT_XP2_56);6618						}6619						else6620						{6621							gDLL->UnlockAchievement(ACHIEVEMENT_XP2_57);6622						}66236624						// Difficulty6625						if (winnerHandicapType == eHandicapDeity)6626						{6627							gDLL->UnlockAchievement(ACHIEVEMENT_XP2_58);6628						}6629					}66306631					if(bUsingXP2Scenario2)6632					{6633						gDLL->UnlockAchievement(ACHIEVEMENT_XP2_49);66346635						// Difficulty6636						if (winnerHandicapType == eHandicapDeity)6637						{6638							CvString strCivType = kWinningTeamLeader.getCivilizationInfo().GetType();6639							if(strCivType == "CIVILIZATION_AMERICA")6640							{6641								gDLL->UnlockAchievement(ACHIEVEMENT_XP2_50);6642							}6643							else if(strCivType == "CIVILIZATION_OTTOMAN")6644							{6645								gDLL->UnlockAchievement(ACHIEVEMENT_XP2_51);6646							}6647						}6648					}6649				}6650				//Win any multiplayer game6651				if(GC.getGame().isGameMultiPlayer() && kWinningTeamLeader.isHuman() && (GET_PLAYER(GC.getGame().getActivePlayer()).GetID() == kWinningTeamLeader.GetID()))6652				{6653					gDLL->UnlockAchievement(ACHIEVEMENT_WIN_MULTIPLAYER);6654				}6655#endif66566657			}66586659			if((getAIAutoPlay() > 0) || gDLL->GetAutorun())6660			{6661				setGameState(GAMESTATE_EXTENDED);6662			}6663			else6664			{6665				setGameState(GAMESTATE_OVER);6666			}6667		}66686669		GC.GetEngineUserInterface()->setDirty(Center_DIRTY_BIT, true);66706671		GC.GetEngineUserInterface()->setDirty(Soundtrack_DIRTY_BIT, true);6672	}6673}

Calls

Called by