codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
int CvCity::GetFaithPurchaseCost(UnitTypes eUnit, bool bIncludeBeliefDiscounts) { VALIDATE_OBJECT int iCost = 0; CvPlayer &kPlayer = GET_PLAYER(m_eOwner); CvUnitEntry* pkUnitInfo = GC.getUnitInfo(eUnit); if(pkUnitInfo == NULL) { //Should never happen return iCost; } // LATE-GAME GREAT PERSON SpecialUnitTypes eSpecialUnitGreatPerson = (SpecialUnitTypes) GC.getInfoTypeForString("SPECIALUNIT_PEOPLE"); if (pkUnitInfo->GetSpecialUnitType() == eSpecialUnitGreatPerson) { // We must be into the industrial era if(kPlayer.GetCurrentEra() >= GC.getInfoTypeForString("ERA_INDUSTRIAL", true /*bHideAssert*/)) { // Must be proper great person for our civ const UnitClassTypes eUnitClass = (UnitClassTypes)pkUnitInfo->GetUnitClassType(); if (eUnitClass != NO_UNITCLASS) { const UnitTypes eThisPlayersUnitType = (UnitTypes)kPlayer.getCivilizationInfo().getCivilizationUnits(eUnitClass); ReligionTypes eReligion = kPlayer.GetReligions()->GetReligionCreatedByPlayer(); if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_PROPHET", true /*bHideAssert*/)) //here { // Can't be bought if didn't start religion if (eReligion == NO_RELIGION) { iCost = -1; } else { iCost = kPlayer.GetReligions()->GetCostNextProphet(true /*bIncludeBeliefDiscounts*/, false /*bAdjustForSpeedDifficulty*/); } } else if (eThisPlayersUnitType == eUnit) { PolicyBranchTypes eBranch = NO_POLICY_BRANCH_TYPE; int iNum = 0; // Check social policy tree if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_WRITER", true /*bHideAssert*/)) { eBranch = (PolicyBranchTypes)GC.getInfoTypeForString("POLICY_BRANCH_AESTHETICS", true /*bHideAssert*/); iNum = kPlayer.getWritersFromFaith(); } else if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_ARTIST", true /*bHideAssert*/)) { eBranch = (PolicyBranchTypes)GC.getInfoTypeForString("POLICY_BRANCH_AESTHETICS", true /*bHideAssert*/); iNum = kPlayer.getArtistsFromFaith(); } else if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_MUSICIAN", true /*bHideAssert*/)) { eBranch = (PolicyBranchTypes)GC.getInfoTypeForString("POLICY_BRANCH_AESTHETICS", true /*bHideAssert*/); iNum = kPlayer.getMusiciansFromFaith(); } else if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_SCIENTIST", true /*bHideAssert*/)) { eBranch = (PolicyBranchTypes)GC.getInfoTypeForString("POLICY_BRANCH_RATIONALISM", true /*bHideAssert*/); iNum = kPlayer.getScientistsFromFaith(); } else if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_MERCHANT", true /*bHideAssert*/)) { eBranch = (PolicyBranchTypes)GC.getInfoTypeForString("POLICY_BRANCH_COMMERCE", true /*bHideAssert*/); iNum = kPlayer.getMerchantsFromFaith(); } else if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_ENGINEER", true /*bHideAssert*/)) { eBranch = (PolicyBranchTypes)GC.getInfoTypeForString("POLICY_BRANCH_TRADITION", true /*bHideAssert*/); iNum = kPlayer.getEngineersFromFaith(); } else if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_GREAT_GENERAL", true /*bHideAssert*/)) { eBranch = (PolicyBranchTypes)GC.getInfoTypeForString("POLICY_BRANCH_HONOR", true /*bHideAssert*/); iNum = kPlayer.getGeneralsFromFaith(); } else if (eUnitClass == GC.getInfoTypeForString("UNITCLASS_GREAT_ADMIRAL", true /*bHideAssert*/)) { eBranch = (PolicyBranchTypes)GC.getInfoTypeForString("POLICY_BRANCH_EXPLORATION", true /*bHideAssert*/); iNum = kPlayer.getAdmiralsFromFaith(); } bool bAllUnlockedByBelief = false; const CvReligion* pReligion = GC.getGame().GetGameReligions()->GetReligion(eReligion, getOwner()); if(pReligion) { if (pReligion->m_Beliefs.IsFaithPurchaseAllGreatPeople()) { bAllUnlockedByBelief = true; } } if (bAllUnlockedByBelief || (eBranch != NO_POLICY_BRANCH_TYPE && kPlayer.GetPlayerPolicies()->IsPolicyBranchFinished(eBranch) && !kPlayer.GetPlayerPolicies()->IsPolicyBranchBlocked(eBranch))) { iCost = GC.getGame().GetGameReligions()->GetFaithGreatPersonNumber(iNum + 1); } } } } }
Private
[
?
]
Run code
Submit