Super Forts Mod
Purpose: To make improvements to improvements, especially forts. Now also including AI code for choke and canal points!Download Here: http://forums.civfanatics.com/downloads.php?do=file&id=17822
Current Version: 1.20
Requires: BTS 3.19
This is my début mod. When I first jumped into modding a couple months ago I started working on a big mod idea. Then I realized it would be better to first make and release a high quality smaller mod or two. There were several changes I wanted to make to improvements, especially forts, for the bigger mod so I decided to make and release a mod with those changes. Thus the “Super Forts” mod was born. This is a XML and SDK mod. I hope you enjoy it and let me know if you find any bugs.
New Fort Rules (or any improvement with the XML tag <bActsAsCity> set to 1):
The AI has been modded to take advantage of these new rules.
Spoiler :
1. When a fort is built in an unowned plot it gives the building player cultural control over the plot it is built in.
2. If you move a unit into an unowned fort, then you will gain cultural control of the fort.
3. If you move a military unit into an enemy fort, then you will gain cultural control over the fort.
4. If another player has more culture in your fort’s plot than you, then the fort will culture flip if you have no defenders. Forts will never flip as long as you have a defender in the fort.
5. Forts can be bombarded to reduce their defenses just like cities. Their defense will also be “repaired” over time like cities. [Edit: As of Version 1.00, whether an improvement is bombardable or not is controlled by an XML tag. Any improvement with a defense can be bombarded if this XML tag is set true, and not just forts.]
6. When you control a fort your culture borders may extend to the plots around it if they are within the range specified by the <iCultureRange> XML tag. Your ownership of the plots around the fort is calculated in the same manner as plots around cities: if more than one player has a city/fort within range of a plot then the one that has the most culture in the plot owns it.
2. If you move a unit into an unowned fort, then you will gain cultural control of the fort.
3. If you move a military unit into an enemy fort, then you will gain cultural control over the fort.
4. If another player has more culture in your fort’s plot than you, then the fort will culture flip if you have no defenders. Forts will never flip as long as you have a defender in the fort.
5. Forts can be bombarded to reduce their defenses just like cities. Their defense will also be “repaired” over time like cities. [Edit: As of Version 1.00, whether an improvement is bombardable or not is controlled by an XML tag. Any improvement with a defense can be bombarded if this XML tag is set true, and not just forts.]
6. When you control a fort your culture borders may extend to the plots around it if they are within the range specified by the <iCultureRange> XML tag. Your ownership of the plots around the fort is calculated in the same manner as plots around cities: if more than one player has a city/fort within range of a plot then the one that has the most culture in the plot owns it.
New stuff for any improvement
I have added several new XML tags that can be used for any improvement. In this mod, all of these new tags have been added to forts, and iCulture has been added to about everything.
Spoiler :
<iCulture> - the amount of
added each turn to the plot the improvement is in for the owner. i.e. forts have <iCulture>2</iCulture> so each turn the owner of a plot with a fort will get 2 culture added to the plot from the fort.
<iCultureRange> - Determines the range of an improvement's cultural influence. If the improvement acts as a city, then this is the range of its borders. An improvement with iCulture will add culture to all plots within its range, but only one that ActsAsCity will extend borders.
<iVisibilityChange> - increases vision range similar to the “sentry” promotion, any unit in a plot with this improvement will be able to see this much farther while in the plot.
<iSeeFrom> - this tag influences how far you can see from a plot. A high enough “see from” value allows units to “see through” terrain/forests/hills to the plots behind them. For example, this is the way units are able to see farther from a hill in the unmodded game.
<bBombardable> - Now any improvement can be bombardable or not. An improvement will be bombardable if this is set to 1, and it has a defense modifier.
<bUpgradeRequiresFortify> - Make improvements upgrade by fortify-ing their plot with units instead of being worked by a city. Note: No improvements currently have this active in the XML.
<iUnique> - This is the range within which you cannot build another of this improvement.

<iCultureRange> - Determines the range of an improvement's cultural influence. If the improvement acts as a city, then this is the range of its borders. An improvement with iCulture will add culture to all plots within its range, but only one that ActsAsCity will extend borders.
<iVisibilityChange> - increases vision range similar to the “sentry” promotion, any unit in a plot with this improvement will be able to see this much farther while in the plot.
<iSeeFrom> - this tag influences how far you can see from a plot. A high enough “see from” value allows units to “see through” terrain/forests/hills to the plots behind them. For example, this is the way units are able to see farther from a hill in the unmodded game.
<bBombardable> - Now any improvement can be bombardable or not. An improvement will be bombardable if this is set to 1, and it has a defense modifier.
<bUpgradeRequiresFortify> - Make improvements upgrade by fortify-ing their plot with units instead of being worked by a city. Note: No improvements currently have this active in the XML.
<iUnique> - This is the range within which you cannot build another of this improvement.
Hold the Fort!
In this section I shall discuss how the new fort rules will change the game. For information on all the things forts could already do before these additions please see this thread: http://forums.civfanatics.com/showthread.php?t=308069
Spoiler :
Thanks to new fort rule #1 you will now be able to get cultural borders in the plot a fort is built in even outside your normal borders. This means if you build a fort on a resource outside your borders, then you will gain that resource! (provided it is connected by road or sea to your cities) This is the main use I see for this new rule.
Claiming a resource outside of normal culture boundaries
There’s not much to rule #2. If there is a fort in a plot with no culture border then move a unit into it and it is yours! Any unit that can move into the fort will work for this, so even a worker, missionary, or spy could do it.
Please note the differences between rules #2 and #3. Rule #2 is for unowned forts and #3 is for forts in an enemy’s culture borders. If you move a unit that “can fight” into an enemy fort, then you gain control of that plot. One great use for this would be to establish a place in enemy territory for your units to heal or launch air strikes from.
With new fort rule #4, I have ensured that you aren’t going to be pushed out of your forts the moment another player has more culture in the plot than you. Thus, you can hold forts deep in enemy territory or surrounded by another player’s culture. Basically it is a simplified city revolt. The way I imagine forts, if you are in control of a fort then there aren’t civilians from other cultures inside the fort with you that could rise up and kick your soldiers out. It would take military action to destroy or force your troops out. However, if you have no troops in a fort and the surrounding populace is mostly a different culture than your own, then they could easily take control of the fort.
[Edit: As of Version 1.00, whether an improvement is bombardable or not is controlled by an XML tag. Any improvement with a defense can be bombarded if this XML tag is set true, and not just forts.] Finally, yes you can now bombard forts to reduce their defenses just like a city thanks to rule #5. With all the new advantages I have given forts in this mod I think they would be unfair without this way to overcome them. It seems to work great in all the tests I have done, but please let me know if you see anything weird happen while you are bombarding with this mod. Forts will slowly regain their defense bonus just like a city does after bombardment. If you are in range to bombard multiple forts, then the fort with the least damage will be bombarded. If you are in range to bombard a city and fort(s), then the city will always be chosen until it has no defense to bombard.
Bombarding a fort
Rule #6 was added in version 1.00. Forts extend borders to all plots within a range specified in the XML with <iCultureRange>. This border extension is done in the same manner as cities, which means big fat cross (BFC) style. If a plot is within range of more than one player's fort or city, then the owner is whichever player has more culture in the plot. There is no difference in the calculation between cities and forts. Improvements besides forts need iCulture to be greater than 0 for iCultureRange to do anything, but a fort can still extend borders if iCulture is set to 0 (the fort will just not add culture to the plots each turn). iCultureRange is set to 1 for forts in the downloadable version, but the screenshot in the spoiler below shows an example of iCultureRange set to 2.
A fort with <iCultureRange> set to 2
Spoiler :

Claiming a resource outside of normal culture boundaries
There’s not much to rule #2. If there is a fort in a plot with no culture border then move a unit into it and it is yours! Any unit that can move into the fort will work for this, so even a worker, missionary, or spy could do it.
Please note the differences between rules #2 and #3. Rule #2 is for unowned forts and #3 is for forts in an enemy’s culture borders. If you move a unit that “can fight” into an enemy fort, then you gain control of that plot. One great use for this would be to establish a place in enemy territory for your units to heal or launch air strikes from.
With new fort rule #4, I have ensured that you aren’t going to be pushed out of your forts the moment another player has more culture in the plot than you. Thus, you can hold forts deep in enemy territory or surrounded by another player’s culture. Basically it is a simplified city revolt. The way I imagine forts, if you are in control of a fort then there aren’t civilians from other cultures inside the fort with you that could rise up and kick your soldiers out. It would take military action to destroy or force your troops out. However, if you have no troops in a fort and the surrounding populace is mostly a different culture than your own, then they could easily take control of the fort.
[Edit: As of Version 1.00, whether an improvement is bombardable or not is controlled by an XML tag. Any improvement with a defense can be bombarded if this XML tag is set true, and not just forts.] Finally, yes you can now bombard forts to reduce their defenses just like a city thanks to rule #5. With all the new advantages I have given forts in this mod I think they would be unfair without this way to overcome them. It seems to work great in all the tests I have done, but please let me know if you see anything weird happen while you are bombarding with this mod. Forts will slowly regain their defense bonus just like a city does after bombardment. If you are in range to bombard multiple forts, then the fort with the least damage will be bombarded. If you are in range to bombard a city and fort(s), then the city will always be chosen until it has no defense to bombard.
Spoiler :

Bombarding a fort
Rule #6 was added in version 1.00. Forts extend borders to all plots within a range specified in the XML with <iCultureRange>. This border extension is done in the same manner as cities, which means big fat cross (BFC) style. If a plot is within range of more than one player's fort or city, then the owner is whichever player has more culture in the plot. There is no difference in the calculation between cities and forts. Improvements besides forts need iCulture to be greater than 0 for iCultureRange to do anything, but a fort can still extend borders if iCulture is set to 0 (the fort will just not add culture to the plots each turn). iCultureRange is set to 1 for forts in the downloadable version, but the screenshot in the spoiler below shows an example of iCultureRange set to 2.
Spoiler :

A fort with <iCultureRange> set to 2
Additional Notes on the XML Tags
Spoiler :
The <iCulture> tag allows improvements to influence the culture of the plot they are in. Keep in mind that this in no way affects the
in your cities. This is the just the culture of the plot itself which is used to determine cultural borders. Every turn, the improvement will add the amount of culture points specified in the tag for whoever owns the plot. Thus, this makes it a little harder for the plot to switch to another culture. If no one owns the plot then no one gets culture from the improvement. I think it makes sense that if your civilization went through the effort of building something in a plot, then that place would become more culturally significant to your civilization and your people would not let it go to another civilization as easily as an unimproved plot. [Should be 0 or a positive number]
<iCultureRange> determines the range of an improvement's cultural influence, and is heavily related to iCulture. For the rest of this paragraph I shall use X to refer to the number that iCulture is set to. What iCultureRange does for forts was covered earlier, but iCultureRange can be used with any improvement. If an improvement does not have this tag or has it set to 0, then they only add X culture to their own plot. An improvement with iCultureRange=1 will add X to their own plot and all adjacent plots. When iCultureRange is greater than 1 things get more interesting. The BFC (big fat cross) style that cities use for their borders is used to determine if a plot is in range of an improvement. An improvement with iCultureRange=2 will add 2X to their own plot and adjacent plots, and X to all plots at a distance of 2. An improvement with iCultureRange=3 will add 3X to their own plot and adjacent plots, 2X to plots at a distance of 2, and X to plots at a distance of 3. And so on... [Should be 0 or a positive number]
<iVisibilityChange> and <iSeeFrom> both influence your units’ vision when in a plot with an improvement with these tags. I was thinking of creating a watchtower improvement for a mod I am planning to help see through the “fog” near your borders, but I realized it would be better to just make this a part of forts. You can use it for other improvements if you want, but forts were the only one I wanted it for. Now the towers of your fort actually act like a tower, and if you put a unit in the fort they can better see the land around them. iVisibilityChange changes your unit’s vision range and iSeeFrom changes what they will be able to “see through” or over. The attached thumbnails below contains some screen shots of what different forts can “see through.” In the examples iVisibilityChange=2 and iSeeFrom=1. [Should be 0 or a positive number]
<iUnique> - As mentioned elsewhere you cannot build two of the same improvement within this range. The range is a normal square instead of a BFC (Big Fat Cross). Also, this currently does not check the improvement's upgrades, so if you used this tag on a village it might not have the desired effect due to the village upgrading to something else.[Should be 0 or a positive number]
The <bBombardable> tag determines if an improvement can be (surprise! surprise!) bombarded to reduce its defenses. However, one other thing is also required for an improvement to be bombardable. The improvement must have a defense modifier or there will be no defense to bombard. [0=off 1(or other numbers)=on]
<bUpgradeRequiresFortify> makes so upgrade progress (on an improvement that can be upgraded) is made only when the the improvement's plot has units that are fortifying. Thus, if this is set the improvement will only upgrade if its plot is fortified for enough turns. A city working the improvement's plot will not help upgrade an improvement with this set, so don't set this if you want improvements that upgrade the original way. The units fortifying the plot must belong to the owner of the plot. If the plot is unowned or owned by another player, then fortifying your units there will not help with the upgrade progress. Also, having multiple units fortify the plot will not speed up the upgrade. [0=off 1(or other numbers)=on]

<iCultureRange> determines the range of an improvement's cultural influence, and is heavily related to iCulture. For the rest of this paragraph I shall use X to refer to the number that iCulture is set to. What iCultureRange does for forts was covered earlier, but iCultureRange can be used with any improvement. If an improvement does not have this tag or has it set to 0, then they only add X culture to their own plot. An improvement with iCultureRange=1 will add X to their own plot and all adjacent plots. When iCultureRange is greater than 1 things get more interesting. The BFC (big fat cross) style that cities use for their borders is used to determine if a plot is in range of an improvement. An improvement with iCultureRange=2 will add 2X to their own plot and adjacent plots, and X to all plots at a distance of 2. An improvement with iCultureRange=3 will add 3X to their own plot and adjacent plots, 2X to plots at a distance of 2, and X to plots at a distance of 3. And so on... [Should be 0 or a positive number]
<iVisibilityChange> and <iSeeFrom> both influence your units’ vision when in a plot with an improvement with these tags. I was thinking of creating a watchtower improvement for a mod I am planning to help see through the “fog” near your borders, but I realized it would be better to just make this a part of forts. You can use it for other improvements if you want, but forts were the only one I wanted it for. Now the towers of your fort actually act like a tower, and if you put a unit in the fort they can better see the land around them. iVisibilityChange changes your unit’s vision range and iSeeFrom changes what they will be able to “see through” or over. The attached thumbnails below contains some screen shots of what different forts can “see through.” In the examples iVisibilityChange=2 and iSeeFrom=1. [Should be 0 or a positive number]
<iUnique> - As mentioned elsewhere you cannot build two of the same improvement within this range. The range is a normal square instead of a BFC (Big Fat Cross). Also, this currently does not check the improvement's upgrades, so if you used this tag on a village it might not have the desired effect due to the village upgrading to something else.[Should be 0 or a positive number]
The <bBombardable> tag determines if an improvement can be (surprise! surprise!) bombarded to reduce its defenses. However, one other thing is also required for an improvement to be bombardable. The improvement must have a defense modifier or there will be no defense to bombard. [0=off 1(or other numbers)=on]
<bUpgradeRequiresFortify> makes so upgrade progress (on an improvement that can be upgraded) is made only when the the improvement's plot has units that are fortifying. Thus, if this is set the improvement will only upgrade if its plot is fortified for enough turns. A city working the improvement's plot will not help upgrade an improvement with this set, so don't set this if you want improvements that upgrade the original way. The units fortifying the plot must belong to the owner of the plot. If the plot is unowned or owned by another player, then fortifying your units there will not help with the upgrade progress. Also, having multiple units fortify the plot will not speed up the upgrade. [0=off 1(or other numbers)=on]
Note to Modders
Feel free to use this mod as a part of your own mods. I only ask that you mention me and the mod’s title in your “credits.” All of my XML schema and SDK changes have been marked with a “Super Forts” comment. I have also tried to tag them with sub-categories if you only want to merge a certain part.
See this post for info on how my choke point code works.
The source code for the mod comes with the installation. There is not a separate download for it. There will be a "ChangedSDKFiles" folder with the .cpp and .h files I modified.