Gun Range Units

CrazyAce

Prince
Joined
Jun 16, 2004
Messages
396
Location
I'm here, soon to be there.
::Mod is uploaded to the browser::

As I worked on my failed mod; "Unit Tweaks", I decided to just make a gun range mod.

Enjoy!

::XML::

Spoiler :

<GameData>
<Units>
<Update>
<Row>
<Set RangedCombat="80" Range="2" />
<Where Type="UNIT_MECH" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="40" Range="2" />
<Where Type="MODERN_ARMOR" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="60" Range="2" />
<Where Type="UNIT_HELICOPTER_GUNSHIP" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="30" Range="2" />
<Where Type="UNIT_MECHANIZED_INFANTRY" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="25" Range="2" />
<Where Type="UNIT_PARATROOPER" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="30" Range="2" />
<Where Type="UNIT_TANK" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="35" Range="2" />
<Where Type="UNIT_GERMAN_PANZER" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="30" Range="2" />
<Where Type="UNIT_ANTI_TANK_GUN" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="20" Range="2" />
<Where Type="UNIT_INFANTRY" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="22" Range="2" />
<Where Type="UNIT_FRENCH_FOREIGNLEGION" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="20" Range="2" />
<Where Type="UNIT_CAVALRY" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="20" Range="2" />
<Where Type="UNIT_RUSSIAN_COSSACK" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="16" Range="2" />
<Where Type="UNIT_RIFLEMAN" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="12" Range="2" />
<Where Type="UNIT_MUSKETMAN" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangeCombat="12" Range="2" />
<Where Type="UNIT_AMERICAN_MINUTEMAN" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangeCombat="12" Range="2" />
<Where Type="UNIT_FRENCH_MUSKETEER" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
<Row>
<Set RangedCombat="12" Range="2" />
<Where Type="UNIT_OTTOMAN_JANISSARY" />
<PromotionType>PROMOTION_RANGE</PromotionType>
<UnitCombatType>UNITCOMBAT_SIEGE</UnitCombatType>
</Row>
</Update>
<Update>
<Missions>
<Row>
<Set Type="Mission_Range_Attack"/>
<Where UnitType="UNIT_OTTOMAN_JANISSARY UNIT_FRENCH_MUSKETEER UNIT_AMERICAN_MINUTEMAN UNIT_MUSKETMAN UNIT_RIFLEMAN UNIT_RUSSIAN_COSSACK UNIT_CAVALRY
UNIT_FRENCH_FOREIGNLEGION UNIT_INFANTRY UNIT_ANTI_TANK_GUN UNIT_GERMAN_PANZER UNIT_TANK UNIT_PARATROOPER UNIT_MECHANIZED_INFANTRY
UNIT_HELICOPTER_GUNSHIP MODERN_ARMOR UNIT_MECH"/>
</Row>
</Missions>
</Update>
</Units>
</GameData>


::modinfo::

Spoiler :

<?xml version="1.0" encoding="utf-8"?>
<Mod id="68841fb7-6a1a-40a8-8836-5fb4eb595130" version="4">
<Properties>
<Name>Gun Range Units</Name>
<Stability>Beta</Stability>
<Description>[ICON_RANGE_STRENGTH]Gun Range Units will allow units that have guns to bombard that by default initially couldn’t. I changed some units such as Musketman, Rifleman, Infantry, Tanks, Mechanized Unit and the dreaded Death Robot to have bombard ability.[NEWLINE][NEWLINE][COLOR_WARNING_TEXT]Sorry I uploaded the wrong version 4 mod.[NEWLINE]This is the correct version.[ENDCOLOR]</Description>
<Authors>CrazyAce</Authors>
<SpecialThanks>Everyone who supports this mod.</SpecialThanks>
<Homepage>http://forums.civfanatics.com/showthread.php?p=9739126#post9739126</Homepage>
<AffectsSavedGames>1</AffectsSavedGames>
<MinCompatibleSaveVersion>0</MinCompatibleSaveVersion>
<SupportsSinglePlayer>1</SupportsSinglePlayer>
<SupportsMultiplayer>1</SupportsMultiplayer>
<SupportsMac>1</SupportsMac>
<ReloadLandmarkSystem>0</ReloadLandmarkSystem>
<ReloadUnitSystem>0</ReloadUnitSystem>
</Properties>
<Dependencies />
<References />
<Blocks />
<Files>
<File md5="19D7A0D8C70F8C5BBE85FFB1C7D155CC">RangeSQL.sql</File>
<File md5="E369EEE142B71E4F699E03D38FABDEDE">GunUnits.xml</File>
</Files>
<Actions>
<OnModActivated>
<UpdateDatabase>GunUnits.xml</UpdateDatabase>
<UpdateDatabase>RangeSQL.sql</UpdateDatabase>
</OnModActivated>
</Actions>
</Mod>
 
Good question, I never tried. I started over and will have to give it some time to experiment.

:edit:

Take a look at Gedrin Alternate Ranged Combat thread. I believe if this was the case before with default ranged units (archers, ect.) then yea I can see why, but seeing as how gun powder units already include CQB, they should already be able to capture cities.
 
They can't range attack.
I have another code, they can fire but the panels show a data about normal attack.(although they have topics "range attack")


<GameData>
<!--Gunpoweder Units Can Range Attack-->
<Units>
<Update>
<Where Type="UNIT_MUSKETMAN"/>
<Set RangedCombat="8" Range="1"/>
</Update>
<Update>
<Where Type="UNIT_RIFLEMAN"/>
<Set RangedCombat="13" Range="2"/>
</Update>
<Update>
<Where Type="UNIT_INFANTRY"/>
<Set RangedCombat="18" Range="2"/>
</Update>
<Update>
<Where Type="UNIT_MECHANIZED_INFANTRY"/>
<Set RangedCombat="25" Range="2"/>
</Update>
<Update>
<Where Type="UNIT_TANK"/>
<Set RangedCombat="30" Range="3"/>
</Update>
<Update>
<Where Type="UNIT_MODERN_ARMOR"/>
<Set RangedCombat="48" Range="3"/>
</Update>
<Update>
<Where Type="UNIT_AMERICAN_MINUTEMAN"/>
<Set RangedCombat="8" Range="1"/>
</Update>
<Update>
<Where Type="UNIT_FRENCH_MUSKETEER"/>
<Set RangedCombat="10" Range="1"/>
</Update>
<Update>
<Where Type="UNIT_OTTOMAN_JANISSARY"/>
<Set RangedCombat="8" Range="1"/>
</Update>
<Update>
<Where Type="UNIT_GERMAN_PANZER"/>
<Set RangedCombat="36" Range="3"/>
</Update>
<Update>
<Where Type="UNIT_PARATROOPER"/>
<Set RangedCombat="20" Range="2"/>
</Update>
<Update>
<Where Type="UNIT_ANTI_TANK_GUN"/>
<Set RangedCombat="24" Range="3"/>
</Update>
<Update>
<Where Type="UNIT_FRENCH_FOREIGNLEGION"/>
<Set RangedCombat="18" Range="2"/>
</Update>
<Update>
<Where Type="UNIT_CAVALRY"/>
<Set RangedCombat="13" Range="2"/>
</Update>
<Update>
<Where Type="UNIT_RUSSIAN_COSSACK"/>
<Set RangedCombat="13" Range="2"/>
</Update>
<Update>
<Where Type="UNIT_MECH"/>
<Set RangedCombat="50" Range="3"/>
</Update>
<Update>
<Where Type="UNIT_HELICOPTER_GUNSHIP"/>
<Set RangedCombat="20" Range="1"/>
</Update>
</Units>
</GameData>
 
V4 is up

Here is a little interesting tid bit I discovered messing around trying to create new missions for the units:

<Row>
<Set Type="Mission_Range_Attack"/>
<Where UnitType="UNIT_OTTOMAN_JANISSARY UNIT_FRENCH_MUSKETEER UNIT_AMERICAN_MINUTEMAN UNIT_MUSKETMAN UNIT_RIFLEMAN UNIT_RUSSIAN_COSSACK UNIT_CAVALRY
UNIT_FRENCH_FOREIGNLEGION UNIT_INFANTRY UNIT_ANTI_TANK_GUN UNIT_GERMAN_PANZER UNIT_TANK UNIT_PARATROOPER UNIT_MECHANIZED_INFANTRY
UNIT_HELICOPTER_GUNSHIP MODERN_ARMOR UNIT_MECH"/>
</Row>

Basically what I'm trying to show you on the forum is that it looks like you can continue an xml string for as long as you want, and on new lines. Once you reach the edge of your screen press &#8220;enter&#8221; to start a new line and continue on. This eliminates the very long line of code within a segment. I don&#8217;t know if there is a character limit per line, but it wouldn&#8217;t surprise me. And granted this is NOT the best solution, but eh.
 
This is an interesting idea, but even at V5 your mod still doesn't work for me. But I think it can be made to. I'm personally working on a mod that adds the Sniper, essentially a ranged Rifleman. I'm don't think I'll release it yet, if ever, but it works for me and even keeps in the option of direct combat (needed for capturing cities). Here's the most relevant part of the code:
Code:
<Row>
        <Class>UNITCLASS_SNIPER</Class>
        <Type>UNIT_SNIPER</Type>
        <PrereqTech>TECH_RIFLING</PrereqTech>
        <Combat>15</Combat>
        <RangedCombat>20</RangedCombat>
        <Cost>200</Cost>
        <Moves>2</Moves>
        <Range>2</Range>
        <CombatClass>UNITCOMBAT_ARCHER</CombatClass>
        <Domain>DOMAIN_LAND</Domain>
        <DefaultUnitAI>UNITAI_RANGED</DefaultUnitAI>
        <Description>TXT_KEY_UNIT_SNIPER</Description>
        <Civilopedia>TXT_KEY_CIVILOPEDIA_UNITS_RENAISSANCE_RIFLEMEN_TEXT</Civilopedia>
        <Strategy>TXT_KEY_UNIT_RIFLEMAN_STRATEGY</Strategy>
        <Help>TXT_KEY_UNIT_HELP_SNIPER</Help>
        <MilitarySupport>true</MilitarySupport>
        <MilitaryProduction>true</MilitaryProduction>
        <Pillage>true</Pillage>
        <GoodyHutUpgradeUnitClass>UNITCLASS_INFANTRY</GoodyHutUpgradeUnitClass>
        <AdvancedStartCost>30</AdvancedStartCost>
        <XPValueAttack>3</XPValueAttack>
        <XPValueDefense>3</XPValueDefense>
        <Conscription>5</Conscription>
        <UnitArtInfo>ART_DEF_UNIT_RIFLEMAN</UnitArtInfo>
        <UnitFlagIconOffset>47</UnitFlagIconOffset>
        <IconAtlas>UNIT_ATLAS_2</IconAtlas>
        <PortraitIndex>4</PortraitIndex>
</Row>
I suspect the CombatClass line is critical. Another possibility is that I'm circumventing something by adding it as a new unit. When browsing the database I notice all units have the variables CombatLimit and RangedCombatLimit, which can be set to either 0 or 100: 0 if the unit can't do that kind of combat and 100 if it can. If CombatClass doesn't work, you could try forcing RangedCombatLimit to 100 for gun units.
 
Top Bottom