CyCity.h 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680
  1. #pragma once
  2. #ifndef CyCity_h
  3. #define CyCity_h
  4. //
  5. // Python wrapper class for CvCity
  6. //
  7. //#include "CvEnums.h"
  8. #include <string>
  9. # include <boost/python/tuple.hpp>
  10. namespace python = boost::python;
  11. struct OrderData;
  12. class CvCity;
  13. class CyPlot;
  14. class CyArea;
  15. class CyUnit;
  16. class CyCity
  17. {
  18. public:
  19. CyCity();
  20. DllExport CyCity(CvCity* pCity); // Call from C++
  21. CvCity* getCity() { return m_pCity; } // Call from C++
  22. bool isNone() { return (m_pCity==NULL); }
  23. void kill();
  24. /************************************************************************************************/
  25. /* REVOLUTION_MOD 03/29/09 jdog5000 */
  26. /* */
  27. /* */
  28. /************************************************************************************************/
  29. int getRevolutionIndex();
  30. void setRevolutionIndex( int iNewValue );
  31. void changeRevolutionIndex( int iChange );
  32. int getLocalRevIndex();
  33. void setLocalRevIndex( int iNewValue );
  34. void changeLocalRevIndex( int iChange );
  35. int getRevIndexAverage() const;
  36. void setRevIndexAverage( int iNewValue );
  37. void updateRevIndexAverage( );
  38. int getRevolutionCounter();
  39. void setRevolutionCounter( int iNewValue );
  40. void changeRevolutionCounter( int iChange );
  41. int getReinforcementCounter();
  42. void setReinforcementCounter( int iNewValue );
  43. void changeReinforcementCounter( int iChange );
  44. int getRevIndexHappinessVal();
  45. int getRevIndexDistanceVal();
  46. int getRevIndexColonyVal();
  47. int getRevIndexReligionVal();
  48. int getRevIndexNationalityVal();
  49. int getRevIndexHealthVal();
  50. int getRevIndexGarrisonVal();
  51. int getRevIndexDisorderVal();
  52. bool isRecentlyAcquired();
  53. /************************************************************************************************/
  54. /* REVOLUTION_MOD END */
  55. /************************************************************************************************/
  56. // lfgr 09/2023 Extra revolution tags
  57. int getTotalRevGarrisonValue() const;
  58. void createGreatPeople(int /*UnitTypes*/ eGreatPersonUnit, bool bIncrementThreshold, bool bIncrementExperience);
  59. void doTask(int /*TaskTypes*/ eTask, int iData1, int iData2, bool bOption);
  60. void chooseProduction(int /*UnitTypes*/ eTrainUnit, int /*BuildingTypes*/ eConstructBuilding, int /*ProjectTypes*/ eCreateProject, bool bFinish, bool bFront);
  61. int getCityPlotIndex(CyPlot* pPlot);
  62. CyPlot* getCityIndexPlot(int iIndex);
  63. bool canWork(CyPlot* pPlot);
  64. void clearWorkingOverride(int iIndex);
  65. int countNumImprovedPlots();
  66. int countNumWaterPlots();
  67. int countNumRiverPlots();
  68. int findPopulationRank();
  69. int findBaseYieldRateRank(int /*YieldTypes*/ eYield);
  70. int findYieldRateRank(int /*YieldTypes*/ eYield);
  71. int findCommerceRateRank(int /*CommerceTypes*/ eCommerce);
  72. int /*UnitTypes*/ allUpgradesAvailable(int /*UnitTypes*/ eUnit, int iUpgradeCount);
  73. bool isWorldWondersMaxed();
  74. bool isTeamWondersMaxed();
  75. bool isNationalWondersMaxed();
  76. bool isBuildingsMaxed();
  77. bool canTrain( int iUnit, bool bContinue, bool bTestVisible);
  78. bool canConstruct( int iBuilding, bool bContinue, bool bTestVisible, bool bIgnoreCost);
  79. bool canCreate( int iProject, bool bContinue, bool bTestVisible );
  80. bool canMaintain( int iProcess, bool bContinue );
  81. bool canJoin();
  82. int getFoodTurnsLeft();
  83. bool isProduction();
  84. bool isProductionLimited();
  85. bool isProductionUnit();
  86. bool isProductionBuilding();
  87. bool isProductionProject();
  88. bool isProductionProcess();
  89. bool canContinueProduction(OrderData order);
  90. int getProductionExperience(int /*UnitTypes*/ eUnit);
  91. void addProductionExperience(CyUnit* pUnit, bool bConscript);
  92. int /*UnitTypes*/ getProductionUnit();
  93. int /*UnitAITypes*/ getProductionUnitAI();
  94. int /*BuildingTypes*/ getProductionBuilding();
  95. int /*ProjectTypes*/ getProductionProject();
  96. int /*ProcessTypes*/ getProductionProcess();
  97. std::wstring getProductionName();
  98. std::wstring getProductionNameKey();
  99. int getGeneralProductionTurnsLeft();
  100. bool isFoodProduction();
  101. int getFirstUnitOrder(int /*UnitTypes*/ eUnit);
  102. int getFirstProjectOrder(int /*ProjectTypes*/ eProject);
  103. int getNumTrainUnitAI(int /*UnitAITypes*/ eUnitAI);
  104. int getFirstBuildingOrder(int /*BuildingTypes*/ eBuilding);
  105. bool isUnitFoodProduction(int /*UnitTypes*/ iUnit);
  106. int getProduction();
  107. int getProductionNeeded();
  108. int getProductionTurnsLeft();
  109. int getUnitProductionTurnsLeft(int /*UnitTypes*/ iUnit, int iNum);
  110. int getBuildingProductionTurnsLeft(int /*BuildingTypes*/ iBuilding, int iNum);
  111. int getProjectProductionTurnsLeft(int /*ProjectTypes*/ eProject, int iNum);
  112. void setProduction(int iNewValue);
  113. void changeProduction(int iChange);
  114. int getProductionModifier();
  115. int getCurrentProductionDifference(bool bIgnoreFood, bool bOverflow);
  116. int getUnitProductionModifier(int /*UnitTypes*/ iUnit);
  117. int getBuildingProductionModifier(int /*BuildingTypes*/ iBuilding);
  118. int getProjectProductionModifier(int /*ProjectTypes*/ eProject);
  119. int getExtraProductionDifference(int iExtra);
  120. bool canHurry(int /*HurryTypes*/ iHurry, bool bTestVisible);
  121. void hurry(int /*HurryTypes*/ iHurry);
  122. int /*UnitTypes*/ getConscriptUnit();
  123. int getConscriptPopulation();
  124. int conscriptMinCityPopulation();
  125. int flatConscriptAngerLength();
  126. bool canConscript();
  127. void conscript();
  128. int getBonusHealth(int /*BonusTypes*/ iBonus);
  129. int getBonusHappiness(int /*BonusTypes*/ iBonus);
  130. int getBonusPower(int /*BonusTypes*/ eBonus, bool bDirty);
  131. int getBonusYieldRateModifier(int /*YieldTypes*/ eIndex, int /*BonusTypes*/ eBonus);
  132. int /* HandicapTypes */ getHandicapType();
  133. int /* CivilizationTypes */ getCivilizationType();
  134. int /*LeaderHeadTypes*/ getPersonalityType();
  135. int /*ArtStyleTypes*/ getArtStyleType();
  136. int /*CitySizeTypes*/ getCitySizeType();
  137. bool hasTrait(int /*TraitTypes*/ iTrait);
  138. bool isBarbarian();
  139. bool isHuman();
  140. bool isVisible(int /*TeamTypes*/ eTeam, bool bDebug);
  141. bool isCapital();
  142. bool isCoastal(int iMinWaterSize);
  143. bool isDisorder();
  144. bool isHolyCityByType(int /*ReligionTypes*/ iIndex);
  145. bool isHolyCity();
  146. bool isHeadquartersByType(int /*CorporationTypes*/ iIndex);
  147. bool isHeadquarters();
  148. int getOvercrowdingPercentAnger(int iExtra);
  149. int getNoMilitaryPercentAnger();
  150. int getCulturePercentAnger();
  151. int getReligionPercentAnger();
  152. int getWarWearinessPercentAnger();
  153. /************************************************************************************************/
  154. /* REVOLUTION_MOD 04/19/08 jdog5000 */
  155. /* */
  156. /* */
  157. /************************************************************************************************/
  158. int getRevRequestPercentAnger();
  159. int getRevIndexPercentAnger();
  160. /************************************************************************************************/
  161. /* REVOLUTION_MOD END */
  162. /************************************************************************************************/
  163. int getLargestCityHappiness();
  164. int unhappyLevel(int iExtra);
  165. int unhappyLevelForRevIdx(int iExtra); // REVOLUTION_REFACTORING 04/2021 lfgr: Ignores some modifiers
  166. int happyLevel();
  167. int angryPopulation(int iExtra);
  168. int totalFreeSpecialists();
  169. int extraPopulation();
  170. int extraSpecialists();
  171. int extraFreeSpecialists();
  172. int unhealthyPopulation(bool bNoAngry, int iExtra);
  173. int totalGoodBuildingHealth();
  174. int totalBadBuildingHealth();
  175. int goodHealth();
  176. int badHealth(bool bNoAngry);
  177. int healthRate(bool bNoAngry, int iExtra);
  178. int foodConsumption(bool bNoAngry, int iExtra);
  179. int foodDifference(bool bBottom);
  180. int growthThreshold();
  181. int productionLeft();
  182. int hurryCost(bool bExtra);
  183. int hurryGold(int /*HurryTypes*/ iHurry);
  184. int hurryPopulation(int /*HurryTypes*/ iHurry);
  185. int hurryProduction(int /*HurryTypes*/ iHurry);
  186. int flatHurryAngerLength();
  187. int hurryAngerLength(int /*HurryTypes*/ iHurry);
  188. int maxHurryPopulation();
  189. int cultureDistance(int iDX, int iDY);
  190. int cultureStrength(int /*PlayerTypes*/ ePlayer);
  191. int cultureGarrison(int /*PlayerTypes*/ ePlayer);
  192. int getNumBuilding(int /*BuildingTypes*/ iIndex);
  193. bool isHasBuilding(int /*BuildingTypes*/ iIndex); // This is a function to help modders out, since it was replaced with getNumBuildings() in the C++
  194. int getNumActiveBuilding(int /*BuildingTypes*/ iIndex);
  195. int getID();
  196. int getX();
  197. int getY();
  198. bool at(int iX, int iY);
  199. bool atPlot(CyPlot* pPlot);
  200. CyPlot* plot();
  201. bool isConnectedTo(CyCity* pCity);
  202. bool isConnectedToCapital(int /*PlayerTypes*/ ePlayer);
  203. CyArea* area();
  204. CyArea* waterArea();
  205. CyPlot* getRallyPlot();
  206. int getGameTurnFounded();
  207. int getGameTurnAcquired();
  208. int getPopulation();
  209. void setPopulation(int iNewValue);
  210. void changePopulation(int iChange);
  211. long getRealPopulation();
  212. int getHighestPopulation();
  213. void setHighestPopulation(int iNewValue);
  214. int getWorkingPopulation();
  215. int getSpecialistPopulation();
  216. int getNumGreatPeople();
  217. int getBaseGreatPeopleRate();
  218. int getGreatPeopleRate();
  219. int getTotalGreatPeopleRateModifier();
  220. void changeBaseGreatPeopleRate(int iChange);
  221. int getGreatPeopleRateModifier();
  222. // BUG - Building Additional Great People - start
  223. int getAdditionalGreatPeopleRateByBuilding(int /*BuildingTypes*/ iBuilding);
  224. int getAdditionalBaseGreatPeopleRateByBuilding(int /*BuildingTypes*/ iBuilding);
  225. int getAdditionalGreatPeopleRateModifierByBuilding(int /*BuildingTypes*/ iBuilding);
  226. // BUG - Building Additional Great People - end
  227. int getGreatPeopleProgress();
  228. void changeGreatPeopleProgress(int iChange);
  229. int getNumWorldWonders();
  230. int getNumTeamWonders();
  231. int getNumNationalWonders();
  232. int getNumBuildings();
  233. bool isGovernmentCenter();
  234. // BUG - Building Saved Maintenance - start
  235. int getSavedMaintenanceByBuilding(int /*BuildingTypes*/ iBuilding) const;
  236. int getSavedMaintenanceTimes100ByBuilding(int /*BuildingTypes*/ iBuilding) const;
  237. // BUG - Building Saved Maintenance - end
  238. int getMaintenance() const;
  239. int getMaintenanceTimes100() const;
  240. int calculateDistanceMaintenance() const;
  241. int calculateDistanceMaintenanceTimes100() const;
  242. int calculateNumCitiesMaintenance() const;
  243. int calculateNumCitiesMaintenanceTimes100() const;
  244. int calculateColonyMaintenanceTimes100() const;
  245. int calculateColonyMaintenance() const;
  246. int calculateCorporationMaintenanceTimes100() const;
  247. int calculateCorporationMaintenance() const;
  248. int getMaintenanceModifier();
  249. int getWarWearinessModifier();
  250. int getHurryAngerModifier();
  251. void changeHealRate(int iChange);
  252. int getEspionageHealthCounter();
  253. void changeEspionageHealthCounter(int iChange);
  254. int getEspionageHappinessCounter();
  255. void changeEspionageHappinessCounter(int iChange);
  256. int getFreshWaterGoodHealth();
  257. int getFreshWaterBadHealth();
  258. int getBuildingGoodHealth();
  259. int getBuildingBadHealth();
  260. int getFeatureGoodHealth();
  261. int getFeatureBadHealth();
  262. // BUG - Feature Health - start
  263. int getAdditionalHealthByFeature(int /*FeatureTypes*/ eFeature, int iChange);
  264. int getAdditionalGoodHealthByFeature(int /*FeatureTypes*/ eFeature, int iChange);
  265. int getAdditionalBadHealthByFeature(int /*FeatureTypes*/ eFeature, int iChange);
  266. // BUG - Feature Health - end
  267. int getBuildingHealth(int iBuilding);
  268. // BUG - Building Additional Health - start
  269. int getAdditionalHealthByBuilding(int /*BuildingTypes*/ eBuilding);
  270. int getAdditionalGoodHealthByBuilding(int /*BuildingTypes*/ eBuilding);
  271. int getAdditionalBadHealthByBuilding(int /*BuildingTypes*/ eBuilding);
  272. int getAdditionalSpoiledFoodByBuilding(int /*BuildingTypes*/ eBuilding);
  273. int getAdditionalStarvationByBuilding(int /*BuildingTypes*/ eBuilding);
  274. // BUG - Building Additional Health - end
  275. int getPowerGoodHealth();
  276. int getPowerBadHealth();
  277. int getBonusGoodHealth();
  278. int getBonusBadHealth();
  279. int getMilitaryHappiness();
  280. int getMilitaryHappinessUnits();
  281. int getBuildingGoodHappiness();
  282. int getBuildingBadHappiness();
  283. int getBuildingHappiness(int iBuilding);
  284. // BUG - Building Additional Happiness - start
  285. int getAdditionalHappinessByBuilding(int /*BuildingTypes*/ eBuilding);
  286. int getAdditionalGoodHappinessByBuilding(int /*BuildingTypes*/ eBuilding);
  287. int getAdditionalBadHappinessByBuilding(int /*BuildingTypes*/ eBuilding);
  288. int getAdditionalAngryPopulationByBuilding(int /*BuildingTypes*/ eBuilding);
  289. // BUG - Building Additional Happiness - end
  290. int getExtraBuildingGoodHappiness();
  291. int getExtraBuildingBadHappiness();
  292. int getFeatureGoodHappiness();
  293. int getFeatureBadHappiness();
  294. int getBonusGoodHappiness();
  295. int getBonusBadHappiness();
  296. int getReligionGoodHappiness();
  297. int getReligionBadHappiness();
  298. int getReligionHappiness(int iReligion);
  299. int getExtraHappiness();
  300. int getExtraHealth();
  301. void changeExtraHappiness(int iChange);
  302. void changeExtraHealth(int iChange);
  303. int getHurryAngerTimer();
  304. void changeHurryAngerTimer(int iChange);
  305. /************************************************************************************************/
  306. /* REVOLUTION_MOD 04/28/08 jdog5000 */
  307. /* */
  308. /* */
  309. /************************************************************************************************/
  310. int getRevRequestAngerTimer();
  311. void changeRevRequestAngerTimer(int iChange);
  312. int getRevSuccessTimer();
  313. void changeRevSuccessTimer(int iChange);
  314. /************************************************************************************************/
  315. /* REVOLUTION_MOD END */
  316. /************************************************************************************************/
  317. int getConscriptAngerTimer();
  318. void changeConscriptAngerTimer(int iChange);
  319. int getDefyResolutionAngerTimer();
  320. void changeDefyResolutionAngerTimer(int iChange);
  321. int flatDefyResolutionAngerLength();
  322. int getHappinessTimer();
  323. void changeHappinessTimer(int iChange);
  324. bool isNoUnhappiness();
  325. bool isNoUnhealthyPopulation();
  326. bool isBuildingOnlyHealthy();
  327. int getFood();
  328. void setFood(int iNewValue);
  329. void changeFood(int iChange);
  330. int getFoodKept();
  331. int getMaxFoodKeptPercent();
  332. int getOverflowProduction();
  333. void setOverflowProduction(int iNewValue);
  334. int getFeatureProduction();
  335. void setFeatureProduction(int iNewValue);
  336. int getMilitaryProductionModifier();
  337. int getSpaceProductionModifier();
  338. int getExtraTradeRoutes();
  339. void changeExtraTradeRoutes(int iChange);
  340. int getTradeRouteModifier();
  341. int getForeignTradeRouteModifier();
  342. int getBuildingDefense();
  343. // BUG - Building Additional Defense - start
  344. int getAdditionalDefenseByBuilding(int /*BuildingTypes*/ eBuilding);
  345. // BUG - Building Additional Defense - end
  346. int getBuildingBombardDefense();
  347. // BUG - Building Additional Bombard Defense - start
  348. int getAdditionalBombardDefenseByBuilding(int /*BuildingTypes*/ eBuilding);
  349. // BUG - Building Additional Bombard Defense - end
  350. int getFreeExperience();
  351. int getCurrAirlift();
  352. int getMaxAirlift();
  353. int getAirModifier();
  354. int getAirUnitCapacity(int /*TeamTypes*/ eTeam);
  355. int getNukeModifier();
  356. int getFreeSpecialist();
  357. bool isPower();
  358. bool isAreaCleanPower();
  359. bool isDirtyPower();
  360. int getDefenseDamage();
  361. void changeDefenseDamage(int iChange);
  362. bool isBombardable(CyUnit* pUnit);
  363. int getNaturalDefense();
  364. int getTotalDefense(bool bIgnoreBuilding);
  365. int getDefenseModifier(bool bIgnoreBuilding);
  366. int visiblePopulation(void);
  367. int getOccupationTimer();
  368. bool isOccupation();
  369. void setOccupationTimer(int iNewValue);
  370. void changeOccupationTimer(int iChange);
  371. int getCultureUpdateTimer();
  372. void changeCultureUpdateTimer(int iChange);
  373. bool isNeverLost();
  374. void setNeverLost(int iNewValue);
  375. bool isBombarded();
  376. void setBombarded(int iNewValue);
  377. bool isDrafted();
  378. void setDrafted(int iNewValue);
  379. bool isAirliftTargeted();
  380. void setAirliftTargeted(int iNewValue);
  381. bool isCitizensAutomated();
  382. void setCitizensAutomated(bool bNewValue);
  383. bool isProductionAutomated();
  384. void setProductionAutomated(bool bNewValue);
  385. bool isWallOverride() const;
  386. void setWallOverride(bool bOverride);
  387. void setCitySizeBoost(int iBoost);
  388. bool isPlundered();
  389. void setPlundered(bool bNewValue);
  390. int /*PlayerTypes*/getOwner();
  391. int /*TeamTypes*/getTeam();
  392. int /*PlayerTypes*/getPreviousOwner();
  393. int /*PlayerTypes*/getOriginalOwner();
  394. int /*CultureLevelTypes*/ getCultureLevel();
  395. int getCultureThreshold();
  396. int getSeaPlotYield(int /*YieldTypes*/ eIndex);
  397. int getRiverPlotYield(int /*YieldTypes*/ eIndex);
  398. int getBaseYieldRate(int /*YieldTypes*/ eIndex);
  399. void setBaseYieldRate(int /*YieldTypes*/ eIndex, int iNewValue);
  400. void changeBaseYieldRate(int /*YieldTypes*/ eIndex, int iNewValue);
  401. int getBaseYieldRateModifier(int /*YieldTypes*/ eIndex, int iExtra);
  402. int getYieldRate(int /*YieldTypes*/ eIndex);
  403. int getYieldRateModifier(int /*YieldTypes*/ eIndex);
  404. // BUG - Building Additional Yield - start
  405. int getAdditionalYieldByBuilding(int /*YieldTypes*/ eIndex, int /*BuildingTypes*/ iBuilding);
  406. int getAdditionalBaseYieldRateByBuilding(int /*YieldTypes*/ eIndex, int /*BuildingTypes*/ iBuilding);
  407. int getAdditionalYieldRateModifierByBuilding(int /*YieldTypes*/ eIndex, int /*BuildingTypes*/ iBuilding);
  408. // BUG - Building Additional Yield - end
  409. int getTradeYield(int /*YieldTypes*/ eIndex);
  410. int totalTradeModifier();
  411. // BUG - Fractional Trade Routes - start
  412. int calculateTradeProfitTimes100(CyCity* pCity);
  413. // BUG - Fractional Trade Routes - end
  414. int calculateTradeProfit(CyCity* pCity);
  415. int calculateTradeYield(int /*YieldTypes*/ eIndex, int iTradeProfit);
  416. int getExtraSpecialistYield(int /*YieldTypes*/ eIndex);
  417. int getExtraSpecialistYieldOfType(int /*YieldTypes*/ eIndex, int /*SpecialistTypes*/ eSpecialist);
  418. int getCommerceRate(int /*CommerceTypes*/ eIndex);
  419. int getCommerceRateTimes100(int /*CommerceTypes*/ eIndex);
  420. int getCommerceFromPercent(int /*CommerceTypes*/ eIndex, int iYieldRate);
  421. int getBaseCommerceRate(int /*CommerceTypes*/ eIndex);
  422. int getBaseCommerceRateTimes100(int /*CommerceTypes*/ eIndex);
  423. int getTotalCommerceRateModifier(int /*CommerceTypes*/ eIndex);
  424. int getProductionToCommerceModifier(int /*CommerceTypes*/ eIndex);
  425. int getBuildingCommerce(int /*CommerceTypes*/ eIndex);
  426. int getBuildingCommerceByBuilding(int /*CommerceTypes*/ eIndex, int /*BuildingTypes*/ iBuilding);
  427. // BUG - Building Additional Commerce - start
  428. int getAdditionalCommerceByBuilding(int /*CommerceTypes*/ eIndex, int /*BuildingTypes*/ iBuilding);
  429. int getAdditionalCommerceTimes100ByBuilding(int /*CommerceTypes*/ eIndex, int /*BuildingTypes*/ iBuilding);
  430. int getAdditionalBaseCommerceRateByBuilding(int /*CommerceTypes*/ eIndex, int /*BuildingTypes*/ iBuilding);
  431. int getAdditionalCommerceRateModifierByBuilding(int /*CommerceTypes*/ eIndex, int /*BuildingTypes*/ iBuilding);
  432. // BUG - Building Additional Commerce - end
  433. int getSpecialistCommerce(int /*CommerceTypes*/ eIndex);
  434. void changeSpecialistCommerce(int /*CommerceTypes*/ eIndex, int iChange);
  435. int getReligionCommerce(int /*CommerceTypes*/ eIndex);
  436. int getReligionCommerceByReligion(int /*CommerceTypes*/ eIndex, int /*ReligionTypes*/ iReligion);
  437. int getCorporationCommerce(int /*CommerceTypes*/ eIndex);
  438. int getCorporationCommerceByCorporation(int /*CommerceTypes*/ eIndex, int /*CorporationTypes*/ iCorporation);
  439. int getCorporationYield(int /*YieldTypes*/ eIndex);
  440. int getCorporationYieldByCorporation(int /*YieldTypes*/ eIndex, int /*CorporationTypes*/ iCorporation);
  441. int getCommerceRateModifier(int /*CommerceTypes*/ eIndex);
  442. int getCommerceHappinessPer(int /*CommerceTypes*/ eIndex);
  443. int getCommerceHappinessByType(int /*CommerceTypes*/ eIndex);
  444. int getCommerceHappiness();
  445. int getDomainFreeExperience(int /*DomainTypes*/ eIndex);
  446. int getDomainProductionModifier(int /*DomainTypes*/ eIndex);
  447. int getCulture(int /*PlayerTypes*/ eIndex);
  448. int getCultureTimes100(int /*PlayerTypes*/ eIndex);
  449. int countTotalCultureTimes100();
  450. PlayerTypes findHighestCulture();
  451. int calculateCulturePercent(int eIndex);
  452. int calculateTeamCulturePercent(int /*TeamTypes*/ eIndex);
  453. void setCulture(int /*PlayerTypes*/ eIndex, int iNewValue, bool bPlots);
  454. void setCultureTimes100(int /*PlayerTypes*/ eIndex, int iNewValue, bool bPlots);
  455. void changeCulture(int /*PlayerTypes*/ eIndex, int iChange, bool bPlots);
  456. void changeCultureTimes100(int /*PlayerTypes*/ eIndex, int iChange, bool bPlots);
  457. /************************************************************************************************/
  458. /* REVOLUTION_MOD 01/01/08 jdog5000 */
  459. /* */
  460. /* */
  461. /************************************************************************************************/
  462. int getNumRevolts(int playerIdx);
  463. void changeNumRevolts(int playerIdx, int iChange);
  464. /************************************************************************************************/
  465. /* REVOLUTION_MOD END */
  466. /************************************************************************************************/
  467. bool isTradeRoute(int /*PlayerTypes*/ eIndex);
  468. bool isEverOwned(int /*PlayerTypes*/ eIndex);
  469. bool isRevealed(int /*TeamTypes*/ eIndex, bool bDebug);
  470. void setRevealed(int /*TeamTypes*/ eIndex, bool bNewValue);
  471. bool getEspionageVisibility(int /*TeamTypes*/ eIndex);
  472. std::wstring getName();
  473. std::wstring getNameForm(int iForm);
  474. std::wstring getNameKey();
  475. void setName(std::wstring szNewValue, bool bFound);
  476. void changeNoBonusCount(int /*BonusTypes*/ eBonus, int iChange);
  477. bool isNoBonus(int /*BonusTypes*/ eBonus);
  478. int getFreeBonus(int /*BonusTypes*/ eIndex);
  479. void changeFreeBonus(int /*BonusTypes*/ eIndex, int iChange);
  480. int getNumBonuses(int /*BonusTypes*/ iBonus);
  481. bool hasBonus(int /*BonusTypes */ iBonus);
  482. int getBuildingProduction(int /*BuildingTypes*/ iIndex);
  483. void setBuildingProduction(int /*BuildingTypes*/ iIndex, int iNewValue);
  484. void changeBuildingProduction(int /*BuildingTypes*/ iIndex, int iChange);
  485. int getBuildingProductionTime(int /*BuildingTypes*/ eIndex);
  486. void setBuildingProductionTime(int /*BuildingTypes*/ eIndex, int iNewValue);
  487. void changeBuildingProductionTime(int /*BuildingTypes*/ eIndex, int iChange);
  488. // BUG - Production Decay - start
  489. bool isBuildingProductionDecay(int /*BuildingTypes*/ eIndex);
  490. int getBuildingProductionDecay(int /*BuildingTypes*/ eIndex);
  491. int getBuildingProductionDecayTurns(int /*BuildingTypes*/ eIndex);
  492. // BUG - Production Decay - end
  493. int getBuildingOriginalOwner(int /*BuildingTypes*/ iIndex);
  494. int getBuildingOriginalTime(int /*BuildingTypes*/ iIndex);
  495. int getUnitProduction(int iIndex);
  496. void setUnitProduction(int iIndex, int iNewValue);
  497. void changeUnitProduction(int /*UnitTypes*/ iIndex, int iChange);
  498. // BUG - Production Decay - start
  499. int getUnitProductionTime(int /*UnitTypes*/ eIndex);
  500. void setUnitProductionTime(int /*UnitTypes*/ eIndex, int iNewValue);
  501. void changeUnitProductionTime(int /*UnitTypes*/ eIndex, int iChange);
  502. bool isUnitProductionDecay(int /*UnitTypes*/ eIndex);
  503. int getUnitProductionDecay(int /*UnitTypes*/ eIndex);
  504. int getUnitProductionDecayTurns(int /*UnitTypes*/ eIndex);
  505. // BUG - Production Decay - end
  506. // BUG - Project Production - start
  507. int getProjectProduction(int /*ProjectTypes*/ iIndex);
  508. void setProjectProduction(int /*ProjectTypes*/ iIndex, int iNewValue);
  509. void changeProjectProduction(int /*ProjectTypes*/ iIndex, int iChange);
  510. // BUG - Project Production - end
  511. int getGreatPeopleUnitRate(int /*UnitTypes*/ iIndex);
  512. int getGreatPeopleUnitProgress(int /*UnitTypes*/ iIndex);
  513. void setGreatPeopleUnitProgress(int /*UnitTypes*/ iIndex, int iNewValue);
  514. void changeGreatPeopleUnitProgress(int /*UnitTypes*/ iIndex, int iChange);
  515. int getSpecialistCount(int /*SpecialistTypes*/ eIndex);
  516. void alterSpecialistCount(int /*SpecialistTypes*/ eIndex, int iChange);
  517. int getMaxSpecialistCount(int /*SpecialistTypes*/ eIndex);
  518. bool isSpecialistValid(int /*SpecialistTypes*/ eIndex, int iExtra);
  519. int getForceSpecialistCount(int /*SpecialistTypes*/ eIndex);
  520. bool isSpecialistForced();
  521. void setForceSpecialistCount(int /*SpecialistTypes*/ eIndex, int iNewValue);
  522. void changeForceSpecialistCount(int /*SpecialistTypes*/ eIndex, int iChange);
  523. int getFreeSpecialistCount(int /*SpecialistTypes*/ eIndex);
  524. void setFreeSpecialistCount(int /*SpecialistTypes*/ eIndex, int iNewValue);
  525. void changeFreeSpecialistCount(int /*SpecialistTypes*/ eIndex, int iChange);
  526. int getAddedFreeSpecialistCount(int /*SpecialistTypes*/ eIndex);
  527. int getImprovementFreeSpecialists(int /*ImprovementTypes*/ iIndex);
  528. void changeImprovementFreeSpecialists(int /*ImprovementTypes*/ iIndex, int iChange);
  529. int getReligionInfluence(int /*ReligionTypes*/ iIndex);
  530. void changeReligionInfluence(int /*ReligionTypes*/ iIndex, int iChange);
  531. int getCurrentStateReligionHappiness();
  532. int getStateReligionHappiness(int /*ReligionTypes*/ eIndex);
  533. void changeStateReligionHappiness(int /*ReligionTypes*/ eIndex, int iChange);
  534. int getUnitCombatFreeExperience(int /*UnitCombatTypes*/ eIndex);
  535. int getFreePromotionCount(int /*PromotionTypes*/ eIndex);
  536. bool isFreePromotion(int /*PromotionTypes*/ eIndex);
  537. int getSpecialistFreeExperience() const;
  538. int getEspionageDefenseModifier() const;
  539. bool isWorkingPlotByIndex(int iIndex);
  540. bool isWorkingPlot(CyPlot* pPlot);
  541. void alterWorkingPlot(int iIndex);
  542. int getNumRealBuilding(int /*BuildingTypes*/ iIndex);
  543. void setNumRealBuilding(int /*BuildingTypes*/ iIndex, int iNewValue);
  544. int getNumFreeBuilding(int /*BuildingTypes*/ iIndex);
  545. bool isHasReligion(int /*ReligionTypes*/ iIndex);
  546. void setHasReligion(int /*ReligionTypes*/ iIndex, bool bNewValue, bool bAnnounce, bool bArrows);
  547. bool isHasCorporation(int /*CorporationTypes*/ iIndex);
  548. void setHasCorporation(int /*CorporationTypes*/ iIndex, bool bNewValue, bool bAnnounce, bool bArrows);
  549. bool isActiveCorporation(int /*CorporationTypes*/ eCorporation);
  550. CyCity* getTradeCity(int iIndex);
  551. int getTradeRoutes();
  552. void clearOrderQueue();
  553. void pushOrder(OrderTypes eOrder, int iData1, int iData2, bool bSave, bool bPop, bool bAppend, bool bForce);
  554. void popOrder(int iNum, bool bFinish, bool bChoose);
  555. int getOrderQueueLength();
  556. OrderData* getOrderFromQueue(int iIndex);
  557. void setWallOverridePoints(const python::tuple& kPoints); /* points are given in world space ... i.e. PlotXToPointX, etc */
  558. python::tuple getWallOverridePoints() const;
  559. int getBuildingYieldChange(int /*BuildingClassTypes*/ eBuildingClass, int /*YieldTypes*/ eYield) const;
  560. void setBuildingYieldChange(int /*BuildingClassTypes*/ eBuildingClass, int /*YieldTypes*/ eYield, int iChange);
  561. int getBuildingCommerceChange(int /*BuildingClassTypes*/ eBuildingClass, int /*CommerceTypes*/ eCommerce) const;
  562. void setBuildingCommerceChange(int /*BuildingClassTypes*/ eBuildingClass, int /*CommerceTypes*/ eCommerce, int iChange);
  563. int getBuildingHappyChange(int /*BuildingClassTypes*/ eBuildingClass) const;
  564. void setBuildingHappyChange(int /*BuildingClassTypes*/ eBuildingClass, int iChange);
  565. int getBuildingHealthChange(int /*BuildingClassTypes*/ eBuildingClass) const;
  566. void setBuildingHealthChange(int /*BuildingClassTypes*/ eBuildingClass, int iChange);
  567. int getLiberationPlayer(bool bConquest);
  568. void liberate(bool bConquest);
  569. //FfH: Added by Kael 10/18/2007
  570. void applyBuildEffects(CyUnit* pUnit);
  571. void changeCrime(int iCrime);
  572. int getCrime() const;
  573. bool isHasBuildingClass(int /*BuildingClassTypes*/ iIndex) const;
  574. bool isSettlement() const;
  575. void setCivilizationType(int iNewValue);
  576. int getPlotRadius() const; // lfgr 03/2021
  577. void setPlotRadius(int iNewValue);
  578. int CyCity::getNumCityPlots() const; // lfgr 03/2021
  579. void setSettlement(bool bNewValue);
  580. //FfH: End Add
  581. /********************************************************************************/
  582. /* Expose FfH Functions 02/28/12 lfgr */
  583. /********************************************************************************/
  584. bool isUnhappyProduction() const;
  585. /********************************************************************************/
  586. /* Expose FfH Functions End lfgr */
  587. /********************************************************************************/
  588. /*************************************************************************************************/
  589. /** BETTER AI (New Functions Definition) Sephi **/
  590. /** **/
  591. /** **/
  592. /*************************************************************************************************/
  593. bool AI_stopGrowth();
  594. int AI_neededSeaWorkers();
  595. /*************************************************************************************************/
  596. /** END **/
  597. /*************************************************************************************************/
  598. int getAltarLevel();
  599. //>>>>Unofficial Bug Fix: Added by Denev 2009/09/28
  600. //*** Assimilated city produces a unit with original civilization artstyle.
  601. const TCHAR* getUnitArtStyleButton(int /*UnitTypes*/ eUnit) const;
  602. //<<<<Unofficial Bug Fix: End Add
  603. bool AI_avoidGrowth();
  604. bool AI_isEmphasize(int iEmphasizeType);
  605. int AI_countBestBuilds(CyArea* pArea);
  606. int AI_cityValue();
  607. /************************************************************************************************/
  608. /* REVOLUTION_MOD 02/01/09 jdog5000 */
  609. /* */
  610. /* */
  611. /************************************************************************************************/
  612. int /*UnitTypes*/ AI_bestUnit();
  613. int /*UnitTypes*/ AI_bestUnitAI(int iUnitAIType);
  614. int /*BuildingTypes*/ AI_bestBuilding(int iFocusFlags);
  615. /************************************************************************************************/
  616. /* REVOLUTION_MOD END */
  617. /************************************************************************************************/
  618. std::string getScriptData() const;
  619. void setScriptData(std::string szNewValue);
  620. private:
  621. CvCity* m_pCity;
  622. };
  623. #endif // CyCity_h