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
2. Civ4BuildingInfos.xml
3. Civ4LeaderheadInfos.xml
4. Civ4TraitInfos.xml
5. Civ4CivilizationInfos.xml
6. Civ4VoteInfos.xml
7. Civ4ReligionInfos.xml
8. Civ4CivicInfos.xml
9. Civ4SpecialistInfos.xml
10. Civ4InferfaceModeInfos.xml
11. Civ4ImprovementInfos.xml
12. Civ4UnitInfos.xml
13. Civ4PromotionInfos.xml
14. Civ4SanguoCampInfos.xml (new file)
15. Civ4LeaderRelationInfos.xml (new file)
16. Civ4HeroInfos.xml (new file)
B. New SDK functions
1. CvCity.h
2. CvDLLWidgetData.h
3. CvEnums.h
4. CvGame.h
5. CvGameAI.h
6. CvGameCoreUtils.h
7. CvMapGenerator.h
8. CvPlayer.h
9. CvPlayerAI.h
10. CvStruct.h
11. CvTeam.h
12. CvUnit.h
13. CvUnitAI.h
C. New Python Files
1. Screens
2. Events
3. Misc
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
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?
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
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
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
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
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
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
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
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?
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
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
bValid
Unit
BonusYieldChanges
UnitSprawlingBonuses
UnitReplicationBonuses
UnitSprawlingTrait
bCityImpassable
15. Civ4LeaderRelationInfos.xml (new file)
Type
Leader
LeaderAttitudeChanges
Leader
LeaderAttitudeChanges
16. Civ4HeroInfos.xml (new file)
Type
Unit
DefaultCivilizations
CivilizationLoyalties
iStartingYear
bStartEmployed
Belief
iBeliefStrength
UnitCombatLevels
PotentialUnitCombatLevels
UnitPromotions
Portrait
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);
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,
};
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();
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);
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);
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();
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);
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);
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();
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);
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
SevoPediaHero.py
CvHeroAdvisor.py
2. Events
CvSanguoEventManager.py
CvTraitEventManager.py
CvWonderEventManager.py
CvTraitEventManager.py
CvWonderEventManager.py
3. Misc
CvSanguoInterface.py