So, being a programmer, I was thinking about how difficult it would be to turn ACs into burst-fire weapons (it makes a nice change from bashing my head against trying to get a very peculiar 32-bit COM DLL running on a 64-bit .Net server application).
As it turns out, it most likely wouldn't be hard at all. In fact, I doubt if it would take a programmer more than half a day's work to get it ready for testing. Here's what I figure:
All weapons have an entry in ItemStats.xml that looks like this:
<Weapon id="1020" name="AutoCannon10">
<Loc nameTag="@AC10" descTag="@AC10_desc" iconTag="StoreIcons\AutoCannon10.dds"/>
<WeaponStats Health="10" slots="7" type="Ballistic" projectileclass="bullet" numFiring="1" damage="10" heatdamage="0" impulse="0.06" heat="3.0" cooldown="2.5" ammoType="AC10Ammo" ammoPerShot="1" minRange="0" longRange="450" maxRange="1350" tons="12" duration="0.0" lifetime="10.0" speed="950" volleydelay="0" gravity="0,0,-9.8" maxDepth="10.0"/>
<EffectList>
<Effect name="Projectile" asset="objects/weapons/autocannon_shell.cgf" scale="1.0" mass="10"/>
<Effect name="ProjectileMaterial" asset="mat_ac10"/>
<Effect name="Muzzle" asset="mech_weapons.autocannon_10.muzzle_flash"/>
<Effect name="MuzzleFP" asset="mech_weapons.autocannon_10.muzzle_flash_fp"/>
<Effect name="Sound:Fire" asset="sounds/weapons:cannon:ac10_fire" float="0.0"/>
<Effect name="Sound:PostFire" asset="sounds/weapons:cannon:ac10_tail" float="0.0"/>
<Effect name="Sound:Reload" asset="sounds/weapons:cannon:ac10_reload" float="1.5"/>
<Effect name="DamageBrush" asset="Textures\\decals\\damage_brushes\\ac_20.tif"/>
<Effect name="DamageBrushType" asset="direct" float="32" float2="32"/>
</EffectList>
<Audio OnDestroyedDialogue="BB_AutoCannon_Destroyed"/>
</Weapon>
The interesting part is in the WeaponStats tag:
<WeaponStats Health="10" slots="7" type="Ballistic" projectileclass="bullet" numFiring="1" damage="10" heatdamage="0" impulse="0.06" heat="3.0" cooldown="2.5" ammoType="AC10Ammo" ammoPerShot="1" minRange="0" longRange="450" maxRange="1350" tons="12" duration="0.0" lifetime="10.0" speed="950" volleydelay="0" gravity="0,0,-9.8" maxDepth="10.0"/>
This tag defines, among other things, the damage, heat, cooldown, and duration of any beam.
To make ACs into burst-fire weapons, two new attributes would need to be added to this tag: burstsize and burstspeed. These would define how many rounds per burst the weapon has, and how fast the weapon fires the burst.
(or they could repurpose two of the tags not used for ACs, like numFiring for burstsize and duration for burstspeed)
For our hypothetical burst-fire AC/10, the WeaponStats tag might look like this:
<WeaponStats Health="10" slots="7" type="Ballistic" projectileclass="bullet" numFiring="1" damage="2.5" heatdamage="0" impulse="0.06" heat="3.0" cooldown="2.1" ammoType="AC10Ammo" ammoPerShot="1" minRange="0" longRange="450" maxRange="1350" tons="12" duration="0.0" burstsize="4" burstspeed="0.1" lifetime="10.0" speed="950" volleydelay="0" gravity="0,0,-9.8" maxDepth="10.0"/>
This would make the AC/10 fire a four-round burst, four projectiles of 2.5 damage each, at 0.1-second intervals (so 0.4 seconds for the whole burst) before going on cooldown for 2.1 seconds (making it have the same DPS as before).
The firing code would then need to be modified to fire the weapon burstsize number of times at burstspeed interval before going on cooldown, instead of just firing once (this is the part that actually would need some programmer time), and that's it.
That's the whole change needed to make ACs burst-fire.
Edited by stjobe, 26 March 2014 - 04:38 PM.