Skip to content

Commit

Permalink
Quest requirements based on BuildingClassPrereqModifier
Browse files Browse the repository at this point in the history
... instead of DefaultPlayers. [advc.137]
  • Loading branch information
f1rpo committed Mar 10, 2021
1 parent b4790db commit 2a11b09
Showing 1 changed file with 41 additions and 42 deletions.
83 changes: 41 additions & 42 deletions Assets/Python/EntryPoints/CvRandomEventInterface.py
Expand Up @@ -18,6 +18,12 @@
localText = CyTranslator()


# advc.137: All event preconditions that use DefaultPlayers in BtS are going to use this function instead. Using default player counts was a bad idea to begin with, and now that I've increased the default player count on Deity, it's totally out of whack.
def worldSizeTarget():
# 5 adjusted by building class prereq modifier, rounded to nearest.
return ((5 * (100 + gc.getWorldInfo(gc.getMap().getWorldSize()).getBuildingClassPrereqModifier())) + 50) // 100


######## BLESSED SEA ###########

def getHelpBlessedSea1(argsList):
Expand Down Expand Up @@ -153,7 +159,7 @@ def getHelpHolyMountain1(argsList):
kTriggeredData = argsList[1]

map = gc.getMap()
iMinPoints = 2 * gc.getWorldInfo(map.getWorldSize()).getDefaultPlayers()
iMinPoints = 2 * worldSizeTarget()

iBuilding = -1
iReligion = gc.getPlayer(kTriggeredData.ePlayer).getStateReligion()
Expand Down Expand Up @@ -238,7 +244,7 @@ def canTriggerHolyMountainRevealed(argsList):
elif (gc.getBuildingInfo(i).getSpecialBuildingType() == CvUtil.findInfoTypeNum(gc.getSpecialBuildingInfo,gc.getNumSpecialBuildingInfos(),'SPECIALBUILDING_MONASTERY')):
iNumPoints += player.countNumBuildings(i)

if (iNumPoints < 2 * gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()):
if iNumPoints < 2 * worldSizeTarget():
return false

plot = gc.getMap().plot(kOrigTriggeredData.iPlotX, kOrigTriggeredData.iPlotY)
Expand Down Expand Up @@ -2467,7 +2473,7 @@ def getHelpHorseWhispering1(argsList):

map = gc.getMap()

iNumStables = gc.getWorldInfo(map.getWorldSize()).getDefaultPlayers()
iNumStables = worldSizeTarget()
szHelp = localText.getText("TXT_KEY_EVENT_HORSE_WHISPERING_HELP", (iNumStables, ))

return szHelp
Expand All @@ -2478,7 +2484,7 @@ def canTriggerHorseWhisperingDone(argsList):
player = gc.getPlayer(kTriggeredData.ePlayer)

iStable = CvUtil.findInfoTypeNum(gc.getBuildingClassInfo, gc.getNumBuildingClassInfos(), 'BUILDINGCLASS_STABLE')
if gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() > player.getBuildingClassCount(iStable):
if worldSizeTarget() > player.getBuildingClassCount(iStable):
return false

return true
Expand All @@ -2489,7 +2495,7 @@ def getHelpHorseWhisperingDone1(argsList):

map = gc.getMap()

iNumUnits = gc.getWorldInfo(map.getWorldSize()).getDefaultPlayers()
iNumUnits = worldSizeTarget()
szHelp = localText.getText("TXT_KEY_EVENT_HORSE_WHISPERING_DONE_HELP_1", (iNumUnits, ))

return szHelp
Expand All @@ -2501,7 +2507,7 @@ def applyHorseWhisperingDone1(argsList):

map = gc.getMap()
plot = map.plot(kTriggeredData.iPlotX, kTriggeredData.iPlotY)
iNumUnits = gc.getWorldInfo(map.getWorldSize()).getDefaultPlayers()
iNumUnits = worldSizeTarget()
iUnitClassType = CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_HORSE_ARCHER')
iUnitType = gc.getCivilizationInfo(player.getCivilizationType()).getCivilizationUnits(iUnitClassType)

Expand All @@ -2515,7 +2521,7 @@ def getHelpHarbormaster1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]

iHarborsRequired = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()
iHarborsRequired = worldSizeTarget()
iCaravelsRequired = iHarborsRequired / 2 + 1

szHelp = localText.getText("TXT_KEY_EVENT_HARBORMASTER_HELP", (iHarborsRequired, iCaravelsRequired))
Expand Down Expand Up @@ -2552,7 +2558,7 @@ def canTriggerHarbormasterDone(argsList):
player = gc.getPlayer(kTriggeredData.ePlayer)

iHarbor = CvUtil.findInfoTypeNum(gc.getBuildingClassInfo, gc.getNumBuildingClassInfos(), 'BUILDINGCLASS_HARBOR')
iHarborsRequired = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()
iHarborsRequired = worldSizeTarget()
if iHarborsRequired > player.getBuildingClassCount(iHarbor):
return false

Expand All @@ -2577,8 +2583,7 @@ def getHelpClassicLiterature1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]

iLibrariesRequired = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()

iLibrariesRequired = worldSizeTarget()
szHelp = localText.getText("TXT_KEY_EVENT_CLASSIC_LITERATURE_HELP_1", (iLibrariesRequired, ))

return szHelp
Expand All @@ -2590,7 +2595,7 @@ def canTriggerClassicLiteratureDone(argsList):
player = gc.getPlayer(kTriggeredData.ePlayer)

iLibrary = CvUtil.findInfoTypeNum(gc.getBuildingClassInfo, gc.getNumBuildingClassInfos(), 'BUILDINGCLASS_LIBRARY')
iBuildingsRequired = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()
iBuildingsRequired = worldSizeTarget()
if iBuildingsRequired > player.getBuildingClassCount(iLibrary):
return false

Expand Down Expand Up @@ -2701,8 +2706,7 @@ def getHelpMasterBlacksmith1(argsList):
kTriggeredData = argsList[1]
player = gc.getPlayer(kTriggeredData.ePlayer)

iRequired = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()

iRequired = worldSizeTarget()
szHelp = localText.getText("TXT_KEY_EVENT_MASTER_BLACKSMITH_HELP_1", (iRequired, player.getCity(kTriggeredData.iCityId).getNameKey()))

return szHelp
Expand All @@ -2723,7 +2727,7 @@ def canTriggerMasterBlacksmithDone(argsList):
player = gc.getPlayer(kTriggeredData.ePlayer)

iForge = CvUtil.findInfoTypeNum(gc.getBuildingClassInfo, gc.getNumBuildingClassInfos(), 'BUILDINGCLASS_FORGE')
iBuildingsRequired = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()
iBuildingsRequired = worldSizeTarget()
if iBuildingsRequired > player.getBuildingClassCount(iForge):
return false

Expand Down Expand Up @@ -2808,8 +2812,7 @@ def getHelpBestDefense1(argsList):
kTriggeredData = argsList[1]
player = gc.getPlayer(kTriggeredData.ePlayer)

iRequired = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()

iRequired = worldSizeTarget()
szHelp = localText.getText("TXT_KEY_EVENT_BEST_DEFENSE_HELP_1", (iRequired, ))

return szHelp
Expand All @@ -2820,7 +2823,7 @@ def canTriggerBestDefenseDone(argsList):
player = gc.getPlayer(kTriggeredData.ePlayer)

iCastle = CvUtil.findInfoTypeNum(gc.getBuildingClassInfo, gc.getNumBuildingClassInfos(), 'BUILDINGCLASS_CASTLE')
iBuildingsRequired = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()
iBuildingsRequired = worldSizeTarget()
if iBuildingsRequired > player.getBuildingClassCount(iCastle):
return false

Expand Down Expand Up @@ -2876,7 +2879,7 @@ def getHelpSportsLeague1(argsList):
kTriggeredData = argsList[1]
player = gc.getPlayer(kTriggeredData.ePlayer)

iRequired = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()
iRequired = worldSizeTarget()
iBuilding = CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), 'BUILDING_STATUE_OF_ZEUS')

szHelp = localText.getText("TXT_KEY_EVENT_SPORTS_LEAGUE_HELP_1", (iRequired, gc.getBuildingInfo(iBuilding).getTextKey()))
Expand All @@ -2889,7 +2892,7 @@ def canTriggerSportsLeagueDone(argsList):
player = gc.getPlayer(kTriggeredData.ePlayer)

iCastle = CvUtil.findInfoTypeNum(gc.getBuildingClassInfo, gc.getNumBuildingClassInfos(), 'BUILDINGCLASS_COLOSSEUM')
iBuildingsRequired = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()
iBuildingsRequired = worldSizeTarget()
if iBuildingsRequired > player.getBuildingClassCount(iCastle):
return false

Expand Down Expand Up @@ -2992,7 +2995,7 @@ def getHelpCrusadeDone1(argsList):

holyCity = gc.getGame().getHolyCity(kTriggeredData.eReligion)
szUnit = gc.getUnitInfo(holyCity.getConscriptUnit()).getTextKey()
iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() / 2 + 1
iNumUnits = worldSizeTarget() / 2 + 1
szHelp = localText.getText("TXT_KEY_EVENT_CRUSADE_DONE_HELP_1", (iNumUnits, szUnit, holyCity.getNameKey()))

return szHelp
Expand All @@ -3014,7 +3017,7 @@ def applyCrusadeDone1(argsList):

holyCity = gc.getGame().getHolyCity(kTriggeredData.eReligion)
iUnitType = holyCity.getConscriptUnit()
iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() / 2 + 1
iNumUnits = worldSizeTarget() / 2 + 1

if iUnitType != -1:
for i in range(iNumUnits):
Expand Down Expand Up @@ -3061,7 +3064,7 @@ def getHelpCrusadeDone3(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]

iNumCities = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()
iNumCities = worldSizeTarget()
holyCity = gc.getGame().getHolyCity(kTriggeredData.eReligion)

szHelp = localText.getText("TXT_KEY_EVENT_CRUSADE_DONE_HELP_3", (gc.getReligionInfo(kTriggeredData.eReligion).getTextKey(), iNumCities))
Expand All @@ -3072,8 +3075,7 @@ def canApplyCrusadeDone3(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]

iNumCities = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()

iNumCities = worldSizeTarget()
if gc.getGame().getNumCities() == gc.getGame().countReligionLevels(kTriggeredData.eReligion):
return false

Expand All @@ -3100,7 +3102,7 @@ def applyCrusadeDone3(argsList):
#listCities.sort()
listCities.sort(key=itemgetter(0)) # K-Mod. Sorting by pointers can cause OOS.

iNumCities = min(gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers(), len(listCities))
iNumCities = min(worldSizeTarget(), len(listCities))

for i in range(iNumCities):
iDistance, loopCity = listCities[i]
Expand Down Expand Up @@ -3397,7 +3399,7 @@ def getHelpGreedDone1(argsList):
player = gc.getPlayer(kTriggeredData.ePlayer)
plot = gc.getMap().plot(kTriggeredData.iPlotX, kTriggeredData.iPlotY)

iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() / 2 + 1
iNumUnits = worldSizeTarget() / 2 + 1
iUnitType = getGreedUnit(player, plot)

if iUnitType != -1:
Expand All @@ -3412,7 +3414,7 @@ def applyGreedDone1(argsList):
plot = gc.getMap().plot(kTriggeredData.iPlotX, kTriggeredData.iPlotY)

iUnitType = getGreedUnit(player, plot)
iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() / 2 + 1
iNumUnits = worldSizeTarget() / 2 + 1

if iUnitType != -1:
for i in range(iNumUnits):
Expand All @@ -3434,7 +3436,7 @@ def getHelpWarChariots1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]

iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() + 1
iNumUnits = worldSizeTarget()
szHelp = localText.getText("TXT_KEY_EVENT_WAR_CHARIOTS_HELP_1", (iNumUnits, ))

return szHelp
Expand All @@ -3443,8 +3445,7 @@ def canTriggerWarChariotsDone(argsList):
kTriggeredData = argsList[0]
trigger = gc.getEventTriggerInfo(kTriggeredData.eTrigger)
player = gc.getPlayer(kTriggeredData.ePlayer)

iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() + 1
iNumUnits = worldSizeTarget()
iUnitClassType = CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_CHARIOT')
if player.getUnitClassCount(iUnitClassType) < iNumUnits:
return false
Expand All @@ -3461,7 +3462,7 @@ def getHelpEliteSwords1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]

iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() + 1
iNumUnits = worldSizeTarget() + 1
szHelp = localText.getText("TXT_KEY_EVENT_ELITE_SWORDS_HELP_1", (iNumUnits, ))

return szHelp
Expand All @@ -3470,7 +3471,7 @@ def canTriggerEliteSwordsDone(argsList):
kTriggeredData = argsList[0]
player = gc.getPlayer(kTriggeredData.ePlayer)

iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() + 1
iNumUnits = worldSizeTarget() + 1
iUnitClassType = CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_SWORDSMAN')
if player.getUnitClassCount(iUnitClassType) < iNumUnits:
return false
Expand Down Expand Up @@ -3513,8 +3514,7 @@ def getHelpWarships1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]

iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()

iNumUnits = worldSizeTarget()
iBuilding = CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), 'BUILDING_GREAT_LIGHTHOUSE')
szHelp = localText.getText("TXT_KEY_EVENT_WARSHIPS_HELP_1", (iNumUnits, gc.getBuildingInfo(iBuilding).getTextKey()))

Expand All @@ -3524,7 +3524,7 @@ def canTriggerWarshipsDone(argsList):
kTriggeredData = argsList[0]
player = gc.getPlayer(kTriggeredData.ePlayer)

iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers()
iNumUnits = worldSizeTarget()
iUnitClassType = CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_TRIREME')

if player.getUnitClassCount(iUnitClassType) < iNumUnits:
Expand All @@ -3550,7 +3550,7 @@ def getHelpGunsButter1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]

iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() + 1
iNumUnits = worldSizeTarget() + 1
iBuilding = CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), 'BUILDING_TAJ_MAHAL')

szHelp = localText.getText("TXT_KEY_EVENT_GUNS_BUTTER_HELP_1", (iNumUnits, gc.getBuildingInfo(iBuilding).getTextKey()))
Expand All @@ -3561,7 +3561,7 @@ def canTriggerGunsButterDone(argsList):
kTriggeredData = argsList[0]
player = gc.getPlayer(kTriggeredData.ePlayer)

iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() + 1
iNumUnits = worldSizeTarget() + 1
iUnitClassType = CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_MUSKETMAN')

if player.getUnitClassCount(iUnitClassType) < iNumUnits:
Expand Down Expand Up @@ -3608,7 +3608,7 @@ def getHelpNobleKnights1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]

iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() + 1
iNumUnits = worldSizeTarget() + 1
iBuilding = CvUtil.findInfoTypeNum(gc.getBuildingInfo, gc.getNumBuildingInfos(), 'BUILDING_ORACLE')

szHelp = localText.getText("TXT_KEY_EVENT_NOBLE_KNIGHTS_HELP_1", (iNumUnits, gc.getBuildingInfo(iBuilding).getTextKey()))
Expand All @@ -3619,7 +3619,7 @@ def canTriggerNobleKnightsDone(argsList):
kTriggeredData = argsList[0]
player = gc.getPlayer(kTriggeredData.ePlayer)

iNumUnits = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() + 1
iNumUnits = worldSizeTarget() + 1
iUnitClassType = CvUtil.findInfoTypeNum(gc.getUnitClassInfo, gc.getNumUnitClassInfos(), 'UNITCLASS_KNIGHT')

if player.getUnitClassCount(iUnitClassType) < iNumUnits:
Expand Down Expand Up @@ -3792,8 +3792,7 @@ def getHelpCorporateExpansion1(argsList):
iEvent = argsList[0]
kTriggeredData = argsList[1]

iNumCities = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() + 1

iNumCities = worldSizeTarget() + 1
szHelp = localText.getText("TXT_KEY_EVENT_CORPORATE_EXPANSION_HELP_1", (gc.getCorporationInfo(kTriggeredData.eCorporation).getTextKey(), iNumCities))

return szHelp
Expand All @@ -3804,7 +3803,7 @@ def canTriggerCorporateExpansionDone(argsList):
trigger = gc.getEventTriggerInfo(kTriggeredData.eTrigger)
kOrigTriggeredData = player.getEventOccured(trigger.getPrereqEvent(0))

iNumCitiesRequired = gc.getWorldInfo(gc.getMap().getWorldSize()).getDefaultPlayers() + 1 + kOrigTriggeredData.iOtherPlayerCityId
iNumCitiesRequired = worldSizeTarget() + 1 + kOrigTriggeredData.iOtherPlayerCityId

if iNumCitiesRequired > gc.getGame().countCorporationLevels(kOrigTriggeredData.eCorporation):
return false
Expand Down

0 comments on commit 2a11b09

Please sign in to comment.