CvCityCitizens::DoSpawnGreatPerson(UnitTypes, bool, bool, bool)
- Defined in
- CvCityCitizens.cpp, line 2761
- Class
- CvCityCitizens
- Hook name
CivHooks::CvCityCitizens_DoSpawnGreatPerson
Hand-placed hooks inside
A replacement for this function that does not call original stops these hooks from running.
Hooks
static bool BeforeCvCityCitizens_DoSpawnGreatPerson(CvCityCitizens* self, UnitTypes eUnit, bool bIncrementCount, bool bCountAsProphet, bool bIsFree);static void AfterCvCityCitizens_DoSpawnGreatPerson(CvCityCitizens* self, UnitTypes eUnit, bool bIncrementCount, bool bCountAsProphet, bool bIsFree);static void ReplaceCvCityCitizens_DoSpawnGreatPerson(void (*original)(CvCityCitizens*, UnitTypes, bool, bool, bool), CvCityCitizens* self, UnitTypes eUnit, bool bIncrementCount, bool bCountAsProphet, bool bIsFree);CivRegisterBefore<CivHooks::CvCityCitizens_DoSpawnGreatPerson>(host, &BeforeCvCityCitizens_DoSpawnGreatPerson);CivRegisterAfter<CivHooks::CvCityCitizens_DoSpawnGreatPerson>(host, &AfterCvCityCitizens_DoSpawnGreatPerson);CivRegisterReplace<CivHooks::CvCityCitizens_DoSpawnGreatPerson>(host, &ReplaceCvCityCitizens_DoSpawnGreatPerson);
Code
2759/// Create a GP!2760#if defined(MOD_GLOBAL_TRULY_FREE_GP)2761void CvCityCitizens::DoSpawnGreatPerson(UnitTypes eUnit, bool bIncrementCount, bool bCountAsProphet, bool bIsFree)2762#else2763void CvCityCitizens::DoSpawnGreatPerson(UnitTypes eUnit, bool bIncrementCount, bool bCountAsProphet)2764#endif2765{2766 CvAssert(eUnit != NO_UNIT);27672768 if (eUnit == NO_UNIT)2769 return; // Better than crashing.27702771#if defined(CIV_HOST_API)2772 CivHandPopupRaised(GetCity()->getOwner(), BUTTONPOPUP_GREAT_PERSON_REWARD, eUnit, GetCity()->GetID(), -1, false, false, "");hand-placed hook: PopupRaised2773#endif2774 // If it's the active player then show the popup2775 if(GetCity()->getOwner() == GC.getGame().getActivePlayer())2776 {2777 // Don't show in MP2778#if defined(MOD_API_EXTENSIONS)2779 if(!GC.getGame().isReallyNetworkMultiPlayer())2780#else2781 if(!GC.getGame().isNetworkMultiPlayer()) // KWG: Candidate for !GC.getGame().IsOption(GAMEOPTION_SIMULTANEOUS_TURNS)2782#endif2783 {2784 CvPopupInfo kPopupInfo(BUTTONPOPUP_GREAT_PERSON_REWARD, eUnit, GetCity()->GetID());2785 GC.GetEngineUserInterface()->AddPopup(kPopupInfo);2786 }2787 }27882789 CvPlayer& kPlayer = GET_PLAYER(GetCity()->getOwner());2790 CvUnit* newUnit = kPlayer.initUnit(eUnit, GetCity()->getX(), GetCity()->getY());27912792 // Bump up the count2793 if(bIncrementCount && !bCountAsProphet)2794 {2795 if(newUnit->IsGreatGeneral())2796 {2797#if defined(MOD_GLOBAL_TRULY_FREE_GP)2798 kPlayer.incrementGreatGeneralsCreated(bIsFree);2799#else2800 kPlayer.incrementGreatGeneralsCreated();2801#endif2802 }2803 else if(newUnit->IsGreatAdmiral())2804 {2805#if defined(MOD_GLOBAL_TRULY_FREE_GP)2806 kPlayer.incrementGreatAdmiralsCreated(bIsFree);2807#else2808 kPlayer.incrementGreatAdmiralsCreated();2809#endif2810 CvPlot *pSpawnPlot = kPlayer.GetGreatAdmiralSpawnPlot(newUnit);2811 if (newUnit->plot() != pSpawnPlot)2812 {2813 newUnit->setXY(pSpawnPlot->getX(), pSpawnPlot->getY());2814 }2815 }2816 else if (newUnit->getUnitInfo().GetUnitClassType() == GC.getInfoTypeForString("UNITCLASS_WRITER"))2817 {2818#if defined(MOD_GLOBAL_TRULY_FREE_GP)2819 kPlayer.incrementGreatWritersCreated(bIsFree);2820#else2821 kPlayer.incrementGreatWritersCreated();2822#endif2823 } 2824 else if (newUnit->getUnitInfo().GetUnitClassType() == GC.getInfoTypeForString("UNITCLASS_ARTIST"))2825 {2826#if defined(MOD_GLOBAL_TRULY_FREE_GP)2827 kPlayer.incrementGreatArtistsCreated(bIsFree);2828#else2829 kPlayer.incrementGreatArtistsCreated();2830#endif2831 } 2832 else if (newUnit->getUnitInfo().GetUnitClassType() == GC.getInfoTypeForString("UNITCLASS_MUSICIAN"))2833 {2834#if defined(MOD_GLOBAL_TRULY_FREE_GP)2835 kPlayer.incrementGreatMusiciansCreated(bIsFree);2836#else2837 kPlayer.incrementGreatMusiciansCreated();2838#endif2839 } 2840 else2841 {2842#if defined(MOD_GLOBAL_SEPARATE_GP_COUNTERS)2843 if (MOD_GLOBAL_SEPARATE_GP_COUNTERS) {2844 if (newUnit->getUnitInfo().GetUnitClassType() == GC.getInfoTypeForString("UNITCLASS_MERCHANT")) {2845#if defined(MOD_GLOBAL_TRULY_FREE_GP)2846 kPlayer.incrementGreatMerchantsCreated(bIsFree);2847#else2848 kPlayer.incrementGreatMerchantsCreated();2849#endif2850 } else if (newUnit->getUnitInfo().GetUnitClassType() == GC.getInfoTypeForString("UNITCLASS_SCIENTIST")) {2851#if defined(MOD_GLOBAL_TRULY_FREE_GP)2852 kPlayer.incrementGreatScientistsCreated(bIsFree);2853#else2854 kPlayer.incrementGreatScientistsCreated();2855#endif2856 } else {2857#if defined(MOD_GLOBAL_TRULY_FREE_GP)2858 kPlayer.incrementGreatEngineersCreated(bIsFree);2859#else2860 kPlayer.incrementGreatEngineersCreated();2861#endif2862 }2863 } else2864#endif2865#if defined(MOD_GLOBAL_TRULY_FREE_GP)2866 kPlayer.incrementGreatPeopleCreated(bIsFree);2867#else2868 kPlayer.incrementGreatPeopleCreated();2869#endif2870 }2871 }2872 if(bCountAsProphet || newUnit->getUnitInfo().IsFoundReligion())2873 {2874#if defined(MOD_BUGFIX_MINOR)2875 if (bIncrementCount)2876#endif2877#if defined(MOD_GLOBAL_TRULY_FREE_GP)2878 kPlayer.GetReligions()->ChangeNumProphetsSpawned(1, bIsFree);2879#else2880 kPlayer.GetReligions()->ChangeNumProphetsSpawned(1);2881#endif2882 }28832884 // Setup prophet properly2885 if(newUnit->getUnitInfo().IsFoundReligion())2886 {2887 ReligionTypes eReligion = kPlayer.GetReligions()->GetReligionCreatedByPlayer();2888 int iReligionSpreads = newUnit->getUnitInfo().GetReligionSpreads();2889 int iReligiousStrength = newUnit->getUnitInfo().GetReligiousStrength();2890 if(iReligionSpreads > 0 && eReligion > RELIGION_PANTHEON)2891 {2892 newUnit->GetReligionData()->SetSpreadsLeft(iReligionSpreads);2893 newUnit->GetReligionData()->SetReligiousStrength(iReligiousStrength);2894 newUnit->GetReligionData()->SetReligion(eReligion);2895 }2896 }28972898 if (newUnit->getUnitInfo().GetOneShotTourism() > 0)2899 {2900 newUnit->SetTourismBlastStrength(kPlayer.GetCulture()->GetTourismBlastStrength(newUnit->getUnitInfo().GetOneShotTourism()));2901 }29022903 // Notification2904 if(GET_PLAYER(GetOwner()).GetNotifications())2905 {2906 Localization::String strText = Localization::Lookup("TXT_KEY_NOTIFICATION_GREAT_PERSON_ACTIVE_PLAYER");2907 Localization::String strSummary = Localization::Lookup("TXT_KEY_NOTIFICATION_SUMMARY_GREAT_PERSON");2908 GET_PLAYER(GetOwner()).GetNotifications()->Add(NOTIFICATION_GREAT_PERSON_ACTIVE_PLAYER, strText.toUTF8(), strSummary.toUTF8(), GetCity()->getX(), GetCity()->getY(), eUnit);2909 }2910}
Calls
CivHandPopupRaised- CustomMods::isGLOBAL_SEPARATE_GP_COUNTERS()
- CvCity::GetID() const
- CvCity::getOwner() const
- CvCity::getX() const
- CvCity::getY() const
- CvCityCitizens::GetCity()
- CvCityCitizens::GetOwner() const
- CvGame::getActivePlayer() const
- CvGame::isReallyNetworkMultiPlayer() const
- CvGlobals::GetEngineUserInterface()
- CvGlobals::getGame()
- CvGlobals::getInfoTypeForString(const char *, bool) const
- CvNotifications::Add(NotificationTypes, const char *, const char *, int, int, int, int)
- CvPlayer::GetCulture() const
- CvPlayer::GetGreatAdmiralSpawnPlot(CvUnit *)
- CvPlayer::GetNotifications() const
- CvPlayer::GetReligions() const
- CvPlayer::incrementGreatAdmiralsCreated(bool)
- CvPlayer::incrementGreatArtistsCreated(bool)
- CvPlayer::incrementGreatEngineersCreated(bool)
- CvPlayer::incrementGreatGeneralsCreated(bool)
- CvPlayer::incrementGreatMerchantsCreated(bool)
- CvPlayer::incrementGreatMusiciansCreated(bool)
- CvPlayer::incrementGreatPeopleCreated(bool)
- CvPlayer::incrementGreatScientistsCreated(bool)
- CvPlayer::incrementGreatWritersCreated(bool)
- CvPlayer::initUnit(UnitTypes, int, int, UnitAITypes, DirectionTypes, bool, bool, int, int)
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerCulture::GetTourismBlastStrength(int)
- CvPlayerReligions::ChangeNumProphetsSpawned(int, bool)
- CvPlayerReligions::GetReligionCreatedByPlayer(bool) const
- CvPlot::getX() const
- CvPlot::getY() const
CvPopupInfo::CvPopupInfo- CvUnit::GetReligionData() const
- CvUnit::getUnitInfo() const
- CvUnit::IsGreatAdmiral() const
- CvUnit::IsGreatGeneral() const
- CvUnit::plot() const
- CvUnit::SetTourismBlastStrength(int)
- CvUnit::setXY(int, int, bool, bool, bool, bool, bool)
- CvUnitEntry::GetOneShotTourism() const
- CvUnitEntry::GetReligionSpreads() const
- CvUnitEntry::GetReligiousStrength() const
- CvUnitEntry::GetUnitClassType() const
- CvUnitEntry::IsFoundReligion() const
- CvUnitReligion::SetReligion(ReligionTypes)
- CvUnitReligion::SetReligiousStrength(int)
- CvUnitReligion::SetSpreadsLeft(int)
ICvUserInterface1::AddPopupLocalization::LookupLocalization::String::toUTF8
Called by
- CvCity::processBuilding(BuildingTypes, int, bool, bool, bool)
- CvCityCitizens::DoSpecialists()
- CvDllNetMessageHandler::ResponseFaithGreatPersonChoice(PlayerTypes, UnitTypes)
- CvDllNetMessageHandler::ResponseGreatPersonChoice(PlayerTypes, UnitTypes)
- CvDllNetMessageHandler::ResponseMayaBonusChoice(PlayerTypes, UnitTypes)
- CvPlayerAI::AI_chooseFreeGreatPerson()
- CvGameReligions::CheckSpawnGreatProphet(CvPlayer &)
- CvTeam::setHasTech(TechTypes, bool, PlayerTypes, bool, bool)
- CvPlayerTraits::ChooseMayaBoost()