CvUnit::canGift(bool, bool) const
- Defined in
- CvUnit.cpp, line 4040
- Class
- CvUnit
- Hook name
CivHooks::CvUnit_canGift
Hooks
static bool BeforeCvUnit_canGift(const CvUnit* self, bool bTestVisible, bool bTestTransport, bool& result);static void AfterCvUnit_canGift(const CvUnit* self, bool bTestVisible, bool bTestTransport, bool& result);static bool ReplaceCvUnit_canGift(bool (*original)(const CvUnit*, bool, bool), const CvUnit* self, bool bTestVisible, bool bTestTransport);CivRegisterBefore<CivHooks::CvUnit_canGift>(host, &BeforeCvUnit_canGift);CivRegisterAfter<CivHooks::CvUnit_canGift>(host, &AfterCvUnit_canGift);CivRegisterReplace<CivHooks::CvUnit_canGift>(host, &ReplaceCvUnit_canGift);
Code
4040bool CvUnit::canGift(bool bTestVisible, bool bTestTransport) const4041{4042 VALIDATE_OBJECT4043 const CvPlot* pPlot = plot();4044 const CvUnit* pTransport = getTransportUnit();40454046 if(isDelayedDeath())4047 return false;40484049 if(!(pPlot->isOwned()))4050 {4051 return false;4052 }40534054 if(pPlot->getOwner() == getOwner())4055 {4056 return false;4057 }40584059 if(pPlot->isVisibleEnemyUnit(this))4060 {4061 return false;4062 }40634064 if(pPlot->isVisibleEnemyUnit(pPlot->getOwner()))4065 {4066 return false;4067 }40684069 if(!pPlot->isValidDomainForLocation(*this) && NULL == pTransport)4070 {4071 return false;4072 }40734074 // Minors4075 if(GET_PLAYER(pPlot->getOwner()).isMinorCiv())4076 {4077 // No settlers4078 if(isFound() || IsFoundAbroad())4079 return false;40804081 // No scouts4082 UnitClassTypes eScoutClass = (UnitClassTypes) GC.getInfoTypeForString("UNITCLASS_SCOUT", true);4083 if (eScoutClass != NO_UNITCLASS && eScoutClass == getUnitClassType())4084 return false;40854086 // No non-combat units4087 if(!IsCombatUnit())4088 {4089#if defined(MOD_BUGFIX_USE_GETTERS)4090 CvPlayer& kPlayer = GET_MY_PLAYER();4091#else4092 CvPlayer& kPlayer = GET_PLAYER(m_eOwner);4093#endif40944095 // Unless okay by trait4096 if(kPlayer.GetPlayerTraits()->GetGreatPersonGiftInfluence() == 0 || !IsGreatPerson())4097 {4098 return false;4099 }4100 }4101 }41024103 // No for religious units4104 if (getUnitInfo().IsSpreadReligion() || getUnitInfo().IsRemoveHeresy())4105 {4106 return false;4107 }41084109 if(bTestTransport)4110 {4111 if(pTransport && pTransport->getTeam() != pPlot->getTeam())4112 {4113 return false;4114 }4115 }41164117 if(!bTestVisible)4118 {4119 if(GET_TEAM(pPlot->getTeam()).isUnitClassMaxedOut(getUnitClassType(), GET_TEAM(pPlot->getTeam()).getUnitClassMaking(getUnitClassType())))4120 {4121 return false;4122 }41234124 if(GET_PLAYER(pPlot->getOwner()).isUnitClassMaxedOut(getUnitClassType(), GET_PLAYER(pPlot->getOwner()).getUnitClassMaking(getUnitClassType())))4125 {4126 return false;4127 }4128 }41294130 return !atWar(pPlot->getTeam(), getTeam());4131}
Calls
- atWar(TeamTypes, TeamTypes)
- CvGlobals::getInfoTypeForString(const char *, bool) const
- CvPlayer::GetPlayerTraits() const
- CvPlayer::getUnitClassMaking(UnitClassTypes) const
- CvPlayer::isMinorCiv() const
- CvPlayer::isUnitClassMaxedOut(UnitClassTypes, int) const
- CvPlayerAI::getPlayer(PlayerTypes)
- CvPlayerTraits::GetGreatPersonGiftInfluence() const
- CvPlot::getOwner() const
- CvPlot::getTeam() const
- CvPlot::isOwned() const
- CvPlot::isValidDomainForLocation(const CvUnit &) const
- CvPlot::isVisibleEnemyUnit(const CvUnit *) const
- CvPlot::isVisibleEnemyUnit(PlayerTypes) const
- CvTeam::getTeam(TeamTypes)
- CvTeam::getUnitClassMaking(UnitClassTypes) const
- CvTeam::isUnitClassMaxedOut(UnitClassTypes, int) const
- CvUnit::getOwner() const
- CvUnit::getTeam() const
- CvUnit::getTransportUnit() const
- CvUnit::getUnitClassType() const
- CvUnit::getUnitInfo() const
- CvUnit::IsCombatUnit() const
- CvUnit::isDelayedDeath() const
- CvUnit::isFound() const
- CvUnit::IsFoundAbroad() const
- CvUnit::IsGreatPerson() const
- CvUnit::plot() const
- CvUnitEntry::IsRemoveHeresy() const
- CvUnitEntry::IsSpreadReligion() const