Bazaar developer reference

CvCityBuildings::IsBuildingSellable(const CvBuildingEntry &) const

Defined in
CvBuildingClasses.cpp, line 2425
Class
CvCityBuildings
Hook name
CivHooks::CvCityBuildings_IsBuildingSellable
Lua events
GameEvents.CityBuildingsIsBuildingSellable

Hooks

static bool BeforeCvCityBuildings_IsBuildingSellable(const CvCityBuildings* self, const CvBuildingEntry& kBuilding, bool& result);static void AfterCvCityBuildings_IsBuildingSellable(const CvCityBuildings* self, const CvBuildingEntry& kBuilding, bool& result);static bool ReplaceCvCityBuildings_IsBuildingSellable(bool (*original)(const CvCityBuildings*, const CvBuildingEntry&), const CvCityBuildings* self, const CvBuildingEntry& kBuilding);CivRegisterBefore<CivHooks::CvCityBuildings_IsBuildingSellable>(host, &BeforeCvCityBuildings_IsBuildingSellable);CivRegisterAfter<CivHooks::CvCityBuildings_IsBuildingSellable>(host, &AfterCvCityBuildings_IsBuildingSellable);CivRegisterReplace<CivHooks::CvCityBuildings_IsBuildingSellable>(host, &ReplaceCvCityBuildings_IsBuildingSellable);

Code

2424/// Is the player allowed to sell building eIndex in this city?2425bool CvCityBuildings::IsBuildingSellable(const CvBuildingEntry& kBuilding) const2426{2427	// Can't sell more than one building per turn2428	if(IsSoldBuildingThisTurn())2429		return false;24302431	// Can't sell a building if it doesn't cost us anything (no exploits)2432	if(kBuilding.GetGoldMaintenance() <= 0)2433		return false;24342435	// Is this a free building?2436	if(GetNumFreeBuilding((BuildingTypes)kBuilding.GetID()) > 0)2437		return false;24382439	// Science building in capital that has given us a tech boost?2440	if(m_pCity->isCapital() && kBuilding.IsScienceBuilding())2441	{2442		return !(GET_PLAYER(m_pCity->getOwner()).GetPlayerTraits()->IsTechBoostFromCapitalScienceBuildings());2443	}24442445	// Great Work present in this one?2446	const BuildingClassTypes buildingClassType = (BuildingClassTypes) kBuilding.GetBuildingClassType();2447	if (IsHoldingGreatWork(buildingClassType))2448	{2449		return false;2450	}24512452	ICvEngineScriptSystem1* pkScriptSystem = gDLL->GetScriptSystem();2453	if(pkScriptSystem)2454	{2455		CvLuaArgsHandle args;2456		args->Push(m_pCity->getOwner());2457		args->Push(kBuilding.GetID());24582459		// Attempt to execute the game events.2460		// Will return false if there are no registered listeners.2461		bool bResult = false;2462		if(LuaSupport::CallTestAll(pkScriptSystem, "CityBuildingsIsBuildingSellable", args.get(), bResult))2463		{2464			// Check the result.2465			if(bResult == false)2466			{2467				return false;2468			}2469		}2470	}24712472	return true;2473}

Calls

Called by