I'm not 100% sure how much of this is going to work, but I'm going to tinker with the idea more until I force it to. The basis is, instead of needing to change weapon types when you invent a new type of munition (or whatever), the weapons upgrade themselves automatically when you refit the ship for a higher generation design. Everything is in formulas stuck in the component. Because studying a new type of munition gives you inherently better damage types, it is automatically changed if you have the proper type of weapon equipped.
Meanwhile, the damage upgrades itself based on not only the level of the weapon, but based on the levels of technology you have achieved. Because, for example, projectile are all based on a particular area of technology, you get damage bonuses based on what you have researched and how far. In this example, it's set to pick the highest level you have achieved and then add the average of all of the other levels. The reasoning behind this is that HEAP Projectiles are made better with advances in regular Armor Piercing ones. Plus, this makes it so that somebody that snagged 50 levels of AP Projectiles early on doesn't feel like they wasted their time when they picked up SNAPHE Projectiles.
Meanwhile, in the To Hit calculation, there is a way to have a specific component grant a to-hit bonus ONLY to specific component types. Because this isn't doable with actual functions in the standard set, the Design_Has_Component_Type is called to make sure that it's there. Then it applies its bonuses to the weapon appropriately, depending on the tech level.
The only time that weapon changes are necessary are when you want to either use an entirely different delivery system (as in, moving from Chemical Projectile Cannons to Coil Guns) or change to a completely different idea of weapon. Even then, however, weapons of similar class gain bonuses in relation to each other. Researching Projectile Weapons will also make your Rail Guns better, for example.
All of this allows for more complexity within the combat system itself through the research system and allows you to specialize your empire further. This also means that, depending on what you researched, your weapons may be drastically different than another empire's that is using a similar class but a different specialization.
As for range, the idea here is that the to-hit of the weapon is based on range, which is reduced by faster projectiles. In this case, as higher-class projectiles are invariably faster, you get a bonus to hit with them. Different classes of weapons that fire projectiles faster (Coil Guns, Rail Guns, and such...chemicals can only make things so fast) get different modifiers to the range.
Again, this has NOT been thoroughly tested. I just wanted to drop the idea in front of anybody that might want it. Actually implementing and testing this is going to be fabulously difficult. Balancing it will be harder. Either way, here it is. Use what you want out of it.
Code:
Name := Chemical Projectile Cannon
Description := Cheap to use and easy to produce. CPCs fire the most advanced type of standard projectile
munition that is available. This will either be Standard, AP, HEAP, SNAPHE, ChaSNAPHE, or Antireality rounds.
Picture Number := 086
Maximum Level := 10000
Tonnage Space Taken Formula := 25 * (0.995 ^ (Get_Empire_Tech_Level("Miniaturization") -1)))
Tonnage Structure Formula := 25 + ([%Level%] / 5)
Cost Minerals Formula := 125 + ([%Level%] * 5) +
(Get_Empire_Tech_Level("Armor-Piercing Projectiles") * 5) +
(Get_Empire_Tech_Level("HEAP Projectiles") * 4) +
(Get_Empire_Tech_Level("SNAPHE Projectiles") * 3) +
(Get_Empire_Tech_Level("ChaSNAPHE Projectiles") * 3) +
(Get_Empire_Tech_Level("Antireality Projectiles") * 4)
Cost Organics Formula := 10 + [%Level%] +
(Get_Empire_Tech_Level("Armor-Piercing Projectiles") / 2) +
(Get_Empire_Tech_Level("HEAP Projectiles")) +
(Get_Empire_Tech_Level("SNAPHE Projectiles") / 2) +
(Get_Empire_Tech_Level("ChaSNAPHE Projectiles") / 3) +
(Get_Empire_Tech_Level("Antireality Projectiles") / 3)
Cost Radioactives Formula := 10 + [%Level%] +
(Get_Empire_Tech_Level("Armor-Piercing Projectiles") / 3) +
(Get_Empire_Tech_Level("HEAP Projectiles") / 2) +
(Get_Empire_Tech_Level("SNAPHE Projectiles") * 2) +
(Get_Empire_Tech_Level("ChaSNAPHE Projectiles") * 3) +
(Get_Empire_Tech_Level("Antireality Projectiles") * 6)
Supply Amount Used Formula := 0
Ordnance Amount Used Formula := 5
Can Be Placed On Vehicle Types := Ship, Base, Satellite, Weapon Platform
Can Be Placed In Ship Sections := Outer Hull
Component Type List := Technological
General Group := Projectile Weapons
Custom Group := 0
Number Of Requirements := 1
Requirements Evaluation Availability := AND
Requirements Evaluation Allows Placement := TRUE
Requirements Evaluation Allows Usage := TRUE
Requirement 1 Description := Empire must have at least one level of Projectile Weapons.
Requirement 1 Formula := Get_Empire_Tech_Level("Projectile Weapons") > ([%Level% - 1)
Number Of Abilities := 2
Ability 1 Type := Crew Quarters
Ability 1 Description := Requires two crew members to operate.
Ability 1 Scope := Space Object
Ability 1 Range Formula := 0
Ability 1 Amount 1 Formula := -2
Ability 1 Amount 2 Formula := 0
Ability 2 Type := Ordnance Storage
Ability 2 Description := Provides storage for [%Amount1%] units of Ordnance.
Ability 2 Scope := Space Object
Ability 2 Range Formula := 0
Ability 2 Amount 1 Formula := 50 + [%Level%]
Ability 2 Amount 2 Formula := 0
Weapon Type := Direct Fire
Weapon Delivery Type := Projectile
Weapon Target Type List := Ship, Base, Satellite, Weapon Platform, Building, Planet, Fighter
Weapon Damage Type Formula := If (Get_Empire_Tech_Level("Antireality Projectiles") >= 1, "Antireality Projectile",
(If (Get_Empire_Tech_Level("ChaSNAPHE Projectiles") >= 1, "ChaSNAPHE Projectile",
(If (Get_Empire_Tech_Level("SNAPHE Projectile") >= 1, "SNAPHE Projectile",
(If (Get_Empire_Tech_Level("HEAP Projectiles") >= 1, "HEAP Projectile",
(If (Get_Empire_Tech_Level("Armor-Piercing Projectiles") >= 1, "Armor-Piercing Projectile", "Projectile"))))))))
Weapon Space At Range Distance Increment := 10
Weapon Space Min Damage At Range := 0
Weapon Space Max Damage At Range := 0
Weapon Space To Hit Modifier At Range := 0
Weapon Space Min Damage Modifier Formula := 5 + [%Level%] +
(Max (Get_Empire_Tech_Level("Armor-Piercing Projectiles"),
(Max (Get_Empire_Tech_Level("HEAP Projectiles"),
(Max (Get_Empire_Tech_Level("SNAPHE Projectiles"),
(Max (Get_Empire_Tech_Level("ChaSNAPHE Projectiles"), (Get_Empire_Tech_Level("Antireality Projectiles"))))))) +
((Get_Empire_Tech_Level("Armor-Piercing Projectiles") + Get_Empire_Tech_Level("HEAP Projectils") + Get_Empire_Tech_Level("SNAPHE
Projecties") + Get_Empire_Tech_Level("ChaSNAPHE Projectiles") + Get_Empire_Tech_Level("Antireality Projectiles")) / 5)
Weapon Space Max Damage Modifier Formula := (5 + [%Level%] +
(Max ((Get_Empire_Tech_Level("Armor-Piercing Projectiles"),
(Max ((Get_Empire_Tech_Level("HEAP Projectiles"),
(Max ((Get_Empire_Tech_Level("SNAPHE Projectiles"),
(Max ((Get_Empire_Tech_Level("ChaSNAPHE Projectiles"), (Get_Empire_Tech_Level("Antireality Projectiles"))))))))))) +
((Get_Empire_Tech_Level("Armor-Piercing Projectiles") + Get_Empire_Tech_Level("HEAP Projectils") + Get_Empire_Tech_Level("SNAPHE
Projecties") + Get_Empire_Tech_Level("ChaSNAPHE Projectiles") + Get_Empire_Tech_Level("Antireality Projectiles")) / 5)) * 2
Weapon Space To Hit Modifier Formula := ([%Level%] / 5) + (If (Design_Has_Component_Type("Tracking Computer") = TRUE, (5 +
(Get_Empire_Tech_Level("Tracking Computers") / 5), 0) - (Max (0, ([%Range%] / (Get_Empire_Tech_Level("Projectile Weapons")
Weapon Reload Rate MS Formula := 4000 * (0.995 ^ (Get_Empire_Tech_Level("Projectile Weapons") - 1)) *
(0.995 ^ (Get_Empire_Tech_Level("Rapid-Fire Projectile Weapons") - 1))
Anyway...this is one of the ideas behind the mod I'm working on. When this pesky Infinitech Mod is finished, I'm hoping that this doesn't absolutely cripple CPUs in processing all of this garbage. We'll see, though.
The different types of munitions are dependent on each other. As in, you need enough development of regular Projectile Weapons to get to Armor-Piercing Projectiles, which leads to HEAP, then SNAPHE, ChaSNAPHE, then Antireality.