A long time ago I released a validator python script to help convert campaigns to new modded standards and between mod packs. The goal was to have something generate a report about missing objects, skins, aircraft, etc. Life happened, and I didn't get around to making more than this python script. Now, five years later, better late then never, I present the improved Campaign Validator v1.0.
Dowload link here:https://www.mediafire.com/file/q03947l7ermellq/Il2CampaignValidator1.0.7z/fileLast time, people had problems setting up python on their machines and running the script in the console; now I've bundled it all into a .exe that will spit out text files and even auto-correct several aspects of old campaign missions so you don't have to sit through the tedium of doing so yourself. You can use it for any Il-2 mod installation, just point it at the correct STD folder.
Here is the sample output of Poltava's Finnish Buffalo campaign for an earlier version of BAT, which has not been compiled with the new BAT standard. The skin errors are because I don't have them installed in the test installation, it's just to demonstrate. As you can see, lots of the stationary aircraft do not have markings, and a stationary I-16 can't be found in mission 43-5.
Reading mission arch43-1.mis
Mission Map = ag_Archangelsk/load_w.ini
Mission Date: 1943-1-15
Aircraft used:
C_47A
F2A_B239
FokkerCXP
P_40E
###Skin BW_blank_w.bmp for F2A_B239 not found!
###Skin Douglas Do-1 Hanssin Jukka Finland version 2.bmp for C_47A not found!
Chiefs used:
RussiaCarsColumnA
Stationaries used:
vehicles.artillery.Artillery$DShKAA
vehicles.artillery.Artillery$Maxime
vehicles.artillery.Artillery$StBofors_40mm_US
vehicles.planes.Plane$F2A_B239
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$GenericSpawnPointPlane
vehicles.planes.Plane$LAGG_3SERIES29
vehicles.planes.Plane$U_2VS
vehicles.radios.Beacon$Radio_Suomen_Yleisradio
vehicles.stationary.Ambient$Ambient4
vehicles.stationary.CandC$LevelUnit
vehicles.stationary.CandC$RandomTimeUnit
vehicles.stationary.CandC$RandomWeatherUnit
vehicles.stationary.MarkerFlare$MarkerFlareUnit
vehicles.stationary.Smoke$Smoke6
vehicles.stationary.Smoke$Smoke7
vehicles.stationary.Stationary$GAZ_AA
vehicles.stationary.Stationary$OpelBlitz36S
vehicles.stationary.Stationary$OpelKadett
vehicles.stationary.Stationary$ZIS5_PC
vehicles.stationary.Stationary$ZIS5_radio
vehicles.stationary.Stationary$ZIS6_fuel
vehicles.stationary.Windsock$Windsock
###These stationary planes have no markings:
vehicles.planes.Plane$LAGG_3SERIES29
vehicles.planes.Plane$U_2VS
Reading mission arch43-2.mis
Mission Map = ag_Archangelsk/load_w.ini
Mission Date: 1943-1-15
Aircraft used:
F2A_B239
###Skin BW_blank_w.bmp for F2A_B239 not found!
Chiefs used:
GAZ_M1
USSR_CargoTrainA
USSR_EquipmentBTrain/AA
Stationaries used:
vehicles.planes.Plane$F2A_B239
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$GenericSpawnPointPlane
vehicles.radios.Beacon$Radio_Suomen_Yleisradio
vehicles.stationary.Ambient$Ambient4
vehicles.stationary.CandC$LevelUnit
vehicles.stationary.CandC$RandomTimeUnit
vehicles.stationary.CandC$RandomWeatherUnit
vehicles.stationary.MarkerFlare$MarkerFlareUnit
vehicles.stationary.Smoke$Smoke7
vehicles.stationary.Stationary$GAZ_AA
vehicles.stationary.Stationary$OpelBlitz36S
vehicles.stationary.Stationary$OpelKadett
vehicles.stationary.Windsock$Windsock
###These stationary planes have no markings:
vehicles.planes.Plane$F2A_B239
Reading mission arch43-3.mis
Mission Map = ag_Archangelsk/load_w.ini
Mission Date: 1943-2-15
Aircraft used:
F2A_B239
P_39N
###Skin BW_blank_w.bmp for F2A_B239 not found!
###Skin Buffalo_4-LeLv-24_winter_noCode.bmp for F2A_B239 not found!
Chiefs used:
BrownCivilTruck
Stationaries used:
vehicles.planes.Plane$F2A_B239
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$GenericSpawnPointPlane
vehicles.radios.Beacon$Radio_Suomen_Yleisradio
vehicles.stationary.Ambient$Ambient4
vehicles.stationary.CandC$LevelUnit
vehicles.stationary.CandC$RandomTimeUnit
vehicles.stationary.CandC$RandomWeatherUnit
vehicles.stationary.MarkerFlare$MarkerFlareUnit
vehicles.stationary.Smoke$Smoke7
vehicles.stationary.Stationary$GAZ_AA
vehicles.stationary.Stationary$OpelBlitz36S
vehicles.stationary.Stationary$OpelKadett
vehicles.stationary.Windsock$Windsock
###These stationary planes have no markings:
vehicles.planes.Plane$F2A_B239
vehicles.planes.Plane$FokkerCXP
Reading mission arch43-4.mis
Mission Map = ag_Archangelsk/load_w.ini
Mission Date: 1943-3-2
Aircraft used:
Do17Z_2
F2A_B239
I_16TYPE24
P_40E
###Skin BW_blank_w.bmp for F2A_B239 not found!
###Skin Buffalo_4-LeLv-24_winter_noCode.bmp for F2A_B239 not found!
###Skin Mangas_I-16_Type24_Tsokolaev.bmp for I_16TYPE24 not found!
###Skin Mangas_I-16_Type24_Tsokolaev.bmp for I_16TYPE24 not found!
###Skin BW_blank_w.bmp for F2A_B239 not found!
###Skin Buffalo_4-LeLv-24_winter_noCode.bmp for F2A_B239 not found!
###Skin PS_Dornier Do-17 Z Finland LeLv 46 blank Winter 1942.bmp for Do17Z_2 not found!
Chiefs used:
RussiaCarsColumnB
USSR_CargoFuelTrain
USSR_CargoTrainA/AA
Stationaries used:
vehicles.planes.Plane$C_47A
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$GenericSpawnPointPlane
vehicles.planes.Plane$I_16TYPE24
vehicles.planes.Plane$LI_2
vehicles.radios.Beacon$Radio_Suomen_Yleisradio
vehicles.stationary.Ambient$Ambient4
vehicles.stationary.CandC$LevelUnit
vehicles.stationary.CandC$RandomTimeUnit
vehicles.stationary.CandC$RandomWeatherUnit
vehicles.stationary.CandC$SLDUnit
vehicles.stationary.MarkerFlare$MarkerFlareUnit
vehicles.stationary.Smoke$Smoke3
vehicles.stationary.Smoke$Smoke7
vehicles.stationary.Stationary$GAZ67t
vehicles.stationary.Stationary$GAZ_AA
vehicles.stationary.Stationary$GAZ_M1
vehicles.stationary.Stationary$OpelBlitz36S
vehicles.stationary.Stationary$OpelKadett
vehicles.stationary.Stationary$StudebeckerTruck
vehicles.stationary.Stationary$ZIS5_PC
vehicles.stationary.Stationary$ZIS5_medic
vehicles.stationary.Stationary$ZIS6_fuel
vehicles.stationary.Windsock$Windsock
###Stationary vehicles.planes.Plane$I_16TYPE24 not found!
###These stationary planes have no markings:
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$I_16TYPE24
vehicles.planes.Plane$LI_2
Reading mission arch43-5.mis
Mission Map = ag_Archangelsk/load_w.ini
Mission Date: 1943-3-21
Aircraft used:
F2A_B239
PE_2SERIES110
P_40E
###Skin BW_blank_w.bmp for F2A_B239 not found!
Chiefs used:
BrownCivilTruck
Stationaries used:
vehicles.planes.Plane$F2A_B239
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$GenericSpawnPointPlane
vehicles.planes.Plane$I_16TYPE24
vehicles.planes.Plane$LI_2
vehicles.radios.Beacon$Radio_Suomen_Yleisradio
vehicles.stationary.Ambient$Ambient4
vehicles.stationary.CandC$LevelUnit
vehicles.stationary.CandC$RandomAircraft2Unit
vehicles.stationary.CandC$RandomTimeUnit
vehicles.stationary.CandC$RandomWeatherUnit
vehicles.stationary.CandC$SLDUnit
vehicles.stationary.MarkerFlare$MarkerFlareUnit
vehicles.stationary.Smoke$Smoke3
vehicles.stationary.Smoke$Smoke8
vehicles.stationary.Stationary$GAZ67t
vehicles.stationary.Stationary$GAZ_AA
vehicles.stationary.Stationary$GAZ_M1
vehicles.stationary.Stationary$OpelBlitz36S
vehicles.stationary.Stationary$OpelKadett
vehicles.stationary.Stationary$StudebeckerTruck
vehicles.stationary.Stationary$ZIS5_PC
vehicles.stationary.Stationary$ZIS5_medic
vehicles.stationary.Stationary$ZIS6_fuel
vehicles.stationary.Windsock$Windsock
###Stationary vehicles.planes.Plane$I_16TYPE24 not found!
###These stationary planes have no markings:
vehicles.planes.Plane$F2A_B239
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$I_16TYPE24
vehicles.planes.Plane$LI_2
Reading mission arch43-6.mis
Mission Map = ag_Archangelsk/load_s.ini
Mission Date: 1940-5-15
Aircraft used:
C_47A
F2A_B239
He115
LAGG_3SERIES29
U_2VS
###Skin LaGG3_Galchenko_late_1942.bmp for LAGG_3SERIES29 not found!
###Skin Douglas Do-1 Hanssin Jukka Finland version 2.bmp for C_47A not found!
Chiefs used:
Stationaries used:
vehicles.artillery.Artillery$Flak18_37mm
vehicles.artillery.Artillery$Zenit25mm_1940
vehicles.artillery.Artillery$Zenit3K
vehicles.planes.Plane$F2A_B239
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$GenericSpawnPointPlane
vehicles.planes.Plane$JU_52_3MG4E
vehicles.planes.Plane$U_2VS
vehicles.radios.Beacon$Radio_Suomen_Yleisradio
vehicles.stationary.Ambient$Ambient4
vehicles.stationary.CandC$LevelUnit
vehicles.stationary.CandC$RandomAircraft2Unit
vehicles.stationary.CandC$RandomTimeUnit
vehicles.stationary.MarkerFlare$MarkerFlareUnit
vehicles.stationary.Stationary$GAZ_AA
vehicles.stationary.Stationary$OpelBlitz36S
vehicles.stationary.Stationary$OpelKadett
vehicles.stationary.Stationary$VW82
vehicles.stationary.Stationary$ZIS5_PC
vehicles.stationary.Windsock$Windsock
###These stationary planes have no markings:
vehicles.planes.Plane$JU_52_3MG4E
vehicles.planes.Plane$U_2VS
Reading mission arch43-7.mis
Mission Map = ag_Archangelsk/load_s.ini
Mission Date: 1943-4-4
Aircraft used:
F2A_B239
LAGG_3SERIES29
PE_2SERIES110
Chiefs used:
Stationaries used:
vehicles.artillery.Artillery$Bofors_40mm_US
vehicles.artillery.Artillery$Flak30_20mm
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$GenericSpawnPointPlane
vehicles.radios.Beacon$Radio_Suomen_Yleisradio
vehicles.stationary.Ambient$Ambient4
vehicles.stationary.CandC$LevelUnit
vehicles.stationary.CandC$RandomTimeUnit
vehicles.stationary.MarkerFlare$MarkerFlareUnit
vehicles.stationary.Siren$SirenCity
vehicles.stationary.Stationary$GAZ_AA
vehicles.stationary.Stationary$Motorcycle
vehicles.stationary.Stationary$OpelKadett
vehicles.stationary.Windsock$Windsock
###These stationary planes have no markings:
vehicles.planes.Plane$FokkerCXP
Reading mission arch43-8.mis
Mission Map = ag_Archangelsk/load_s.ini
Mission Date: 1942-5-15
Aircraft used:
F2A_B239
IL_4_DB3F
P_40E
R_5
Chiefs used:
2-T34
GAZM1
ZIS5_PC
Stationaries used:
vehicles.aeronautics.Aeronautics$ObservBalloon_90m
vehicles.artillery.Artillery$Bofors_40mm_US
vehicles.artillery.Artillery$BunkerA_gun
vehicles.artillery.Artillery$BunkerG1_gun
vehicles.artillery.Artillery$Flak30_20mm
vehicles.artillery.Artillery$Howitzer_150mm
vehicles.artillery.Artillery$ML20
vehicles.artillery.Artillery$Maxime
vehicles.artillery.Artillery$PaK38
vehicles.artillery.Artillery$Type38_75mm
vehicles.artillery.Artillery$Zenit3K
vehicles.planes.Plane$C_47A
vehicles.planes.Plane$F2A_B239
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$GenericSpawnPointPlane
vehicles.radios.Beacon$Radio_Suomen_Yleisradio
vehicles.stationary.Ambient$Ambient4
vehicles.stationary.CandC$BRGUnit
vehicles.stationary.CandC$LevelUnit
vehicles.stationary.CandC$RandomAircraft2Unit
vehicles.stationary.CandC$RandomTimeUnit
vehicles.stationary.CandC$RandomWeatherUnit
vehicles.stationary.MarkerFlare$MarkerFlareUnit
vehicles.stationary.Smoke$Smoke1
vehicles.stationary.Smoke$Smoke2
vehicles.stationary.Smoke$Smoke22
vehicles.stationary.Smoke$Smoke3
vehicles.stationary.Stationary$BunkerA2_gun
vehicles.stationary.Stationary$GAZ_AA
vehicles.stationary.Stationary$OpelBlitz36S
vehicles.stationary.Stationary$OpelBlitz6700A_fuel
vehicles.stationary.Stationary$OpelKadett
vehicles.stationary.Windsock$Windsock
###These stationary planes have no markings:
vehicles.planes.Plane$F2A_B239
vehicles.planes.Plane$FokkerCXP
Reading mission arch43-9.mis
Mission Map = ag_Archangelsk/load_s.ini
Mission Date: 1943-5-15
Aircraft used:
F2A_B239
P_39N
###Skin Murmansk.bmp for P_39N not found!
###Skin Murmansk.bmp for P_39N not found!
###Skin Murmansk.bmp for P_39N not found!
Chiefs used:
4-T34_early
RussiaCarsColumnB
USSR_CargoTrain
ZIS5_PC
Stationaries used:
vehicles.artillery.Artillery$BunkerA2_gun
vehicles.artillery.Artillery$BunkerA_gun
vehicles.artillery.Artillery$BunkerG1_gun
vehicles.artillery.Artillery$Flak18_37mm
vehicles.artillery.Artillery$ML20
vehicles.artillery.Artillery$Zenit25mm_1940
vehicles.artillery.Artillery$Zenit3K
vehicles.artillery.ArtilleryArsenal$Mod38_75mm
vehicles.planes.Plane$F2A_B239
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$GenericSpawnPointPlane
vehicles.planes.Plane$IL_4_DB3F
vehicles.planes.Plane$JU_52_3MG4E
vehicles.planes.Plane$U_2VS
vehicles.radios.Beacon$Radio_Suomen_Yleisradio
vehicles.stationary.Ambient$Ambient4
vehicles.stationary.CandC$LevelUnit
vehicles.stationary.CandC$RandomTimeUnit
vehicles.stationary.MarkerFlare$MarkerFlareUnit
vehicles.stationary.Smoke$Smoke1
vehicles.stationary.Smoke$Smoke2
vehicles.stationary.Smoke$Smoke22
vehicles.stationary.Stationary$GAZ_AA
vehicles.stationary.Stationary$OpelBlitz36S
vehicles.stationary.Stationary$OpelKadett
vehicles.stationary.Stationary$VW82
vehicles.stationary.Stationary$ZIS5_PC
vehicles.stationary.Windsock$Windsock
###These stationary planes have no markings:
vehicles.planes.Plane$JU_52_3MG4E
vehicles.planes.Plane$U_2VS
Reading mission arch43-10.mis
Mission Map = ag_Archangelsk/load_s.ini
Mission Date: 1943-6-8
Aircraft used:
BLENHEIM4
F2A_B239
FokkerCXP
LAGG_3SERIES29
P_40M
###Skin 1BL201_MKIV.bmp for BLENHEIM4 not found!
###Skin LaGG3_Galchenko_late_1942.bmp for LAGG_3SERIES29 not found!
Chiefs used:
GAZ_AA
RussiaCarsColumnA
Stationaries used:
vehicles.artillery.Artillery$Bofors_40mm_US
vehicles.artillery.Artillery$Flak30_20mm
vehicles.artillery.Artillery$Zenit3K
vehicles.planes.Plane$F2A_B239
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$GenericSpawnPointPlane
vehicles.planes.Plane$LI_2
vehicles.radios.Beacon$Radio_Suomen_Yleisradio
vehicles.stationary.Ambient$Ambient4
vehicles.stationary.CandC$LevelUnit
vehicles.stationary.CandC$RandomTimeUnit
vehicles.stationary.CandC$RandomWeatherUnit
vehicles.stationary.MarkerFlare$MarkerFlareUnit
vehicles.stationary.Smoke$Smoke22
vehicles.stationary.Stationary$GAZ_AA
vehicles.stationary.Stationary$OpelKadett
vehicles.stationary.Stationary$ZIS5_PC
vehicles.stationary.Stationary$ZIS6_fuel
vehicles.stationary.Windsock$Windsock
###These stationary planes have no markings:
vehicles.planes.Plane$FokkerCXP
vehicles.planes.Plane$LI_2
Now with this new version, in addition to just finding errors, it gives you some tabularized information such as mission date, objects/aircraft used so that you can see where substitute/hack aircraft and ships are used and fix them. Also new is the ability to look for markingless static aircraft (a side effect of converting old pre-4.12 campaigns). The most useful change, however, are some tools to automatically fix all these broken static aircraft and auto-fix missing static objects (sort of like a find-replace) in a customizable way for every mission in a campaign in a single click.
Instructions are in the readme. Settings.txt lets you tell the program what to do. "Common Conversions.txt" is a list of all objects you want the program to find and what you want it to replace them with, separated by commas.