CvUnit::discover()
- Defined in
- CvUnit.cpp, line 9052
- Class
- CvUnit
- Hook name
CivHooks::CvUnit_discover
Hooks
static bool BeforeCvUnit_discover(CvUnit* self, bool& result);static void AfterCvUnit_discover(CvUnit* self, bool& result);static bool ReplaceCvUnit_discover(bool (*original)(CvUnit*), CvUnit* self);CivRegisterBefore<CivHooks::CvUnit_discover>(host, &BeforeCvUnit_discover);CivRegisterAfter<CivHooks::CvUnit_discover>(host, &AfterCvUnit_discover);CivRegisterReplace<CivHooks::CvUnit_discover>(host, &ReplaceCvUnit_discover);
Code
9052bool CvUnit::discover()9053{9054 VALIDATE_OBJECT90559056 CvPlot* pPlot = plot();90579058 if(!canDiscover(pPlot))9059 {9060 return false;9061 }90629063 CvPlayer* pPlayer = &GET_PLAYER(getOwner());9064 CvAssertMsg(pPlayer, "Owner of unit not expected to be NULL. Please send Anton your save file and version.");9065 if (!pPlayer) return false;9066 CvTeam* pTeam = &GET_TEAM(pPlayer->getTeam());9067 CvAssertMsg(pTeam, "Owner team of unit not expected to be NULL. Please send Anton your save file and version.");9068 if (!pTeam) return false;90699070 // Beakers boost based on previous turns9071 int iBeakersBonus = getDiscoverAmount();9072 TechTypes eCurrentTech = pPlayer->GetPlayerTechs()->GetCurrentResearch();9073 if(eCurrentTech == NO_TECH)9074 {9075 pPlayer->changeOverflowResearch(iBeakersBonus);9076 }9077 else9078 {9079 pTeam->GetTeamTechs()->ChangeResearchProgress(eCurrentTech, iBeakersBonus, getOwner());9080 }90819082 // Free techs9083 int iNumFreeTechs = m_pUnitInfo->GetNumFreeTechs();9084 if(!isHuman())9085 {9086 for(int iI = 0; iI < iNumFreeTechs; iI++)9087 {9088 pPlayer->AI_chooseFreeTech();9089 }9090 }9091 else9092 {9093 CvString strBuffer = GetLocalizedText("TXT_KEY_MISC_GREAT_PERSON_CHOOSE_TECH");9094 pPlayer->chooseTech(iNumFreeTechs, strBuffer.GetCString());9095 }90969097 if(pPlot->isActiveVisible(false))9098 {9099 auto_ptr<ICvUnit1> pDllUnit(new CvDllUnit(this));9100 gDLL->GameplayUnitActivate(pDllUnit.get());9101 }91029103 if(IsGreatPerson())9104 {9105#if defined(MOD_EVENTS_GREAT_PEOPLE)9106 pPlayer->DoGreatPersonExpended(getUnitType(), this);9107#else9108 pPlayer->DoGreatPersonExpended(getUnitType());9109#endif9110 }91119112 kill(true);91139114 return true;9115}
Calls
- CvDllUnit::CvDllUnit(CvUnit *)
- CvGlobals::getDLLIFace()
- CvPlayer::AI_chooseFreeTech()
- CvPlayer::changeOverflowResearch(int)
- CvPlayer::chooseTech(int, const char *, TechTypes)
- CvPlayer::DoGreatPersonExpended(UnitTypes, CvUnit *)
- CvPlayer::GetPlayerTechs() const
- CvPlayer::getTeam() const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerTechs::GetCurrentResearch() const
- CvPlot::isActiveVisible(bool) const
CvString::GetCString- CvTeam::getTeam(TeamTypes)
- CvTeam::GetTeamTechs() const
- CvTeamTechs::ChangeResearchProgress(TechTypes, int, PlayerTypes)
- CvUnit::canDiscover(const CvPlot *, bool) const
- CvUnit::getDiscoverAmount()
- CvUnit::getOwner() const
- CvUnit::getUnitType() const
- CvUnit::IsGreatPerson() const
- CvUnit::isHuman() const
- CvUnit::kill(bool, PlayerTypes)
- CvUnit::plot() const
- CvUnitEntry::GetNumFreeTechs() const
- GetLocalizedText(const char *)
ICvEngineUtility1::GameplayUnitActivatestd::auto_ptr::auto_ptrstd::auto_ptr::get