class PromotionKeyedInfo
{
public:
PromotionKeyedInfo() : m_bHasPromotion(false),
m_iAfflictOnAttackCount(0),
m_iCureAfflictionCount(0),
m_iAfflictionTurnCount(0),
m_iAfflictionHitCount(0),
m_iAfflictionTolerance(0),
m_iFortitudeModifierTypeAmount(0),
m_iPromotionFreeCount(0),
m_iTrapSetWithPromotionCount(0),
m_iPromotionFromTraitCount(0)
{
}
bool Empty() const
{
return (!m_bHasPromotion &&
m_iAfflictOnAttackCount == 0 &&
m_iCureAfflictionCount == 0 &&
m_iAfflictionTurnCount == 0 &&
m_iAfflictionHitCount == 0 &&
m_iAfflictionTolerance == 0 &&
m_iFortitudeModifierTypeAmount == 0 &&
m_iPromotionFreeCount == 0 &&
m_iTrapSetWithPromotionCount == 0 &&
m_iPromotionFromTraitCount == 0);
}
//TB Combat Mods Begin
bool m_bHasPromotion;
int m_iAfflictOnAttackCount;
int m_iCureAfflictionCount;
int m_iAfflictionTurnCount;
int m_iAfflictionHitCount;
int m_iAfflictionTolerance;
int m_iFortitudeModifierTypeAmount;
int m_iPromotionFreeCount;
int m_iTrapSetWithPromotionCount;
int m_iPromotionFromTraitCount;
};
typedef std::map<PromotionTypes, PromotionKeyedInfo>::iterator PromotionIterator;
class PromotionLineKeyedInfo
{
public:
PromotionLineKeyedInfo() : m_iCureAfflictionTypeCount(0),
m_iAfflictionTurnTypeCount(0),
m_iAfflictionLineCount(0),
m_iAfflictionTypeTolerance(0),
m_iFortitudeModifierAmount(0),
m_iAfflictOnAttackTypeProbability(0),
m_iAfflictOnAttackTypeCount(0),
m_iAfflictOnAttackTypeImmediateCount(0),
m_iAfflictOnAttackTypeAttemptedCount(0),
m_iDistanceAttackCommunicability(0),
m_bValidBuildUp(false),
m_iAfflictOnAttackTypeMeleeCount(0),
m_iAfflictOnAttackTypeDistanceCount(0)
{
}
bool Empty() const
{
return (m_iCureAfflictionTypeCount == 0 &&
m_iAfflictionTurnTypeCount == 0 &&
m_iAfflictionLineCount == 0 &&
m_iAfflictionTypeTolerance == 0 &&
m_iFortitudeModifierAmount == 0 &&
m_iAfflictOnAttackTypeProbability == 0 &&
m_iAfflictOnAttackTypeCount == 0 &&
m_iAfflictOnAttackTypeImmediateCount == 0 &&
m_iAfflictOnAttackTypeAttemptedCount == 0 &&
m_iDistanceAttackCommunicability == 0 &&
!m_bValidBuildUp &&
m_iAfflictOnAttackTypeMeleeCount == 0 &&
m_iAfflictOnAttackTypeDistanceCount == 0);
}
int m_iCureAfflictionTypeCount;
int m_iAfflictionTurnTypeCount;
int m_iAfflictionLineCount;
int m_iAfflictionTypeTolerance;
int m_iFortitudeModifierAmount;
int m_iAfflictOnAttackTypeProbability;
int m_iAfflictOnAttackTypeCount;
int m_iAfflictOnAttackTypeImmediateCount;
int m_iAfflictOnAttackTypeAttemptedCount;
int m_iDistanceAttackCommunicability;
bool m_bValidBuildUp;
int m_iAfflictOnAttackTypeMeleeCount;
int m_iAfflictOnAttackTypeDistanceCount;
};
class TerrainKeyedInfo
{
public:
TerrainKeyedInfo() : m_iTerrainProtected(0),
m_iTerrainDoubleMoveCount(0),
m_iExtraTerrainAttackPercent(0),
m_iExtraTerrainDefensePercent(0),
m_iTerrainWorkPercent(0),
//Team Project (4)
//WorkRateMod
m_iExtraTerrainWorkPercent(0),
m_iExtraWithdrawOnTerrainType(0)
{
}
bool Empty() const
{
return (m_iTerrainProtected == 0 &&
m_iTerrainDoubleMoveCount == 0 &&
m_iExtraTerrainAttackPercent == 0 &&
m_iExtraTerrainDefensePercent == 0 &&
m_iTerrainWorkPercent == 0 &&
m_iExtraTerrainWorkPercent == 0 &&
m_iExtraWithdrawOnTerrainType == 0);
}
int m_iTerrainProtected;
int m_iTerrainDoubleMoveCount;
int m_iExtraTerrainAttackPercent;
int m_iExtraTerrainDefensePercent;
//ls612: Terrain Work Modifiers
int m_iTerrainWorkPercent;
//Team Project (4)
//WorkRateMod
int m_iExtraTerrainWorkPercent;
int m_iExtraWithdrawOnTerrainType;
};
class FeatureKeyedInfo
{
public:
FeatureKeyedInfo() : m_iFeatureDoubleMoveCount(0),
m_iExtraFeatureAttackPercent(0),
m_iExtraFeatureDefensePercent(0),
m_iFeatureWorkPercent(0),
//Team Project (4)
//WorkRateMod
m_iExtraFeatureWorkPercent(0),
m_iExtraWithdrawOnFeatureType(0)
{
}
bool Empty() const
{
return (m_iFeatureDoubleMoveCount == 0 &&
m_iExtraFeatureAttackPercent == 0 &&
m_iExtraFeatureDefensePercent == 0 &&
m_iFeatureWorkPercent == 0 &&
m_iExtraFeatureWorkPercent == 0 &&
m_iExtraWithdrawOnFeatureType == 0);
}
int m_iFeatureDoubleMoveCount;
int m_iExtraFeatureAttackPercent;
int m_iExtraFeatureDefensePercent;
//ls612: Terrain Work Modifiers
int m_iFeatureWorkPercent;
//Team Project (4)
//WorkRateMod
int m_iExtraFeatureWorkPercent;
int m_iExtraWithdrawOnFeatureType;
};
class UnitCombatKeyedInfo
{
public:
UnitCombatKeyedInfo() : m_bHasUnitCombat(false),
m_iExtraUnitCombatModifier(0),
m_iSubCombatTypeCount(0),
m_iOngoingTrainingCount(0),
m_iRemovesUnitCombatTypeCount(0),
m_iExtraFlankingStrengthbyUnitCombatType(0),
m_iExtraWithdrawVSUnitCombatType(0),
m_iExtraPursuitVSUnitCombatType(0),
m_iExtraRepelVSUnitCombatType(0),
m_iExtraKnockbackVSUnitCombatType(0),
m_iExtraPunctureVSUnitCombatType(0),
m_iExtraArmorVSUnitCombatType(0),
m_iExtraDodgeVSUnitCombatType(0),
m_iExtraPrecisionVSUnitCombatType(0),
m_iExtraCriticalVSUnitCombatType(0),
m_iExtraRoundStunVSUnitCombatType(0),
m_iHealUnitCombatTypeVolume(0),
m_iHealUnitCombatTypeAdjacentVolume(0),
m_iHealAsDamage(0),
m_iTrapImmunityUnitCombatCount(0),
m_iTargetUnitCombatCount(0),
m_iExtraTrapDisableUnitCombatType(0),
m_iExtraTrapAvoidanceUnitCombatType(0),
m_iExtraTrapTriggerUnitCombatType(0)
{
}
bool Empty() const
{
return (!m_bHasUnitCombat &&
m_iExtraUnitCombatModifier == 0 &&
m_iSubCombatTypeCount == 0 &&
m_iOngoingTrainingCount == 0 &&
m_iRemovesUnitCombatTypeCount == 0 &&
m_iExtraFlankingStrengthbyUnitCombatType == 0 &&
m_iExtraWithdrawVSUnitCombatType == 0 &&
m_iExtraPursuitVSUnitCombatType == 0 &&
m_iExtraRepelVSUnitCombatType == 0 &&
m_iExtraKnockbackVSUnitCombatType == 0 &&
m_iExtraPunctureVSUnitCombatType == 0 &&
m_iExtraArmorVSUnitCombatType == 0 &&
m_iExtraDodgeVSUnitCombatType == 0 &&
m_iExtraPrecisionVSUnitCombatType == 0 &&
m_iExtraCriticalVSUnitCombatType == 0 &&
m_iExtraRoundStunVSUnitCombatType == 0 &&
m_iHealUnitCombatTypeVolume == 0 &&
m_iHealUnitCombatTypeAdjacentVolume == 0 &&
m_iHealAsDamage == 0 &&
m_iTrapImmunityUnitCombatCount == 0 &&
m_iTargetUnitCombatCount == 0 &&
m_iExtraTrapDisableUnitCombatType == 0 &&
m_iExtraTrapAvoidanceUnitCombatType == 0 &&
m_iExtraTrapTriggerUnitCombatType == 0);
}
bool m_bHasUnitCombat;
int m_iExtraUnitCombatModifier;
int m_iSubCombatTypeCount;
int m_iOngoingTrainingCount;
int m_iRemovesUnitCombatTypeCount;
int m_iExtraFlankingStrengthbyUnitCombatType;
int m_iExtraWithdrawVSUnitCombatType;
int m_iExtraPursuitVSUnitCombatType;
int m_iExtraRepelVSUnitCombatType;
int m_iExtraKnockbackVSUnitCombatType;
int m_iExtraPunctureVSUnitCombatType;
int m_iExtraArmorVSUnitCombatType;
int m_iExtraDodgeVSUnitCombatType;
int m_iExtraPrecisionVSUnitCombatType;
int m_iExtraCriticalVSUnitCombatType;
int m_iExtraRoundStunVSUnitCombatType;
int m_iHealUnitCombatTypeVolume;
int m_iHealUnitCombatTypeAdjacentVolume;
int m_iHealAsDamage;
int m_iTrapImmunityUnitCombatCount;
int m_iTargetUnitCombatCount;
int m_iExtraTrapDisableUnitCombatType;
int m_iExtraTrapAvoidanceUnitCombatType;
int m_iExtraTrapTriggerUnitCombatType;
};