Page 1 of 1

Lua Script to "Modernize" S-400

Posted: Fri Jul 08, 2022 8:47 pm
by KilianJay
Unfortunately, information sharing between S-400 units and spread out radar and ESM units is not available in the game. So while we wait for something like a Baikal-E command post mount I thought I write a little script to modify existing units to better represent the equipment and capabilities of the system today. I also added the two newer and smaller missiles (9M96 and 9M96D) since the large missiles with very long range are to be rarely used in reality (as far as I know).

Execute the following lua to modify all S-400 units of your site (actually, only the SA-21a/b ones... and only the Russian version :D ).

Code: Select all

function sensormissing(dbidnr)
    local sens = 1
    for m,n in pairs(unit.sensors) do
        if n.sensor_dbid == dbidnr then sens = nil end
    end
    return sens
end

function countmag(dbidnr)
    local mcount = 0
    for u,v in pairs(unit.magazines) do
        if v.mag_dbid  == dbidnr then mcount = mcount + 1 end
    end
    return mcount
end

for i,l in pairs(VP_GetSides()) do
    if ScenEdit_GetSideIsHuman(l.guid) then side = l.name end
end

local side = VP_GetSide({Side = side})
local u = side:unitsBy('Facility', 6000, 5001)


for i,l in pairs(u) do

    unit = ScenEdit_GetUnit({guid=l.guid})

    if unit.dbid == 1937 then

		for c,d in pairs(unit.mounts) do 
		ScenEdit_UpdateUnit({guid=unit.guid ,mode='remove_mount',dbid=d.mount_dbid}) 
		end

		ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=1857, arc_mount={'360'}})
		ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=2362, arc_mount={'360'}})

		for i=1,3,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=485, arc_mount={'360'}})
		end

		for i=1,1,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=2284, arc_mount={'360'}})
		end

		for i=1,2,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=1856, arc_mount={'360'}})
		end

		for i=1,5,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=2412, arc_mount={'360'}})
		end
		
		for i=1,1,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=2726, arc_mount={'360'}})
		end
		
		for i=1,1,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=2649, arc_mount={'360'}})
		end
		
		if sensormissing(3819) then ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_sensor', dbid=3819, arc_detect = {'360'}, arc_track ={'360'}}) end
		if sensormissing(5975) then ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_sensor', dbid=5975, arc_detect = {'360'}, arc_track ={'360'}}) end
		if sensormissing(5568) then ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_sensor', dbid=5568, arc_detect = {'360'}, arc_track ={'360'}}) end
		if sensormissing(3822) then ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_sensor', dbid=3822, arc_detect = {'360'}, arc_track ={'360'}}) end

		
		mnts_n = {}
        	mnts_guid = {}
		mntsi = 1
		
		for u,v in pairs(unit.mounts) do
			if v.mount_dbid == 2412 then 
            			mnts_guid[mntsi]=v.mount_guid
           			mnts_n[mntsi]= u
           			mntsi=mntsi+1 
            		end
		end
		
		for i=1,3,1 do
			ScenEdit_UpdateUnit({guid = unit.guid, mode = 'remove_weapon', mountid=mnts_guid[i], weaponid=unit.mounts[mnts_n[i]].mount_weapons[1].wpn_guid})
			ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_weapon', mountid=mnts_guid[i], dbid=6641})
		end


		for a,b in pairs(unit.magazines) do 
			ScenEdit_UpdateUnit({guid = unit.guid, mode = 'remove_magazine', dbid=b.mag_dbid})
		end		

		ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_magazine', dbid=1371})
		ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_magazine', dbid=1363})
		ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_magazine', dbid=1389})

		ScenEdit_AddWeaponToUnitMagazine({guid = unit.guid, mag_guid  = unit.magazines[1].mag_guid, wpn_dbid = 3220, number = 8, maxcap = 12})
		ScenEdit_AddWeaponToUnitMagazine({guid = unit.guid, mag_guid  = unit.magazines[1].mag_guid, wpn_dbid = 2695, number = 60, maxcap = 60})
		ScenEdit_AddWeaponToUnitMagazine({guid = unit.guid, mag_guid  = unit.magazines[2].mag_guid, wpn_dbid = 2103, number = 8})
		ScenEdit_AddWeaponToUnitMagazine({guid = unit.guid, mag_guid  = unit.magazines[2].mag_guid, wpn_dbid = 2104, number = 28, remove = true})
		ScenEdit_AddWeaponToUnitMagazine({guid = unit.guid, mag_guid  = unit.magazines[3].mag_guid, wpn_dbid = 3220, number = 16, remove = true})
    end

    if unit.dbid == 2029 then

		for c,d in pairs(unit.mounts) do 
		ScenEdit_UpdateUnit({guid=unit.guid ,mode='remove_mount',dbid=d.mount_dbid}) 
		end

		ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=1857, arc_mount={'360'}})
		ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=2362, arc_mount={'360'}})

		for i=1,3,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=485, arc_mount={'360'}})
		end

		for i=1,1,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=2284, arc_mount={'360'}})
		end

		for i=1,3,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=1856, arc_mount={'360'}})
		end

		for i=1,8,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=2412, arc_mount={'360'}})
		end
		
		for i=1,1,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=2726, arc_mount={'360'}})
		end
		
		for i=1,1,1 do 
			ScenEdit_UpdateUnit({guid=unit.guid ,mode='add_mount',dbid=2649, arc_mount={'360'}})
		end
		
		if sensormissing(3819) then ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_sensor', dbid=3819, arc_detect = {'360'}, arc_track ={'360'}}) end
		if sensormissing(5975) then ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_sensor', dbid=5975, arc_detect = {'360'}, arc_track ={'360'}}) end
		if sensormissing(5568) then ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_sensor', dbid=5568, arc_detect = {'360'}, arc_track ={'360'}}) end
		if sensormissing(3822) then ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_sensor', dbid=3822, arc_detect = {'360'}, arc_track ={'360'}}) end

		
		mnts_n = {}
        	mnts_guid = {}
		mntsi = 1
		
		for u,v in pairs(unit.mounts) do
			if v.mount_dbid == 2412 then 
            			mnts_guid[mntsi]=v.mount_guid
            			mnts_n[mntsi]= u
            			mntsi=mntsi+1 
            		end
		end
		
		for i=1,4,1 do
			ScenEdit_UpdateUnit({guid = unit.guid, mode = 'remove_weapon', mountid=mnts_guid[i], weaponid=unit.mounts[mnts_n[i]].mount_weapons[1].wpn_guid})
			ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_weapon', mountid=mnts_guid[i], dbid=6641})
		end


		for a,b in pairs(unit.magazines) do 
			ScenEdit_UpdateUnit({guid = unit.guid, mode = 'remove_magazine', dbid=b.mag_dbid})
		end		

		ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_magazine', dbid=1371})
		ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_magazine', dbid=1363})
		ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_magazine', dbid=1389})
		ScenEdit_UpdateUnit({guid = unit.guid, mode = 'add_magazine', dbid=1389})


		ScenEdit_AddWeaponToUnitMagazine({guid = unit.guid, mag_guid  = unit.magazines[1].mag_guid, wpn_dbid = 3220, number = 12, maxcap = 12})
		ScenEdit_AddWeaponToUnitMagazine({guid = unit.guid, mag_guid  = unit.magazines[1].mag_guid, wpn_dbid = 2695, number = 72, maxcap = 72})
		ScenEdit_AddWeaponToUnitMagazine({guid = unit.guid, mag_guid  = unit.magazines[2].mag_guid, wpn_dbid = 2103, number = 12})
		ScenEdit_AddWeaponToUnitMagazine({guid = unit.guid, mag_guid  = unit.magazines[2].mag_guid, wpn_dbid = 2104, number = 28, remove = true})
		ScenEdit_AddWeaponToUnitMagazine({guid = unit.guid, mag_guid  = unit.magazines[4].mag_guid, wpn_dbid = 3220, number = 36, remove = true})
    end
end
The fast reloading for some of the 9M96D missiles is intentional to account for quad loading of containers IRL. The numbers don't add up otherwise. For 9M96 the database only allows fast reloads at the moment.

For additional realism don't forget to place some Pantsirs right next to the battery and at least another S-400 battery within a 20nm radius.

CAUTION: The amount of large missiles with very long range is greatly reduced. They are very expensive. Set WRA for those missiles carefully to only use them effectively against high value targets.

Have fun defending / attacking! :P

Re: Lua Script to "Modernize" S-400

Posted: Fri Jul 15, 2022 8:13 pm
by WillpowerDisturbance
I like your version of the S-400 a lot more than the games default units. It is definitely more realistic capability and missile wise.

Re: Lua Script to "Modernize" S-400

Posted: Fri Jul 15, 2022 11:33 pm
by KilianJay
These are the WRA settings I'm using for the different Missiles. So far they seem to work pretty well.

Code: Select all

  <!--SA-21a Growler [48N6DM]-->
    <Weapon_2103>
      <!--Aircraft_5th_Generation-->
      <WeaponTarget_2001>
        <WeaponQty>1</WeaponQty>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2001>
      <!--Aircraft_4th_Generation-->
      <WeaponTarget_2002>
        <WeaponQty>1</WeaponQty>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2002>
      <!--Air_Contact_Unknown_Type-->
      <WeaponTarget_1999>
        <FiringRange>0</FiringRange>
      </WeaponTarget_1999>
      <!--Aircraft_Unspecified-->
      <WeaponTarget_2000>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2000>
      <!--Aircraft_MicroUAV-->
      <WeaponTarget_2032>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2032>
      <!--Helicopter_Unspecified-->
      <WeaponTarget_2100>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2100>
      <!--Aircraft_Tanker-->
      <WeaponTarget_2033>
        <FiringRange>125</FiringRange>
      </WeaponTarget_2033>
      <!--Guided_Weapon_Unspecified-->
      <WeaponTarget_2200>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2200>
      <!--Guided_Weapon_Subsonic_Sea_Skimming-->
      <WeaponTarget_2202>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2202>
      <!--Guided_Weapon_Supersonic_Sea_Skimming-->
      <WeaponTarget_2201>
        <WeaponQty>1</WeaponQty>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2201>
      <!--Guided_Weapon_Subsonic-->
      <WeaponTarget_2204>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2204>
      <!--Guided_Weapon_Supersonic-->
      <WeaponTarget_2203>
        <WeaponQty>1</WeaponQty>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2203>
      <!--Guided_Weapon_Ballistic-->
      <WeaponTarget_2211>
        <FiringRange>125</FiringRange>
      </WeaponTarget_2211>
      <!--Aircraft_AEW-->
      <WeaponTarget_2031>
        <FiringRange>125</FiringRange>
      </WeaponTarget_2031>
      <!--Aircraft_Low_Perf_Recon_EW-->
      <WeaponTarget_2023>
        <FiringRange>125</FiringRange>
      </WeaponTarget_2023>
      <!--Aircraft_Medium_Perf_Recon_EW-->
      <WeaponTarget_2022>
        <FiringRange>125</FiringRange>
      </WeaponTarget_2022>
      <!--Aircraft_High_Perf_Recon_EW-->
      <WeaponTarget_2021>
        <FiringRange>100</FiringRange>
      </WeaponTarget_2021>
      <!--Aircraft_Low_Perf_Bombers-->
      <WeaponTarget_2013>
        <FiringRange>125</FiringRange>
      </WeaponTarget_2013>
      <!--Aircraft_Medium_Perf_Bombers-->
      <WeaponTarget_2012>
        <FiringRange>125</FiringRange>
      </WeaponTarget_2012>
      <!--Aircraft_High_Perf_Bombers-->
      <WeaponTarget_2011>
        <FiringRange>125</FiringRange>
      </WeaponTarget_2011>
      <!--Aircraft_3rd_Generation-->
      <WeaponTarget_2003>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2003>
      <!--Aircraft_Less_Capable-->
      <WeaponTarget_2004>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2004>
    </Weapon_2103>
    <!--SA-21b Growler [40N6]-->
    <Weapon_2104>
      <!--Air_Contact_Unknown_Type-->
      <WeaponTarget_1999>
        <FiringRange>0</FiringRange>
      </WeaponTarget_1999>
      <!--Aircraft_5th_Generation-->
      <WeaponTarget_2001>
        <WeaponQty>1</WeaponQty>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2001>
      <!--Aircraft_4th_Generation-->
      <WeaponTarget_2002>
        <WeaponQty>1</WeaponQty>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2002>
      <!--Aircraft_Unspecified-->
      <WeaponTarget_2000>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2000>
      <!--Aircraft_MicroUAV-->
      <WeaponTarget_2032>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2032>
      <!--Helicopter_Unspecified-->
      <WeaponTarget_2100>
        <WeaponQty>0</WeaponQty>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2100>
      <!--Guided_Weapon_Unspecified-->
      <WeaponTarget_2200>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2200>
      <!--Guided_Weapon_Supersonic-->
      <WeaponTarget_2203>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2203>
      <!--Guided_Weapon_Ballistic-->
      <WeaponTarget_2211>
        <FiringRange>215</FiringRange>
      </WeaponTarget_2211>
      <!--Aircraft_High_Perf_Bombers-->
      <WeaponTarget_2011>
        <FiringRange>200</FiringRange>
      </WeaponTarget_2011>
      <!--Aircraft_Medium_Perf_Bombers-->
      <WeaponTarget_2012>
        <FiringRange>200</FiringRange>
      </WeaponTarget_2012>
      <!--Aircraft_Low_Perf_Bombers-->
      <WeaponTarget_2013>
        <FiringRange>200</FiringRange>
      </WeaponTarget_2013>
      <!--Aircraft_High_Perf_Recon_EW-->
      <WeaponTarget_2021>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2021>
      <!--Aircraft_AEW-->
      <WeaponTarget_2031>
        <FiringRange>200</FiringRange>
      </WeaponTarget_2031>
      <!--Aircraft_Tanker-->
      <WeaponTarget_2033>
        <FiringRange>200</FiringRange>
      </WeaponTarget_2033>
      <!--Aircraft_3rd_Generation-->
      <WeaponTarget_2003>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2003>
      <!--Aircraft_Less_Capable-->
      <WeaponTarget_2004>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2004>
      <!--Aircraft_Medium_Perf_Recon_EW-->
      <WeaponTarget_2022>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2022>
      <!--Aircraft_Low_Perf_Recon_EW-->
      <WeaponTarget_2023>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2023>
      <!--Guided_Weapon_Subsonic_Sea_Skimming-->
      <WeaponTarget_2202>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2202>
      <!--Guided_Weapon_Supersonic_Sea_Skimming-->
      <WeaponTarget_2201>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2201>
      <!--Guided_Weapon_Subsonic-->
      <WeaponTarget_2204>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2204>
    </Weapon_2104>
    <!--SA-26 [9M96D]-->
    <Weapon_3220>
      <!--Aircraft_4th_Generation-->
      <WeaponTarget_2002>
        <WeaponQty>1</WeaponQty>
        <FiringRange>40</FiringRange>
      </WeaponTarget_2002>
      <!--Aircraft_5th_Generation-->
      <WeaponTarget_2001>
        <WeaponQty>1</WeaponQty>
        <FiringRange>35</FiringRange>
      </WeaponTarget_2001>
      <!--Helicopter_Unspecified-->
      <WeaponTarget_2100>
        <FiringRange>35</FiringRange>
      </WeaponTarget_2100>
      <!--Aircraft_MicroUAV-->
      <WeaponTarget_2032>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2032>
      <!--Air_Contact_Unknown_Type-->
      <WeaponTarget_1999>
        <FiringRange>0</FiringRange>
      </WeaponTarget_1999>
      <!--Aircraft_High_Perf_Bombers-->
      <WeaponTarget_2011>
        <FiringRange>50</FiringRange>
      </WeaponTarget_2011>
      <!--Aircraft_High_Perf_Recon_EW-->
      <WeaponTarget_2021>
        <FiringRange>40</FiringRange>
      </WeaponTarget_2021>
      <!--Aircraft_Medium_Perf_Recon_EW-->
      <WeaponTarget_2022>
        <FiringRange>50</FiringRange>
      </WeaponTarget_2022>
      <!--Guided_Weapon_Supersonic_Sea_Skimming-->
      <WeaponTarget_2201>
        <WeaponQty>1</WeaponQty>
      </WeaponTarget_2201>
      <!--Guided_Weapon_Supersonic-->
      <WeaponTarget_2203>
        <WeaponQty>1</WeaponQty>
      </WeaponTarget_2203>
    </Weapon_3220>
    <!--SA-N-21c Growler [9M96]-->
    <Weapon_2695>
      <!--Aircraft_5th_Generation-->
      <WeaponTarget_2001>
        <WeaponQty>1</WeaponQty>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2001>
      <!--Aircraft_4th_Generation-->
      <WeaponTarget_2002>
        <WeaponQty>1</WeaponQty>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2002>
      <!--Guided_Weapon_Subsonic_Sea_Skimming-->
      <WeaponTarget_2202>
        <WeaponQty>2</WeaponQty>
        <ShooterQty>-99</ShooterQty>
      </WeaponTarget_2202>
      <!--Guided_Weapon_Supersonic_Sea_Skimming-->
      <WeaponTarget_2201>
        <ShooterQty>-99</ShooterQty>
      </WeaponTarget_2201>
      <!--Guided_Weapon_Supersonic-->
      <WeaponTarget_2203>
        <ShooterQty>-99</ShooterQty>
      </WeaponTarget_2203>
      <!--Helicopter_Unspecified-->
      <WeaponTarget_2100>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2100>
      <!--Air_Contact_Unknown_Type-->
      <WeaponTarget_1999>
        <FiringRange>0</FiringRange>
      </WeaponTarget_1999>
    </Weapon_2695>

Re: Lua Script to "Modernize" S-400

Posted: Sat Jul 16, 2022 9:36 am
by WillpowerDisturbance
I'll give it a try. Thanks!

Re: Lua Script to "Modernize" S-400

Posted: Sat Jul 23, 2022 12:53 pm
by bsq
Excellent script, however, I noticed some issues.

I loaded it over a test scenario, in which I have the C Ring (Moscow AD network) modelled. It took away almost all of the Grendel missiles.

When I asked repeatedly for 12 TEL units for S-400 and S-300P, the case I cited was the C-Ring. It uses (exclusively) 12 TEL setups and taller masts for the Gravestone and Cheeseboard. It also mounts the Big Bird BMR on tall lifting cradles to improve detection. Your script taking away almost all the Grendels for the 12 TEL sites is not overly realistic. These will have the big missiles (40N6 and 48N6DM)

Now the setups at key airfields and defensive sites outside of Moscow and St P, use 8 TELS systems. Here your script is excellent in striking a balance between the various layers the S-400 is supposed to have. There is still a but here too. The sites now have 11 TELS equivalents, it should be 8.

So bottom line is:

May I suggest steering away from modifiying 12 TELS units, they should only be used in the C Ring and around St Petersburg (I can show you where nearly every site is on GE and no matter what the date, post S-300P intro, this arrangement has always been the case).

When modifying 8 TEL Russian S-400, then may I suggest reducing the number of equivalent TELS to just 8. This would likely mean a 5 x 4 (Big Tube TELS) plus 3 TELS equivalent of 9M96* which would be 4 TELS (48 RtF missiles).

The doctrine for the WRA on the other hand is a true work of art, thank you

Re: Lua Script to "Modernize" S-400

Posted: Mon Aug 01, 2022 7:56 pm
by Craigkn
Sorry for the trivial question - do you have a code example that I can follow to load the WRA settings above - or is it a manual process?

Re: Lua Script to "Modernize" S-400

Posted: Mon Aug 01, 2022 8:21 pm
by bsq
I had to do it manually. Seems that this XML scheme can only be loaded in the pro version. It is still a good set of WRA suggestions to make the weapon system work without burning out all the 'big sticks' first.

Re: Lua Script to "Modernize" S-400

Posted: Tue Aug 02, 2022 3:28 am
by Craigkn
Trivial question 2: how do I interpret the xml? What is firing range "0", "-99", etc. I can gather that the other values are miles in NM, just not sure about the zero and negative values?

Re: Lua Script to "Modernize" S-400

Posted: Tue Aug 02, 2022 4:49 pm
by Craigkn
I need to test this later - but I noticed that the Doctrine window had "import" and "export" options at the bottom. Perhaps we can create the WRA as an importable file for future use?

In the mean time, I set WRA to 75% for the S-400's, with the exception of targeting AWACS aircraft at maximum range.

Re: Lua Script to "Modernize" S-400

Posted: Tue Aug 02, 2022 5:54 pm
by KilianJay
Craigkn wrote: Mon Aug 01, 2022 7:56 pm Sorry for the trivial question - do you have a code example that I can follow to load the WRA settings above - or is it a manual process?
Hi!

You can copy the lines into any doctrine template. I you don't have one: just export your settings in the doctrine window, copy the lines into the exported file (between </WRA> </WRA>) and then load it again in the game. No Pro version needed.

In the meantime i tweaked some of the settings. I can't remember which ones so I just post it again:

Code: Select all

 <!--SA-21a Growler [48N6DM]-->
    <Weapon_2103>
      <!--Aircraft_5th_Generation-->
      <WeaponTarget_2001>
        <WeaponQty>1</WeaponQty>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2001>
      <!--Aircraft_4th_Generation-->
      <WeaponTarget_2002>
        <WeaponQty>1</WeaponQty>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2002>
      <!--Air_Contact_Unknown_Type-->
      <WeaponTarget_1999>
        <FiringRange>0</FiringRange>
      </WeaponTarget_1999>
      <!--Aircraft_Unspecified-->
      <WeaponTarget_2000>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2000>
      <!--Aircraft_MicroUAV-->
      <WeaponTarget_2032>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2032>
      <!--Helicopter_Unspecified-->
      <WeaponTarget_2100>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2100>
      <!--Aircraft_Tanker-->
      <WeaponTarget_2033>
        <FiringRange>115</FiringRange>
      </WeaponTarget_2033>
      <!--Guided_Weapon_Unspecified-->
      <WeaponTarget_2200>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2200>
      <!--Guided_Weapon_Subsonic_Sea_Skimming-->
      <WeaponTarget_2202>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2202>
      <!--Guided_Weapon_Supersonic_Sea_Skimming-->
      <WeaponTarget_2201>
        <WeaponQty>1</WeaponQty>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2201>
      <!--Guided_Weapon_Subsonic-->
      <WeaponTarget_2204>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2204>
      <!--Guided_Weapon_Supersonic-->
      <WeaponTarget_2203>
        <WeaponQty>1</WeaponQty>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2203>
      <!--Guided_Weapon_Ballistic-->
      <WeaponTarget_2211>
        <FiringRange>115</FiringRange>
      </WeaponTarget_2211>
      <!--Aircraft_AEW-->
      <WeaponTarget_2031>
        <FiringRange>115</FiringRange>
      </WeaponTarget_2031>
      <!--Aircraft_Low_Perf_Recon_EW-->
      <WeaponTarget_2023>
        <FiringRange>115</FiringRange>
      </WeaponTarget_2023>
      <!--Aircraft_Medium_Perf_Recon_EW-->
      <WeaponTarget_2022>
        <FiringRange>115</FiringRange>
      </WeaponTarget_2022>
      <!--Aircraft_High_Perf_Recon_EW-->
      <WeaponTarget_2021>
        <FiringRange>100</FiringRange>
      </WeaponTarget_2021>
      <!--Aircraft_Low_Perf_Bombers-->
      <WeaponTarget_2013>
        <FiringRange>115</FiringRange>
      </WeaponTarget_2013>
      <!--Aircraft_Medium_Perf_Bombers-->
      <WeaponTarget_2012>
        <FiringRange>115</FiringRange>
      </WeaponTarget_2012>
      <!--Aircraft_High_Perf_Bombers-->
      <WeaponTarget_2011>
        <FiringRange>115</FiringRange>
      </WeaponTarget_2011>
      <!--Aircraft_3rd_Generation-->
      <WeaponTarget_2003>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2003>
      <!--Aircraft_Less_Capable-->
      <WeaponTarget_2004>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2004>
    </Weapon_2103>
    <!--SA-21b Growler [40N6]-->
    <Weapon_2104>
      <!--Air_Contact_Unknown_Type-->
      <WeaponTarget_1999>
        <FiringRange>0</FiringRange>
      </WeaponTarget_1999>
      <!--Aircraft_5th_Generation-->
      <WeaponTarget_2001>
        <WeaponQty>1</WeaponQty>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2001>
      <!--Aircraft_4th_Generation-->
      <WeaponTarget_2002>
        <WeaponQty>1</WeaponQty>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2002>
      <!--Aircraft_Unspecified-->
      <WeaponTarget_2000>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2000>
      <!--Aircraft_MicroUAV-->
      <WeaponTarget_2032>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2032>
      <!--Helicopter_Unspecified-->
      <WeaponTarget_2100>
        <WeaponQty>0</WeaponQty>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2100>
      <!--Guided_Weapon_Unspecified-->
      <WeaponTarget_2200>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2200>
      <!--Guided_Weapon_Supersonic-->
      <WeaponTarget_2203>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2203>
      <!--Guided_Weapon_Ballistic-->
      <WeaponTarget_2211>
        <FiringRange>215</FiringRange>
      </WeaponTarget_2211>
      <!--Aircraft_High_Perf_Bombers-->
      <WeaponTarget_2011>
        <FiringRange>200</FiringRange>
      </WeaponTarget_2011>
      <!--Aircraft_Medium_Perf_Bombers-->
      <WeaponTarget_2012>
        <FiringRange>200</FiringRange>
      </WeaponTarget_2012>
      <!--Aircraft_Low_Perf_Bombers-->
      <WeaponTarget_2013>
        <FiringRange>200</FiringRange>
      </WeaponTarget_2013>
      <!--Aircraft_High_Perf_Recon_EW-->
      <WeaponTarget_2021>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2021>
      <!--Aircraft_AEW-->
      <WeaponTarget_2031>
        <FiringRange>200</FiringRange>
      </WeaponTarget_2031>
      <!--Aircraft_Tanker-->
      <WeaponTarget_2033>
        <FiringRange>200</FiringRange>
      </WeaponTarget_2033>
      <!--Aircraft_3rd_Generation-->
      <WeaponTarget_2003>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2003>
      <!--Aircraft_Less_Capable-->
      <WeaponTarget_2004>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2004>
      <!--Aircraft_Medium_Perf_Recon_EW-->
      <WeaponTarget_2022>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2022>
      <!--Aircraft_Low_Perf_Recon_EW-->
      <WeaponTarget_2023>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2023>
      <!--Guided_Weapon_Subsonic_Sea_Skimming-->
      <WeaponTarget_2202>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2202>
      <!--Guided_Weapon_Supersonic_Sea_Skimming-->
      <WeaponTarget_2201>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2201>
      <!--Guided_Weapon_Subsonic-->
      <WeaponTarget_2204>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2204>
    </Weapon_2104>
    <!--SA-26 [9M96D]-->
    <Weapon_3220>
      <!--Aircraft_4th_Generation-->
      <WeaponTarget_2002>
        <WeaponQty>1</WeaponQty>
        <FiringRange>45</FiringRange>
      </WeaponTarget_2002>
      <!--Aircraft_5th_Generation-->
      <WeaponTarget_2001>
        <WeaponQty>1</WeaponQty>
        <FiringRange>40</FiringRange>
      </WeaponTarget_2001>
      <!--Helicopter_Unspecified-->
      <WeaponTarget_2100>
        <FiringRange>35</FiringRange>
      </WeaponTarget_2100>
      <!--Aircraft_MicroUAV-->
      <WeaponTarget_2032>
        <FiringRange>60</FiringRange>
      </WeaponTarget_2032>
      <!--Air_Contact_Unknown_Type-->
      <WeaponTarget_1999>
        <FiringRange>0</FiringRange>
      </WeaponTarget_1999>
      <!--Aircraft_High_Perf_Bombers-->
      <WeaponTarget_2011>
        <FiringRange>50</FiringRange>
      </WeaponTarget_2011>
      <!--Aircraft_High_Perf_Recon_EW-->
      <WeaponTarget_2021>
        <FiringRange>45</FiringRange>
      </WeaponTarget_2021>
      <!--Aircraft_Medium_Perf_Recon_EW-->
      <WeaponTarget_2022>
        <FiringRange>50</FiringRange>
      </WeaponTarget_2022>
      <!--Guided_Weapon_Supersonic_Sea_Skimming-->
      <WeaponTarget_2201>
        <WeaponQty>1</WeaponQty>
      </WeaponTarget_2201>
      <!--Guided_Weapon_Supersonic-->
      <WeaponTarget_2203>
        <WeaponQty>1</WeaponQty>
      </WeaponTarget_2203>
      <!--Aircraft_3rd_Generation-->
      <WeaponTarget_2003>
        <FiringRange>50</FiringRange>
      </WeaponTarget_2003>
      <!--Aircraft_Less_Capable-->
      <WeaponTarget_2004>
        <FiringRange>60</FiringRange>
      </WeaponTarget_2004>
      <!--Aircraft_Medium_Perf_Bombers-->
      <WeaponTarget_2012>
        <FiringRange>60</FiringRange>
      </WeaponTarget_2012>
      <!--Aircraft_Low_Perf_Bombers-->
      <WeaponTarget_2013>
        <FiringRange>60</FiringRange>
      </WeaponTarget_2013>
      <!--Aircraft_Low_Perf_Recon_EW-->
      <WeaponTarget_2023>
        <FiringRange>60</FiringRange>
      </WeaponTarget_2023>
      <!--Aircraft_AEW-->
      <WeaponTarget_2031>
        <FiringRange>60</FiringRange>
      </WeaponTarget_2031>
      <!--Aircraft_Tanker-->
      <WeaponTarget_2033>
        <FiringRange>60</FiringRange>
      </WeaponTarget_2033>
      <!--Guided_Weapon_Unspecified-->
      <WeaponTarget_2200>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2200>
      <!--Aircraft_Unspecified-->
      <WeaponTarget_2000>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2000>
    </Weapon_3220>
    <!--SA-N-21c Growler [9M96]-->
    <Weapon_2695>
      <!--Aircraft_5th_Generation-->
      <WeaponTarget_2001>
        <WeaponQty>1</WeaponQty>
        <FiringRange>15</FiringRange>
      </WeaponTarget_2001>
      <!--Aircraft_4th_Generation-->
      <WeaponTarget_2002>
        <WeaponQty>1</WeaponQty>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2002>
      <!--Guided_Weapon_Subsonic_Sea_Skimming-->
      <WeaponTarget_2202>
        <WeaponQty>2</WeaponQty>
      </WeaponTarget_2202>
      <!--Helicopter_Unspecified-->
      <WeaponTarget_2100>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2100>
      <!--Air_Contact_Unknown_Type-->
      <WeaponTarget_1999>
        <FiringRange>0</FiringRange>
      </WeaponTarget_1999>
      <!--Aircraft_Unspecified-->
      <WeaponTarget_2000>
        <FiringRange>0</FiringRange>
      </WeaponTarget_2000>
      <!--Guided_Weapon_Unspecified-->
      <WeaponTarget_2200>
        <FiringRange>-99</FiringRange>
      </WeaponTarget_2200>
      <!--Aircraft_3rd_Generation-->
      <WeaponTarget_2003>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2003>
      <!--Aircraft_Less_Capable-->
      <WeaponTarget_2004>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2004>
      <!--Aircraft_High_Perf_Bombers-->
      <WeaponTarget_2011>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2011>
      <!--Aircraft_Medium_Perf_Bombers-->
      <WeaponTarget_2012>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2012>
      <!--Aircraft_Low_Perf_Bombers-->
      <WeaponTarget_2013>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2013>
      <!--Aircraft_High_Perf_Recon_EW-->
      <WeaponTarget_2021>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2021>
      <!--Aircraft_Medium_Perf_Recon_EW-->
      <WeaponTarget_2022>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2022>
      <!--Aircraft_Low_Perf_Recon_EW-->
      <WeaponTarget_2023>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2023>
      <!--Aircraft_AEW-->
      <WeaponTarget_2031>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2031>
      <!--Aircraft_Tanker-->
      <WeaponTarget_2033>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2033>
      <!--Aircraft_MicroUAV-->
      <WeaponTarget_2032>
        <FiringRange>20</FiringRange>
      </WeaponTarget_2032>
    </Weapon_2695>

Re: Lua Script to "Modernize" S-400

Posted: Tue Aug 02, 2022 6:00 pm
by bsq
Every days a school day... could have save my self a load of typing (never mind).

Re: Lua Script to "Modernize" S-400

Posted: Tue Aug 02, 2022 6:09 pm
by KilianJay
bsq wrote: Sat Jul 23, 2022 12:53 pm Excellent script, however, I noticed some issues.

I loaded it over a test scenario, in which I have the C Ring (Moscow AD network) modelled. It took away almost all of the Grendel missiles.

When I asked repeatedly for 12 TEL units for S-400 and S-300P, the case I cited was the C-Ring. It uses (exclusively) 12 TEL setups and taller masts for the Gravestone and Cheeseboard. It also mounts the Big Bird BMR on tall lifting cradles to improve detection. Your script taking away almost all the Grendels for the 12 TEL sites is not overly realistic. These will have the big missiles (40N6 and 48N6DM)
Hello. Thanks for your feedback!
I'm not sure what you mean by "Grendels". Isn't that a name for the missiles of the Tunguska system?

Now the setups at key airfields and defensive sites outside of Moscow and St P, use 8 TELS systems. Here your script is excellent in striking a balance between the various layers the S-400 is supposed to have. There is still a but here too. The sites now have 11 TELS equivalents, it should be 8.
This seems odd. i couldn't reproduce this issue. In my game I always get 8 TELs.
But in general my script isn't supposed to recreate every site. Since the S-400 is a modular system. There are different compositions of missiles and sensors used for every site depending on the situation.
But I think I used a useful compromise. I basically tried to simulate either 8 or 12 TELs with each having two containers loaded with one large missile and two containers with quad-loaded small missiles.

I then modify the setup for some sites if needed.

Re: Lua Script to "Modernize" S-400

Posted: Tue Aug 02, 2022 7:12 pm
by bsq
Sorry for the confusion. I will often switch between NATO name and GRAU number depending on circumstance - sorry.

40N6 = Grendel, 48N6(x) = Gargoyle, 9M96(x) = Gambler & 9M100 = Gnome (where x is the variant of the base missile)

At airfields and other point defence locations outside of Moscow and St Petersburg, the S-400 utilises 8 TEL systems. It belongs to (ex) PVO (I am old fashioned, still use that title) and, although mobile, tends not to be, operated from pre-prepared locations (I posted an image of the Dhzankoi site on another thread).

Your script is spot on though, it replicates what can be seen (mostly) on GE. You are correct about 40N6 Grendel, big missiles, very expensive, marginal ABM capes and fingers of god, so frugal use required. Maybe there are too many 9M96's as they would likely layer defend the site in its own right. The real A2/AD teeth are the 48N6 in whichever flavour they have.

Given how each system morphed IRL into its successor, the fact that it (until now) has been rarely used in anger and the fact that missiles arent cheap, how about building a site with 48N6 all flavours (would require another datalink package to be added which could over power the entire system, unless the GraveStone behaves itself).

So just to be clear. Suggesting fewer 9M96s. More 48N6s of all types (will need the datalink from the S-300PMU to be added to control the missiles). An ideal realistic mix based on what can be seen in 2021 Russia would be 8 Tel total equivalence - missile count 4 x 40N6, 24 or 48 x 9M96 & the rest 48N6 of the various types. Doesnt neatly divide, but thats more down to the fact that the game doesnt model 9M96 as part of S-400 in the guise shown in press releases.

Re: Lua Script to "Modernize" S-400

Posted: Tue Aug 02, 2022 10:55 pm
by KilianJay
bsq wrote: Tue Aug 02, 2022 7:12 pm So just to be clear. Suggesting fewer 9M96s. More 48N6s of all types (will need the datalink from the S-300PMU to be added to control the missiles). An ideal realistic mix based on what can be seen in 2021 Russia would be 8 Tel total equivalence - missile count 4 x 40N6, 24 or 48 x 9M96 & the rest 48N6 of the various types. Doesnt neatly divide, but thats more down to the fact that the game doesnt model 9M96 as part of S-400 in the guise shown in press releases.
OK now I understand - i think :lol:
So far I just mixed S-400 and S-300PMU units for this purpose (around the cities).
Since we have 4 different S-400 units in the game I could make a script which optimizes them for different purposes.
For example:
#1668(8TEL): point-defense. mostly 9M96, few 48N6
#1937(8TEL): balanced. 4 x 40N6, rest 9M96 and 48N6
#543 (12 TEL): heavy point-defense
#2029(12 TEL): balanced. 4 x 40N6, rest 9M96 and 48N6

But at some point we need the ability of external units for acquisition and guidance like in reality. That would make it easier :mrgreen:

Re: Lua Script to "Modernize" S-400

Posted: Tue Sep 20, 2022 1:05 am
by Craigkn
I wanted to revisit this - this script remains excellent and I am using it to help shape a massive SEAD scenario I am currently working on.

I am also wondering about the use of SA-26 / 9M96D. Don't those belong to a different unit - S-350 Vityaz / SA-26 (db #2089)? I have a scenario where I am using both S-400 and S-350's, and I was confused why the S-400's were using SA-26's - stupid of me to not look. The Wikipedia entry on the S-400 does list 9M96 and 9M96E, so maybe including them is accurate.

Looking at recent OSINT, the 8 TEL configuration has four tubes per TEL, which means that the 12 tubes per SA-28 [50P6] TEL is a ton more of ready missiles.

.ru website showing the 5P85TE2/5P85SE2 4 tube TEL's: https://en.topwar.ru/169425-zenitnaja-r ... schee.html