Bazaar developer reference

CvMinorCivAI::DoLiberationByMajor(PlayerTypes, TeamTypes)

Defined in
CvMinorCivAI.cpp, line 7301
Class
CvMinorCivAI
Hook name
CivHooks::CvMinorCivAI_DoLiberationByMajor

Hooks

static bool BeforeCvMinorCivAI_DoLiberationByMajor(CvMinorCivAI* self, PlayerTypes eLiberator, TeamTypes eConquerorTeam);static void AfterCvMinorCivAI_DoLiberationByMajor(CvMinorCivAI* self, PlayerTypes eLiberator, TeamTypes eConquerorTeam);static void ReplaceCvMinorCivAI_DoLiberationByMajor(void (*original)(CvMinorCivAI*, PlayerTypes, TeamTypes), CvMinorCivAI* self, PlayerTypes eLiberator, TeamTypes eConquerorTeam);CivRegisterBefore<CivHooks::CvMinorCivAI_DoLiberationByMajor>(host, &BeforeCvMinorCivAI_DoLiberationByMajor);CivRegisterAfter<CivHooks::CvMinorCivAI_DoLiberationByMajor>(host, &AfterCvMinorCivAI_DoLiberationByMajor);CivRegisterReplace<CivHooks::CvMinorCivAI_DoLiberationByMajor>(host, &ReplaceCvMinorCivAI_DoLiberationByMajor);

Code

7300/// Major liberates a Minor by recapturing its City!7301void CvMinorCivAI::DoLiberationByMajor(PlayerTypes eLiberator, TeamTypes eConquerorTeam)7302{7303#if defined(MOD_BUGFIX_MINOR)7304	// This is a bug fix as the Lua API can be used to by-pass the bought-out tests and liberate the minor regardless73057306	// Clear the "bought out by" indicator7307	SetMajorBoughtOutBy(NO_PLAYER);7308#endif73097310	Localization::String strMessage = Localization::Lookup("TXT_KEY_NOTIFICATION_MINOR_LIBERATION");7311	strMessage << GetPlayer()->getNameKey() << GET_PLAYER(eLiberator).getNameKey();7312	Localization::String strSummary = Localization::Lookup("TXT_KEY_NOTIFICATION_SUMMARY_MINOR_LIBERATION");7313	strSummary << GetPlayer()->getNameKey();73147315	int iHighestOtherMajorInfluence = GC.getMINOR_FRIENDSHIP_AT_WAR();73167317	PlayerTypes ePlayer;7318	for(int iI = 0; iI < MAX_MAJOR_CIVS; iI++)7319	{7320		ePlayer = (PlayerTypes) iI;73217322		if(ePlayer != eLiberator)7323		{7324			int iInfluence = GetBaseFriendshipWithMajor(ePlayer);7325			if(iInfluence > iHighestOtherMajorInfluence)7326				iHighestOtherMajorInfluence = iInfluence;73277328			if(GET_PLAYER(ePlayer).isAlive())7329			{7330				if(GET_TEAM(GET_PLAYER(ePlayer).getTeam()).isHasMet(GetPlayer()->getTeam()))7331				{7332					// Influence for other players - Were you the one that conquered us before?7333					if(GET_PLAYER(ePlayer).getTeam() == eConquerorTeam)7334					{7335						SetFriendshipWithMajor(ePlayer, GC.getMINOR_FRIENDSHIP_AT_WAR());7336					}73377338					// Notification for other players7339					CvNotifications* pNotifications = GET_PLAYER(ePlayer).GetNotifications();7340					if(pNotifications)7341					{7342						pNotifications->Add(NOTIFICATION_DIPLOMACY_DECLARATION, strMessage.toUTF8(), strSummary.toUTF8(), -1, -1, -1);7343					}7344				}7345			}7346		}7347	}73487349	// Influence for liberator - raise to ally status7350	int iNewInfluence = max(iHighestOtherMajorInfluence + GC.getMINOR_LIBERATION_FRIENDSHIP(), GetBaseFriendshipWithMajor(eLiberator) + GC.getMINOR_LIBERATION_FRIENDSHIP());7351	iNewInfluence = max(GetAlliesThreshold(), iNewInfluence); // Must be at least enough to make us allies73527353	SetFriendshipWithMajor(eLiberator, iNewInfluence);73547355	// Notification for liberator7356	strMessage = Localization::Lookup("TXT_KEY_NOTIFICATION_MINOR_LIBERATION_YOU");7357	strMessage << GetPlayer()->getNameKey();7358	strSummary = Localization::Lookup("TXT_KEY_NOTIFICATION_SUMMARY_MINOR_LIBERATION");7359	strSummary << GetPlayer()->getNameKey();7360	AddNotification(strMessage.toUTF8(), strSummary.toUTF8(), eLiberator);7361}

Calls

Called by