Technical Documentation

stmartin

aka. poyuzhe
Joined
Aug 4, 2007
Messages
640
Location
Shanghai
EDIT: This page is horribly outdated. If anyone is interested in making Modmod for HoTK and need the most updated version, just post a reply and I'll try to update it. Or you can directly checkout the latest source code at: http://code.google.com/p/sanguoforciv4/source/checkout

This is the place we write down the technical details of our mod. 3 audiences: for the own reference of the development team; for prospect teammate; for potential modders of the mod.

Note that in here we only write down things that have come true. This document will be updated along with the development of the mod.

Better BTS AI and The BUG Mod, the two big part of this mod, will not be included in this documentation.


A. New XML Tag

1. GlobalDefinesAlt.xml

BENEVOLENT_BUILDING_SURVIVE_MODIFIER
Liu Bei's Civ Trait, X >= 0

BENEVOLENT_CULTURE_ACQUIRE_PERCENT
0 <= X <= 100

FAMOUS_DENIAL_POWER_YOUR_ENEMIES_MODIFIER
Yuan Shao's Civ Trait; Other team will fear less for Yuan Shao's enemy when considering becoming his vassal; X >= 0

FAMOUS_DENIAL_POWER_US_MODIFIER
Other team will think themselves weaker when considering becoming his vassal; x >= 0

FAMOUS_DENIAL_POWER_YOU_MODIFIER
Other team will not consider Yuan Shao's victory condition when considering becoming his vassal; -100 < X <= 0

FAMOUS_DISABLE_DENIAL_TOO_FAR
Other team will not consider the distance between them and Yuan Shao when considering becoming his vassal; x = 0 or 1

FAMOUS_DENIAL_ATTITUDE_MODIFIER
Other team will modify its attitude when considering becoming a vassal of Yuan Shao; x <= 0

FAMOUS_NEGATIVE_CONTACT_DELAY_MODIFIER
modifies the time interval of AI making arrogant demand to Yuan Shao. x >= 0

TOUGH_ATTACK_STRENGTH_MODIFIER
Lu Bu's civ trait

TOUGH_DEFENSE_STRENGTH_MODIFIER
x <= 0

RECLUSE_OTHERS_CANNOT_WAR_DISTANT_ATTITUDE_THRESHOLD
The minimum attitude required for a distant civ to unable to declare war on Gongsun Du, current 1, annoyed

RICE_TAOIST_IMMIGRATION_HAPPINESS_MODIFIER
Zhang Lu's civ trait, percent

MISSIONARY_CULTURE_SPREAD_AMOUNT
Advocate spread culture when spreading belief

MISSIONARY_ESPIONAGE_POINT_AMOUNT
advocate accumulate EP when spreading belief

EMPEROR_TRADE_VALUE_MODIFIER
the emperor team's trade proposal will worth more in the AI's eye

EMPEROR_DECLARE_WAR_ATTITUDE_THRESHOLD_CHANGE
modify the attitude an AI required to possibly accept the player's war request

EMPEROR_DECLARE_WAR_THEM_ATTITUDE_THRESHOLD_CHANGE
modify the attitude and AI required to possibly accept declaring war on a 3rd team

EMPEROR_DEFENSIVE_POWER_MODIFIER
modify the emperor team's defensive power value

EMPEROR_VOTES_MODIFIER_AMOUNT
modify the emperor team's num of votes

CELEBRITY_VOTES_MODIFIER
Kong Rong's civ trait

CELEBRITY_SPY_INTERCEPTED_CHANCE_MODIFIER

HERO_EXPERIENCE_PERCENT
How many times of XP needed for a hero to level up

HERO_UNITCOMBAT_LEVEL_INCREASE_LIMIT
this is no longer used

HERO_STEAL_PROMOTION_PERCENT
Smart Promotion

HERO_LAST_DEBUT_YEAR
Specifies the latest possible year for a hero to debut

HERO_DESTROY_OWN_TOWN_BASE_SUCCESS_CHANCE
Demagogue Promotion

HERO_SURROUNDING_ENEMY_HEALTH_CHANGE_LIMIT
Dread Promotion

HERO_SCATTER_ENEMY_STACK_CHANCE
Wave Attack Promotion

HERO_BASE_RANGE_BOMBARD_RANGE
Far Shot Promotion

HERO_RANGED_BOMBARD_ACCURACY

HERO_INVISIBLE_TERRAIN_HILL_INVISIBLE
Sneak2 Promotion, not implemented yet, same for the next 3

HERO_INVISIBLE_TERRAIN_FIRST_FEATURE
HERO_INVISIBLE_TERRAIN_SECOND_FEATURE
HERO_INVISIBLE_TERRAIN_ENUM

HERO_RECRUITMENT_BASE_GOLD
The base amount of gold required to recruit a hero

HERO_CORE_TROOP_DEFEATED_STRENGTH_DOWN
The temp strength modifier to legion members when a legion's core troop is killed

HERO_DIE_CHANCE
HERO_ESCAPE_CHANCE​


2. Civ4BuildingInfos.xml

iFreePopulation
the amount population required to gain the building for free

FreePopulationTrait
the trait required to gain the building for free, used together with the previous one

iWorldWonderCostModifier
bEmperor

does this building require Emperor?

bCityWonder
is this building a City Wonder like Chang An?

PrereqCivic
PrereqBonusNums

the number of specified bonuses the player must own in order to build this building

PrereqInBorderBonus
which bonus the city must has in border range to building the building?

iPrereqPopulation
how many population the city must has to build it?

iPrereqGreatPeopleNum
how many settled GP the city must has?

PrereqInBorderFeature
Which feature the city must has in border?

bStateReligionNotPresent
Does the building require that no state religion is present in the city?

PrereqTrait
What trait must the player possess to build it?

BuildingClassOrPrereqs
What building classes are required as Or prerequisite to build this building?​

3. Civ4LeaderheadInfos.xml

iHasHolyCityAttitudeChange
Attitude modifier toward players who own our official belief's holy city, + or -

iShareWorstEnemyAttitudeChange

iSharePowerfulEnemyAttitudeChange

iSimilarRankAttitudeChange

attitude modifier toward players who is similar in ranking as us

iHighestRankAttitudeChange

4. Civ4TraitInfos.xml

SpecialistYieldChanges
SpecialistCommerceChanges
bBenevolent

TerrainExperienceModifiers

modifier of the amount of XP gained when fighting on a specified terrain type

GlobalSeaPlotYieldChanges
bFamous

PeaceCommerceModifiers

modifier to a commerce type when the team is at peace (warring barbarian not affected)

PeakYieldChanges
IgnoreBuildingDefenseCombatType
bTough

BaseImmigrationChance

Zhang Lu's civ trait, the base chance the city will gain immigration

FeatureYieldChanges
FeatureHealthChanges
FeatureProductionChanges
FeatureGrowthChanges
bDiplomatic
bCelebrity
bPeasant
FreeFirstStrikesUnitClasses

iHurryPopulationModifier

modifier to the hammer gained when hurry population

iHolyCityFreeUnits
when founding belief, how many free units gained?

HolyCityFreeUnitClass
when founding belief, what kind of free unit gained?

bRecluse
ForceDefensiveBonusUnitCombats

PalaceFreeBonus

palace will grant 1 instance of the bonus​

5. Civ4CivilizationInfos.xml

CivilizationTrait

6. Civ4VoteInfos.xml

iNumVotesChange
not used

bDemandHostage

7. Civ4ReligionInfos.xml

bGoodReligion
if this belief support the Han Emperor?

iEmperorGoodReligionAttitudeChange
if a player has this belief, and the emperor player has a good belief, the attitude modifier this player has toward emperor player

iEmperorNonGoodReligionAttitudeChange
if a player has this belief, and the emperor player has a non-good belief, the attitude modifier this player has toward emperor player

iEmperorAttitudeChange
if a player has this belief, the attitude modifier this player has toward emperor player

iEmperorMaintenanceModifier
not used​

8. Civ4CivicInfos.xml

EnableTrait
if a player has this trait, the civic will be enabled regardless of other conditions such as techs​

9. Civ4SpecialistInfos.xml

DefaultUnitClass
What unit class can join as this specialist?

bEmperor
is it emperor?

iGreatPeopleRateModifier
the GP rate modifier in settled city

iThemWarWearinessModifier
other team's war weariness modifier when attacking our team​

10. Civ4InferfaceModeInfos.xml

bSelectLegion
select all legion members on the current plot​

11. Civ4ImprovementInfos.xml

bEmperor (used for emperor's refuge)​

12. Civ4UnitInfos.xml

bCamp
is this unit a camp?

bHero
is this unit a hero?​

13. Civ4PromotionInfos.xml

bHero
is this promotion for heroes?

PromotionUnitCombatType
whether or not this promotion is a unitcombat promotion, and which unitcombat it is

iPromotionUnitCombatLevel
if it's a unitcombat promotion, which level is it

iHeroUnitCombatLevelChange
if it can change a hero's unit combat level, how much can it change

iHeroPromotionStatus
is it promotion core troop only (1), or entire legion (2)

iKillCoreTroopGoldenAgeChance
Triumph
iDestroySurroundingImprovementChance
Demagogue
bDestroyOwnTown
Scorched earth
bNoEnemyWithdrawal
Do-or-Die
bTargetWeakestFirst
Snipe
bDefendFromMarksman
Guard
bIgnoreDefenderTerrain
Nine-Terrain
iMoveAttackStrengthModifier
Flying Wedge
iEnemyAttackNullifyChance
Iron Wall
iVersusEnemyCoreTroopStrengthModifier
Tough
bScatterEnemyStack
Wave Attack
iAttackedCityDefenseChange
Counter
iSameTurnWinStrengthModifier
Regeneration
bSneakAttack
Ambush (not implemented yet)
bStealHeroPromotion
Smart
iSurroundingEnemyHealthChange
Dread
bTargetCoreTroopFirst
Assault
iConvertWarlordChance
Heroic
bDefeatGeneralRestoreMoves
Flying General
iArcherBombardRangeChange
Range
bGoThroughEnemyStack
Raiding (not implemented yet)
iAdditionalAttackChance
Fighting Withdrawal
bDefendAgainstCharge
Defender 4
iStrengthIncrease
Vigorous
Invisible
Stealth 2 (not implemented yet)
SeeInvisible
iBarbarianModifier
Quelling
bCaptureBarbarian
Suppressing
iCaptureEnemyChance
Persuasive
iBetterStrengthEnemyModifie
Indomitable
iTotalWinStrengthThreshold
Strong
iDefenseBuildingEffectModifier
Honor
bBombardingArcher
Far Shot
bSeaLord
Sea Lord
iSeaBattleWinPlunderPercent
Silk Sail
bWinCombatSprawlBarbarian
Yellow Turban I
bWinCombatSpreadCulture
Yellow Turban II
iBesideRiverStrengthModifier
Water Domination
iCoreTroopDefeatedStrengthModifier
Irritation
DefeatCoreTroopStrengthModifier
Encouragement
iUponDeathShareExperienceAmount
Tutor
iTerrifyAttackingEnemyChance
Shock-and-Awe
iNoDeathCombatOddsThreshold
Commander


14. Civ4SanguoCampInfos.xml (new file)

Type
bValid
Unit
BonusYieldChanges
UnitSprawlingBonuses
UnitReplicationBonuses
UnitSprawlingTrait
bCityImpassable

15. Civ4LeaderRelationInfos.xml (new file)

Type
Leader
LeaderAttitudeChanges

16. Civ4HeroInfos.xml (new file)

Type
Unit
DefaultCivilizations
CivilizationLoyalties
iStartingYear
bStartEmployed
Belief
iBeliefStrength
UnitCombatLevels
PotentialUnitCombatLevels
UnitPromotions
Portrait

B. New SDK functions

1. CvCity.h

int getHurryPopulationModifier() const;​

2. CvDLLWidgetData.h

void parseHeroHelp(CvWidgetDataStruct &widgetDataStruct, CvWStringBuffer &szBuffer);
void doPediaHeroJump(CvWidgetDataStruct &widgetDataStruct);
void doRecruitHero(CvWidgetDataStruct &widgetDataStruct);
void parseCheckCoreTroopHelp(CvWidgetDataStruct &widgetDataStruct, CvWStringBuffer &szBuffer);
void doCheckCoreTroop(CvWidgetDataStruct &widgetDataStruct);
void parseCheckMemberTroopHelp(CvWidgetDataStruct &widgetDataStruct, CvWStringBuffer &szBuffer);
void doCheckMemberTroop(CvWidgetDataStruct &widgetDataStruct);
void doFormLegion(CvWidgetDataStruct &widgetDataStruct);
void parseCycleLegionHelp(CvWidgetDataStruct &widgetDataStruct, CvWStringBuffer &szBuffer);
void doCycleLegion(CvWidgetDataStruct &widgetDataStruct);​

3. CvEnums.h

INTERFACEMODE_GO_TO_LEGION,
INTERFACEMODE_BOMBARD,
INTERFACEMODE_ABOMBARD,

WIDGET_PEDIA_JUMP_TO_HERO,
WIDGET_HERO_ACTION,
WIDGET_CHECK_CORE_TROOP,
WIDGET_CHECK_MEMBER_TROOP,
WIDGET_FORM_LEGION,
WIDGET_CYCLE_LEGION,

GAMEOPTION_NO_HERO_DEATH_FROM_COMBAT,
GAMEOPTION_NO_SETTLER,

UNITAI_CAMP,
UNITAI_EMPEROR,
UNITAI_HERO,

MISSION_FORM_LEGION,
MISSION_REGROUP_LEGION,
MISSION_DISMISS_LEGION,
MISSION_QUIT_LEGION,
MISSION_JOIN_LEGION,
MISSION_RBOMBARD,
MISSION_ABOMBARD,

COMMAND_PROMOTION_HERO,

MEMORY_HAS_HOSTAGE,

ACTIONSUBTYPE_PROMOTION_HERO,

enum SanguoCampTypes
{
NO_SANGUOCAMP = -1,
};

enum LeaderRelationTypes
{
NO_LEADERRELATION = -1,
};

enum HeroTypes
{
NO_HERO = -1,
};​

4. CvGame.h

int getHeroDebutStatus(HeroTypes eHero) const;
void setHeroDebutStatus(HeroTypes eHero, int iNewValue);
void changeHeroDebutStatus(HeroTypes eHero, int iChange);
int getCurrentDefaultCivilization(HeroTypes eHero) const;
int getHeroUnitCombatLevel(HeroTypes eHero, UnitCombatTypes eUnitCombat) const;
void setHeroUnitCombatLevel(HeroTypes eHero, UnitCombatTypes eUnitCombat, int iNewValue);
void changeHeroUnitCombatLevel(HeroTypes eHero, UnitCombatTypes eUnitCombat, int iChange);
int getHeroPromotionStatus(HeroTypes eHero, PromotionTypes ePromotion) const;
void setHeroPromotionStatus(HeroTypes eHero, PromotionTypes ePromotion, int iNewValue);
int getHeroUnitID(HeroTypes eHero) const;
void setHeroUnitID(HeroTypes eHero, int iID);
int getHeroExperience(HeroTypes eHero) const;
void setHeroExperience(HeroTypes eHero, int iNewValue);
void changeHeroExperience(HeroTypes eHero, int iChange);
bool canPromoteHero(HeroTypes eHero, PromotionTypes ePromotion) const;
void promoteHero(HeroTypes eHero, PromotionTypes ePromotion);
bool canHeroAcquirePromotion(HeroTypes eHero, PromotionTypes ePromotion) const;
bool isHeroPromotionReady(HeroTypes eHero) const;
void setHeroPromotionReady(HeroTypes eHero, bool bNewValue);
void testHeroPromotionReady(HeroTypes eHero);
bool canHeroAcquirePromotionAny(HeroTypes eHero) const;
int heroExperienceNeeded(HeroTypes eHero) const;
int getHeroLevel(HeroTypes eHero) const;
void setHeroLevel(HeroTypes eHero, int iNewValue);
void changeHeroLevel(HeroTypes eHero, int iChange);
void changeCombatExperienceFromBarbarian(bool bWithdrawal, int iExperience);
void removeGreatPersonBornName(const CvWString& szName);
CvUnit* getHeroUnit(HeroTypes eHero);
void decrementUnitCreatedCount(UnitTypes eIndex);
void decrementUnitClassCreatedCount(UnitClassTypes eIndex);

void doHero();​

5. CvGameAI.h

void AI_promoteHero(HeroTypes eHero);
int AI_heroPromotionValue(HeroTypes eHero, PromotionTypes ePromotion);​

6. CvGameCoreUtils.h

bool PUF_isPotentialLegionMember(const CvUnit* pUnit, int iData1 = -1, int iData2 = -1);
bool PUF_canBeCoreTroop(const CvUnit* pUnit, int iData1 = -1, int iData2 = -1);
bool PUF_isSameLegion(const CvUnit* pUnit, int iData1 = -1, int iData2 = -1);
bool PUF_canAcceptLegionMember(const CvUnit* pUnit, int iData = -1, int iData2 = -1);
bool PUF_isNotTempCheck(const CvUnit* pUnit, int iData = -1, int iData2 = -1);
bool PUF_isTempCheck(const CvUnit* pUnit, int iData = -1, int iData2 = -1);
bool PUF_canJoinLegion(const CvUnit* pUnit, int iData1 = -1, int iData2 = -1);
bool PUF_hasNotMoved(const CvUnit* pUnit, int iData1 = -1, int iData2 = -1);​

7. CvMapGenerator.h

void addUniqueImprovements();​

8. CvPlayer.h

void setHasTrait(TraitTypes eTrait, bool bNewValue);
void changeSpecialistTypeExtraCommerce(SpecialistTypes eIndex1, CommerceTypes eIndex2, int iChange);
int getSpecialistTypeExtraCommerce(SpecialistTypes eIndex1, CommerceTypes eIndex2) const
bool isBenevolent() const;
void setBenevolent(bool bNewValue);
int getTerrainExperienceModifier(TerrainTypes eTerrain) const;
void setTerrainExperienceModifier(TerrainTypes eTerrain, int iModifier);
int getPeakYieldChange(YieldTypes eIndex) const;
void setPeakYieldChange(YieldTypes eIndex, int iNewValue);
bool isTough() const;
void setTough(bool bNewValue);
int getBaseImmigrationChance() const
void changeBaseImmigrationChance(int iChange);
bool isForceDefensiveBonusUnitCombat(UnitCombatTypes eUnitCombat) const;
void setForceDefensiveBonusUnitCombat(UnitCombatTypes eUnitCombat, bool bNewValue);
int getFeatureYieldChange(FeatureTypes eFeature, YieldTypes eYield) const;
void changeFeatureYieldChange(FeatureTypes eFeature, YieldTypes eYield, int iChange);
int getFeatureHealthChange(FeatureTypes eFeature) const;
void changeFeatureHealthChange(FeatureTypes eFeature, int iChange);
int getFeatureProductionChange(FeatureTypes eFeature) const;
void changeFeatureProductionChange(FeatureTypes eFeature, int iChange);
int getFeatureGrowthChange(FeatureTypes eFeature) const;
void changeFeatureGrowthChange(FeatureTypes eFeature, int iChange)
int getLeaderAttitudeChange(LeaderHeadTypes eLeader) const;
void setLeaderAttitudeChange(LeaderHeadTypes eLeader, int iNewValue);
int getVotesModifier() const;
void setVotesModifier(int iNewValue);
void changeVotesModifier(int iChange);
int getRecruitHeroGold(HeroTypes eHero) const;
bool canEverRecruitHero(HeroTypes eHero) const;
bool canRecruitHero(HeroTypes eHero) const;
void recruitHero(HeroTypes eHero);

void doHero();​

9. CvPlayerAI.h

int AI_getHasHolyCityAttitude(PlayerTypes ePlayer);
int AI_getShareWorstEnemyAttitude(PlayerTypes ePlayer);
int AI_getSharePowerfulEnemyAttitude(PlayerTypes ePlayer);
int AI_getEmperorGoodReligionAttitude(PlayerTypes ePlayer);
int AI_getEmperorNonGoodReligionAttitude(PlayerTypes ePlayer);
int AI_getEmperorAttitude(PlayerTypes ePlayer);
int AI_getTargetHeroGold(bool bHistorical, int iHowMany);
int AI_unitTargetMissionAIs(CvUnit* pUnit, MissionAITypes* aeMissionAI, int iMissionAICount, CvSelectionGroup* pSkipSelectionGroup, int iRange, bool bCountHero = false);​

10. CvStruct.h

Struct HeroData;​

11. CvTeam.h

bool isFamous() const;
void setFamous(bool bNewValue);
bool isRecluse() const;
void setRecluse(bool bNewValue);
bool isHasEmperor() const;
void setHasEmperor(bool bNewValue);​

12. CvUnit.h

void updateCombat(bool bQuick = false, CvUnit* pDefender = NULL);
void attack(CvPlot* pPlot, bool bQuick, CvUnit* pDefender = NULL);
void changeExperience(int iChange, int iMax = -1, bool bFromCombat = false, bool bInBorders = false, bool bUpdateGlobal = false, TerrainTypes eTerrain = NO_TERRAIN, bool bGiveHeroXP = true);
int getBonusEffectVal(BonusTypes eBonus) const;
SanguoCampTypes getCampType() const;
HeroTypes getHeroType() const;
void setHeroType(HeroTypes eHero);
bool isPotentialLegionMember(const CvUnit* pUnit) const;
bool canJoinLegion(const CvUnit* pUnit) const
bool canBeCoreTroop(const CvUnit* pUnit) const
int getLegionSize() const;
int getLegionUnitCombatSize(UnitCombatTypes eUnitCombat) const;
bool isHasLegionMember(int iID) const;
HeroTypes getLegionHero() const;
void setLegionHero(HeroTypes eNewHero);
bool canFormLegion(const CvPlot* pPlot = NULL) const;
bool formLegion(bool bRegroup, bool bRegroupDone);
void addLegionMember(int iUnitID);
void deleteLegionMember(int iUnitID);
int popCoreTroop();
void addCoreTroop(int iUnitID);
int getCoreTroop() const;
int getLegionMemberAt(int iIndex) const;
void promoteAsCoreTroop(int iUnitID);
void clearLegionMember();
bool isSameLegion(const CvUnit* pUnit) const;
bool canRegroupLegion(const CvPlot* pPlot = NULL) const;
CvUnit* processLegion(bool bRegroup, bool bPrePromotion, bool bPostPromotion, bool bAttacked);
bool canDismissLegion() const;
bool dismissLegion();
bool canJoinLegion(const CvPlot* pPlot = NULL) const;
bool joinLegion(int iID);
bool canAcceptLegionMember(const CvUnit* pUnit) const;
void backUpLegionMember();
void setTempCheck(bool bNewValue);
bool isNotTempCheck() const;
bool isTempCheck() const;
int getTempListIDAt(int iIndex);
bool canQuitLegion();
bool quitLegion();
int getNextLegionMember(int iID) const;
void processCombatWin(CvUnit* pLoser, bool bAttacking);
void processCombatWithdrawal(CvUnit* pDefender);
int getTempStrengthModifier() const;
void setTempStrengthModifier(int iNewValue);
void changeTempStrengthModifier(int iChange);
float doVictoryInfluence(const CvUnit* pLoserUnit, bool bAttacking);
void influencePlots(const CvPlot* pCentralPlot, PlayerTypes eTargetPlayer, float fLocationMultiplier);
int getSurroundingEnemyHealthChange() const;
void setSurroundingEnemyHealthChange(int iNewValue);
void changeSurroundingEnemyHealthChange(int iChange);
bool canRBombard(const CvPlot* pPlot) const;
bool canBombardAtRanged(const CvPlot* pPlot, int iX, int iY) const;
bool bombardRanged(int iX, int iY, bool sAttack = false);
int getDCMBombRange() const;
bool canArcherBombard(const CvPlot* pPlot) const;
bool canArcherBombardAt(const CvPlot* pPlot, int iX, int iY) const;
bool archerBombard(int iX, int iY, bool sAttack = false);
bool isDefendFromCharge() const;
bool isHiddenNationality() const;
int getAdditionalAttackChance() const;
void stopDelayedDeath();
CvUnitInfo &getHeroUnitInfo(bool bOnlyMember) const;
bool isCoreTroop() const;
void doLegionMemberDefeated(const CvUnit* pEnemy, bool bAttacking, bool bNoSurrender, PlayerTypes ePlayer = NO_PLAYER);
bool isNakedHero() const;
void tempRemoveCoreTroop();​

13. CvUnitAI.h

bool AI_regroupLegion(bool bAddOnly);
void AI_campMove();
bool AI_campInPlotRange(int iRange1, int iRange2, bool bHasTrait, bool bOnBonusPlot, bool* pIsTooFar = NULL);
void AI_emperorMove();
bool AI_RbombardCity();
bool AI_Abombard();
void AI_heroMove();
bool AI_heroDefendArea();
bool AI_heroOffendArea();
bool AI_heroFloatingDefendArea();
bool AI_formLegion();
int AI_coreTroopValue(const CvUnit* pUnit, bool bAttacking);
bool AI_canFormLegionInGroup(const CvSelectionGroup* pTargetGroup, bool bAccountPotential, int iMaxWaitTurns);
bool AI_canFormLegionOnPlot(const CvPlot* pPlot, bool bAccountPotential, int iMaxWaitTurns);​

C. New Python Files

1. Screens

CvLegionScreen.py
SevoPediaHero.py
CvHeroAdvisor.py​

2. Events

CvSanguoEventManager.py
CvTraitEventManager.py
CvWonderEventManager.py​

3. Misc

CvSanguoInterface.py​
 
Top Bottom