1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Fall from Heaven 2: Broader Alignments 2016-10-05

Fall from Heaven 2: Broader Alignments

  1. Grey Fox
    __________________________________________________

    Fall from Heaven 2: Broader Alignments
    by Grey Fox
    version: 1.1
    __________________________________________________

    On demand from the fellow FfH2 modding community (Magister in particular :p),
    I am now releasing my Broader Alignments mod.

    What is Broader Alignments?
    Broader Alignment adds a new Alignment attribute to players, called Broad Alignment.
    It is a value from -511 to +511, where -511 to -171 is Evil, -170 to +170 is Neutral, and 171 to 511 is Good, this makes 341 steps per alignment.
    Each leader then start with a certain base alignment value, and it can then change in multiple ways during the game. By religion, civics, training units, constructing buildings, researching techs, using promotions, casting spells and events.

    The biggest difference between this system and the original is that more actions matter. Religion changes isn't so strict in alignment changes. Not every Neutral player turns Evil by going OO, and not every Evil civ turns Good from going for the Order for example. Some civics change your alignment a bit, and eventually Events can change your alignment as well.

    NEW! (and unrelated to alignments)
    Version 1.1 also includes PyPostCombatLost and PyPostCombatWon on promotions. And PyPerTurn on units.
    Techs can require bonuses (not tested yet though).
    Notes
    Even though Events CAN change your alignment, I haven't added any changes to the events yet,
    there are just so many events. I will do this sometime later, unless someone does it for me first. ;)

    The Global Defines added to the mod determine the range which the Alignment spans. BROADER_ALIGNMENT_EVIL_MIN, BROADER_ALIGNMENT_EVIL_MAX, BROADER_ALIGNMENT_GOOD_MIN and BROADER_ALIGNMENT_GOOD_MAX have been added. The Neutral range is the span between BROADER_ALIGNMENT_EVIL_MIN, and BROADER_ALIGNMENT_GOOD_MIN.
    BROADER_RAZE_BASE_MODIFIER - Used as the base for the population part of the formula. Only counts if population is above 1 or the city have culture.
    BROADER_RAZE_MODIFIER - Counts for every 2 population, same conditions as the Base modifier.
    BROADER_POPRUSH_BASE_MODIFIER - The base for the Alignment modifier when pop rushing.
    BROADER_POPRUSH_MODIFIER - Alignment modifier per population point rushed

    Important Notice: The values I've used for the leaders, religions and civics etc, are just what I felt was right atm and I haven't put much thought into them. Please come with your own suggestions. I also need help with what Events choices need to modify the Alignment.
    INSTALLATION GUIDE

    1) Copy the Fall from Heaven 2 031 folder and rename it properly
    2) Copy all the contents of this mod into the folder, overwrite when it asks
    3) Make a shortcut to the mod or start the mod like you start any other mod. (Or load mod in Civ4 BTS menu)(Or load mod in Civ4 BTS menu)
    Spoiler Changed SDK Files :
    Changed SDK Files
    CvCity.cpp
    CvGameTextMgr.cpp
    CvInfos.cpp
    CvInfos.h
    CvPlayer.cpp
    CvPlayer.h
    CvTeam.cpp
    CvUnit.cpp
    CvUnit.h
    CyInfoInterface1.cpp
    CyInfoInterface3.cpp
    CyPlayer.cpp
    CyPlayer.h
    CyPlayerInterface2.cpp
    CyUnit.cpp
    CyUnit.h

    These files are located in the folder [Changed SDK Files].

    Check the changelog for exposed functions to Python.
    Spoiler Changelog :
    __________________________________________________
    Changelog
    __________________________________________________

    ______________________________________________
    Version 1.1 - Started 04/08/2008

    Notes:
    Conversion to 031e went smoothly.

    Additions:
    1. Added an alignment meter to the interface in CvMainInterface.py.
    2. Added BROADER_RAZE_BASE_MODIFIER to the Defines. Defines how much razing a city changes your alignment.
    3. Added BROADER_RAZE_MODIFIER to the Defines. Defines how much razing a city changes your alignment per every other population point (this*population/2).
    4. Added BROADER_POPRUSH_BASE_MODIFIER to the Defines. Defines how much poprushing changes your alignment.
    5. Added BROADER_POPRUSH_MODIFIER to the Defines. Defines how much poprushing changes your alignment.
    6. Added iAlignmentModifier to CIV4UnitInfos.xml, CIV4PromotionInfos.xml, CIV4SpellInfos.xml, CIV4BuildingInfos.xml, CIV4ProjectInfo.xml, and CIV4TechInfos.xml
    7. Added iPrereqBroadAlignment to CIV4UnitInfos.xml, CIV4PromotionInfos.xml, CIV4SpellInfos.xml, CIV4BuildingInfos.xml, and CIV4ProjectInfo.xml
    8. BROADER_RAZE_BASE_MODIFIER set to -2
    9. BROADER_RAZE_MODIFIER set to -1
    10. BROADER_POPRUSH_BASE_MODIFIER set to -1
    11. BROADER_POPRUSH_MODIFIER set to -1
    12. SPELL_CONSUME_SOUL iAlignmentModifier set to -3
    13. SPELL_FEAST iAlignmentModifier set to -3
    14. Started adding game text.
    15. Added iPrereqBroadAlignment to Civ4TechInfos.xml
    16. Added iFirstToTechAlignmentModifier to Civ4TechInfos.xml
    17. Added BonusPrereq to Civ4TechInfos.xml
    18. Exposed getAlignmentModifier() to python from CvLeaderHeadInfo
    19. Exposed getAlignmentModifier() to python from CvCivicInfo
    20. Exposed getPrereqBroadAlignment() to python from CvBuildingInfo
    21. Exposed getAlignmentModifier() to python from CvBuildingInfo
    22. Exposed getPrereqBroadAlignment() to python from CvTechInfo
    23. Exposed getAlignmentModifier() to python from CvTechInfo
    24. Exposed getFirstToTechAlignmentModifier() to python from CvTechInfo
    25. Exposed getBonusPrereq() to python from CvTechInfo
    26. Exposed getPrereqBroadAlignment() to python from CvPromotionInfo
    27. Exposed getAlignmentModifier() to python from CvPromotionInfo
    28. Exposed getPrereqBroadAlignment() to python from CvUnitInfo
    29. Exposed getAlignmentModifier() to python from CvUnitInfo
    30. Exposed getPrereqBroadAlignment() to python from CvProjectInfo
    31. Exposed getAlignmentModifier() to python from CvProjectInfo
    32. Exposed changeBroadEventModifier(int iChange) to python from CvPlayer
    33. Exposed updateAlignment() to python from CvPlayer
    34. Added PyPostCombatLost and PyPostCombatWon to Civ4PromotionInfos.xml
    35. Added iSpellExtraRange to Civ4PromotionInfos.xml
    36. Added PyPerTurn to Civ4UnitInfos.xml
    37. Exposed int getSpellExtraRange() to python from CvUnit
    38. unloadAll() added before kill() in doTurn() if duration == 0 - as requested by MagisterCultuum

    Python Help
    use pPlayer.changeBroadEventModifier(iChange) to change a players alignment
    use pPlayer.updateAlignment() to update a players alignment on demand (it will update next turn otherwise)

    Changes:
    - Set USE_ON_UPDATE_CALLBACK to 1 in PythonCallbackDefines.xml
    - Put some Screen update code in onUpdate() to show the change in alignment as it changes.
    - LEADER_BASIUM iAlignmentModifier set to 400
    - LEADER_SABATHIEL iAlignmentModifier set to 370
    - LEADER_CAPRIA iAlignmentModifier set to 330
    - LEADER_CARDITH iAlignmentModifier set to 320
    - LEADER_VARN iAlignmentModifier set to 310
    - LEADER_EINION iAlignmentModifier set to 300
    - LEADER_ETHNE iAlignmentModifier set to 290
    - LEADER_GARRIM iAlignmentModifier set to 185
    - LEADER_BEERI iAlignmentModifier set to 185
    - LEADER_ARENDEL iAlignmentModifier set to 180
    - LEADER_ARTURUS iAlignmentModifier set to 150
    - LEADER_KANDROS iAlignmentModifier set to 150
    - LEADER_DAIN iAlignmentModifier set to 60
    - LEADER_RHOANNA iAlignmentModifier set to 50
    - LEADER_FALAMAR iAlignmentModifier set to 40
    - LEADER_AMELANCHIER iAlignmentModifier set to 20
    - LEADER_SANDALPHON iAlignmentModifier set to 10
    - LEADER_CASSIEL iAlignmentModifier set to 0
    - LEADER_THESSA iAlignmentModifier set to -20
    - LEADER_TASUNKE iAlignmentModifier set to -50
    - LEADER_VALLEDIA iAlignmentModifier set to -60
    - LEADER_HANNAH iAlignmentModifier set to -160
    - LEADER_MAHALA iAlignmentModifier set to -175
    - LEADER_AURIC iAlignmentModifier set to -180
    - LEADER_KEELYN iAlignmentModifier set to -190
    - LEADER_SHEELBA iAlignmentModifier set to -200
    - LEADER_CHARADON iAlignmentModifier set to -220
    - LEADER_JONAS iAlignmentModifier set to -230
    - LEADER_PERPENTACH iAlignmentModifier set to -290
    - LEADER_FAERYL iAlignmentModifier set to -300
    - LEADER_FLAUROS iAlignmentModifier set to -310
    - LEADER_ALEXIS iAlignmentModifier set to -330
    - LEADER_OS-GABELLA iAlignmentModifier set to -360
    - LEADER_TEBRYN iAlignmentModifier set to -365
    - LEADER_HYBOREM iAlignmentModifier set to -400
    - LEADER_BARBARIAN iAlignmentModifier set to -245
    ---------------------------------------------------
    - RELIGION_THE_ORDER iAlignmentModifier set to 512
    - RELIGION_OCTOPUS_OVERLORDS iAlignmentModifier set to -256
    - RELIGION_RUNES_OF_KILMORPH iAlignmentModifier set to 256
    - RELIGION_THE_EMPYREAN iAlignmentModifier set to 384
    - RELIGION_COUNCIL_OF_ESUS iAlignmentModifier set to -384
    - RELIGION_ASHEN_VEIL iAlignmentModifier set to -512
    ---------------------------------------------------
    - CIVIC_CONSUMPTION iAlignmentModifier set to -6
    - CIVIC_LIBERTY iAlignmentModifier set to 10
    - CIVIC_CONSUMPTION iAlignmentModifier set to -6
    - CIVIC_SACRIFICE_THE_WEAK iAlignmentModifier set to -32
    - CIVIC_OVERCOUNCIL iAlignmentModifier set to 24
    - CIVIC_UNDERCOUNCIL iAlignmentModifier set to -24
    ---------------------------------------------------
    - BUILDING_ASYLUM iAlignmentModifier set to -5
    - BUILDING_CITY_OF_A_THOUSAND_SLUMS iAlignmentModifier set to -8
    - BUILDING_DEMONS_ALTAR iAlignmentModifier set to -10
    - BUILDING_DUNGEON iAlignmentModifier set to -5
    - BUILDING_DWARF_CAGE iAlignmentModifier set to -5
    - BUILDING_ELF_CAGE iAlignmentModifier set to -5
    - BUILDING_HUMAN_CAGE iAlignmentModifier set to -5
    - BUILDING_ORC_CAGE iAlignmentModifier set to -5
    - BUILDING_HOPE iAlignmentModifier set to 1
    - BUILDING_INFIRMARY iAlignmentModifier set to 1
    - BUILDING_INFERNAL_GRIMOIRE iAlignmentModifier set to -5
    - BUILDING_MERCURIAN_GATE iAlignmentModifier set to 10
    - BUILDING_MOKKAS_CAULDRON iAlignmentModifier set to -5
    - BUILDING_PILLAR_OF_CHAINS iAlignmentModifier set to -10
    - BUILDING_PROPHECY_OF_RAGNAROK iAlignmentModifier set to -15
    - BUILDING_SHRINE_OF_SIRONA iAlignmentModifier set to 10
    - BUILDING_SMUGGLERS_PORT iAlignmentModifier set to -1
    - BUILDING_SOUL_FORGE iAlignmentModifier set to -10
    - BUILDING_TOWER_OF_COMPLACENCY iAlignmentModifier set to -10
    - BUILDING_TOWER_OF_NECROMANCY iAlignmentModifier set to -5
    ---------------------------------------------------
    - TECH_CORRUPTION_OF_SPIRIT iAlignmentModifier set to -10
    - TECH_DECEPTION iAlignmentModifier set to -7
    - TECH_DIVINATION iAlignmentModifier set to 3
    - TECH_HONOR iAlignmentModifier set to 7
    - TECH_INFERNAL_PACT iAlignmentModifier set to -10
    - TECH_INFERNAL_PACT iFirstToTechAlignmentModifier set to -10
    - TECH_MALEVOLENT_DESIGNS iAlignmentModifier set to -10
    - TECH_MESSAGE_FROM_THE_DEEP iAlignmentModifier set to -5
    - TECH_MIND_STAPLING iAlignmentModifier set to -5
    - TECH_NECROMANCY iAlignmentModifier set to -3
    - TECH_ORDERS_FROM_HEAVEN iAlignmentModifier set to 15
    - TECH_POISONS iAlignmentModifier set to -3
    - TECH_RIGHTEOUSNESS iAlignmentModifier set to 15
    - TECH_WAY_OF_THE_EARTHMOTHER iAlignmentModifier set to 5
    - TECH_WAY_OF_THE_WICKED iAlignmentModifier set to -5
    - TECH_WAY_OF_THE_WISE iAlignmentModifier set to 5
    ---------------------------------------------------
    - Notes on units: I was unsure of what to set these too, so I just set em at a relatively low value
    - UNIT_DISEASED_CORPSE iAlignmentModifier set to -1
    - UNIT_PYRE_ZOMBIE iAlignmentModifier set to -1
    - UNIT_DROWN iAlignmentModifier set to -1
    - UNIT_DEATH_KNIGHT iAlignmentModifier set to -1
    - UNIT_DUIN iAlignmentModifier set to -2
    - UNIT_DONAL iAlignmentModifier set to 4
    - UNIT_CORLINDALE iAlignmentModifier set to 5
    - UNIT_CHALID iAlignmentModifier set to 4
    - UNIT_BEAST_OF_AGARES iAlignmentModifier set to -5
    - UNIT_ROSIER iAlignmentModifier set to -4
    - UNIT_ABASHI iAlignmentModifier set to -4
    - UNIT_EIDOLAN iAlignmentModifier set to -4
    - UNIT_EUROBATRES iAlignmentModifier set to 4
    - UNIT_HEMAH iAlignmentModifier set to -2
    - UNIT_MARDERO iAlignmentModifier set to -5
    - UNIT_MARY iAlignmentModifier set to -2
    - UNIT_MESHABBER iAlignmentModifier set to -6
    - UNIT_PALADIN iAlignmentModifier set to 4
    - UNIT_PARAMANDER iAlignmentModifier set to 2
    - UNIT_SHADOWRIDER iAlignmentModifier set to -2
    - UNIT_SPHENER iAlignmentModifier set to 6
    - UNIT_STYGIAN_GUARD iAlignmentModifier set to -2
    - UNIT_TEUTORIX iAlignmentModifier set to 2
    - UNIT_VALIN iAlignmentModifier set to 4
    - Raze formula takes in acount the effect the city has on the AC.
    (Lowers the evil score by the amount the city affects the AC, so if razing the city
    would give you -5 evil, and the city had a +5 AC effect, your alignment won't change)

    ______________________________________________
    Version 1.0 - Started 04/03/2008

    Notes: Started work on Broader Alignments, Broad Alignment is a value from
    -511 to +511, where -511 to -171 is Evil, -170 to +170 is Neutral,
    171 to 511 is Good, this makes 341 steps per alignment

    Even though Events CAN change your alignment, I havn't added any changes
    to the events yet. There are just so many events. I will do this sometime
    later, unless someone does it for me first. ;)

    Additions:
    - Added the iAlignmentModifier attribute to Civ4LeaderHeadInfos.xml, CIV4ReligionInfos.xml,
    CIV4CivicInfos.xml, and to CIV4EventInfos.xml
    - Added the iAlignmentModTowardsNeutral attribute to CIV4EventInfos.xml
    - Added the iPrereqBroadAlignment attribute to CIV4EventTriggerInfos.xml
    The following attributes need to be modified based on input from Kael, the developement team
    and the rest of the FfH2 community. I based them on how the religions change alignments in the current implementation.
    - RELIGION_LEAVES iAlignmentModifier set to 0 (meaning it won't change your alignment)
    - RELIGION_THE_ORDER iAlignmentModifier set to 256
    - RELIGION_OCTOPUS_OVERLORDS iAlignmentModifier set to -128
    - RELIGION_RUNES_OF_KILMORPH iAlignmentModifier set to 128
    - RELIGION_THE_ASHEN_VEIL iAlignmentModifier set to -256
    - RELIGION_THE_EMPYREAN iAlignmentModifier set to 192
    - RELIGION_COUNCIL_OF_ESUS iAlignmentModifier set to -192
    Basically, Leaves won't change your religion, Order and Veil will bring you quite a bit towards
    their alignments, RoK and OO will bring you half as far, and Empyrean and CoE in between.


    With the leaders I set Sabathiel at halfway from neutral to max good, every good leader after
    Sabathiel I reduced with 24, which is 1/7th of 170. And 170 is half of
    341, and each alignment has 341 steps (check Notes above).
    These will also need input, but I based these values on what order the
    civs are placed in the selection list, which obviously is from Good to
    Evil.
    - LEADER_BARBARIAN iAlignmentModifier set to -245 (Same as Sheelba)
    - LEADER_SABATHIEL iAlignmentModifier set to 341
    - LEADER_CAPRIA iAlignmentModifier set to 341
    - LEADER_VARN iAlignmentModifier set to 317
    - LEADER_ETHNE iAlignmentModifier set to 293
    - LEADER_EINION iAlignmentModifier set to 293
    - LEADER_BASIUM iAlignmentModifier set to 269
    - LEADER_GARRIM iAlignmentModifier set to 245
    - LEADER_BEERI iAlignmentModifier set to 245
    - LEADER_CARDITH iAlignmentModifier set to 221
    - LEADER_ARENDEL iAlignmentModifier set to 197
    - LEADER_THESSA iAlignmentModifier set to 161
    - LEADER_AMELANCHIER iAlignmentModifier set to 149
    - LEADER_ARTURUS iAlignmentModifier set to 72 (Should Arturus be closer to good than Kandros?)
    - LEADER_KANDROS iAlignmentModifier set to 72
    - LEADER_SANDALPHON iAlignmentModifier set to 48
    - LEADER_FALAMAR iAlignmentModifier set to 24
    - LEADER_CASSIEL iAlignmentModifier set to 0
    - LEADER_RHOANNA iAlignmentModifier set to -24
    - LEADER_TASUNKE iAlignmentModifier set to -24
    - LEADER_VALLEDIA iAlignmentModifier set to -48
    - LEADER_DAIN iAlignmentModifier set to -48
    - LEADER_HANNAH iAlignmentModifier set to -72 (Should Hannah and Falamar have the exact same alignment, it feels right to have Hannah more towards evil?)
    - LEADER_AURIC iAlignmentModifier set to -197
    - LEADER_CHARADON iAlignmentModifier set to -218
    - LEADER_MAHALA iAlignmentModifier set to -218
    - LEADER_KEELYN iAlignmentModifier set to -239
    - LEADER_PERPENTACH iAlignmentModifier set to -239
    - LEADER_JONAS iAlignmentModifier set to -260
    - LEADER_SHEELBA iAlignmentModifier set to -260
    - LEADER_FAERYL iAlignmentModifier set to -281
    - LEADER_ALEXIS iAlignmentModifier set to -302 (Should Alexis be more evil than Flauros?)
    - LEADER_FLAUROS iAlignmentModifier set to -302
    - LEADER_TEBRYN iAlignmentModifier set to -323
    - LEADER_OS-GABELLA iAlignmentModifier set to -323
    - LEADER_HYBOREM iAlignmentModifier set to -341

    All leaders above follow the pattern I described, somewhat.
    There is also a small gap between Neutral and the other two. But that is as it should
    I think. The odd one in this group is Hannah, which differ quite alot in alignment from
    her leader partner. But I feel I got her alignment down quite right. With Octopus Overlords, she'll
    go Evil, but Falamar won't. Everyone at 24 to -24 won't change from neutral with just
    RoK or OO.

    For Civics I did the following: (As with the others these need input and testing)
    - CIVIC_CONSUMPTION iAlignmentModifier set to -4
    - CIVIC_LIBERTY iAlignmentModifier set to +4
    - CIVIC_SLAVERY iAlignmentModifier set to -16
    - CIVIC_MILITARY_STATE iAlignmentModifier set to -4
    - CIVIC_CONQUEST iAlignmentModifier set to -4
    - CIVIC_SACRIFICE_THE_WEAK iAlignmentModifier set to -24
    - CIVIC_FEND_FOR_THEMSELVES iAlignmentModifier set to -12
    - CIVIC_PROTECT_THE_MEEK iAlignmentModifier set to +12
    - CIVIC_PUBLIC_HEALERS iAlignmentModifier set to +24
    - CIVIC_OVERCOUNCIL iAlignmentModifier set to +16
    - CIVIC_UNDERCOUNCIL iAlignmentModifier set to -16

    Images

    1. alignmentmeter_317.jpg