Desert Fox Diary - Pt 1 - Pt 12

Post new mods and scenarios here.

Moderator: MOD_Command

User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

Huzzah! I've got the unit killed functions/events working - ie adjusting score, moving SAMs off the EW Radar net and possible decrease in SAM proficiency upon Control Center destruction. I remember the days when the ScenEdit_KillUnit (unit) function was debated as a railroad-y danger by scenario authors, but Holy Moses, is it handy for testing!

I've changed function approaches more than once (any may again!) as I continue to learn about Lua. For example, I began with an idea that I would test for TARGET eligibility for scoring based on a flag in a table of units. So a unit would be destroyed, you'd search for units in various tables, see if it was a TARGET and apply any other effects. Then I toyed with a dynamically decreasing table of just TARGETs. Now I just check the last 6 characters in the destroyed unit's name for the sub-string 'TARGET' (since all eligible scoring units have TARGET at the end of their name). Eases up on the need to repeatedly search tables. This is just for Iraqi (nonPlayer) forces whose names are fixed. On a side note, I have to maintain a list of guids for US/UK aircraft which may have their names changed by the player, for when I want to reference them.

Now for the fun part. Revisiting my initial Pulse event (every 30 seconds) code. Part of this is pretty easy. I have the active unit pruning functions done - these review my active unit tables for SAMs, pertinent AAA units and EW radars and remove any that no longer exist (ie were destroyed) - because I wanted that done on Scenario Load to get those tables current to the game state on game-resumes. There's workable code for EW Radar behavior, too.

The big thing will be Area SAM behavior - when do they check for FREE FIRE, how long do they remain so and how do they revert to HOLD FIRE. My initial concept is to have per-Pulse tests as US/UK aircraft are in a zone around each Area SAM site; which means frequent checking of each in-flight US/UK aircraft vs the zones for each un-destroyed Iraqi SAM site. If the conditions are met there's a small chance the Area SAM site will go FREE FIRE for a short amount of time.

Similar are the checks for eligible AAA units with radars - these units are ALWAYS FREE FIRE but only turn on their radars when US/UK aircraft are reported in a certain area. So that ZSU-23-4 won't give itself away until coalition aircraft are in the vicinity. These zones may be more geographically indicated than the Area SAM test (which are relative to the SAM sites) so that all eligible AAA in an area go ACTIVE radar when a US/UK aircraft is in a given zone. With Area SAMs it's each battery has it's own test area. With AAA, test areas will exist for potentially multiple AAA units.

Once those events are working in my test scenario I'll port them over to the Desert Fox file. Then there's a big list to complete there. Appropriate tables of units to be generated. Events to handle mobile SAMs, AAA and radars movement. Events to handle US/UK daylight airspace restrictions. Events to bring additional US/UK assets into play. Possible CSAR implementation. etc...
User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

Got a lot done today. The distributed-use EW Radar action is complete. I also did some proof-of-concept work on the trigger zones for SAM activation and it works like a charm. Better yet, because relative RPs move in relation to their anchor unit, regardless of side that unit may move to, implementing moving SAMs that retain their trigger zones is a non-issue as you just move the unit and the whole zone moves in relation with it. I think the code for the SAMs will be pretty simple. The hard part will be mapping out the RPs and creating tables of them related to each Area SAM. However I will only need to map zones for REAL SAMs, not Decoys, as those will never actually fire.

I'm also planning on making all typically-fixed SAM sites (SA-2, SA-3) auto-detectable at the start of the game but toggling it off immediately (a non-repeatable Scenario Loads Event). Some of these sites may actually move to alternate positions as they are only static in the sense that they aren't mobile, tactical systems. However they can be mobile between sites, which is something that may happen to some SAMs during daylight hours. I'll do the same thing with non-static radars. Their initial positions will be assumed to be correct but further recon may be necessary to determine their current whereabouts. Available US/UK recon aircraft include RC-135s (on fixed orbit), a pair of U-2Ss and USN Tomcats with TARPS pods.
Whicker
Posts: 664
Joined: Tue Jun 19, 2018 9:54 pm

RE: Desert Fox Diary - Pt 1

Post by Whicker »

auto-detectable at the start of the game but toggling it off immediately (a non-repeatable Scenario Loads Event)

you can do this pre-game start and don't need the event to make them not detectable - just roll time forward a sec or two and stop. Then make them not auto and the other side will have them as a contact but without new info.
just one less event to worry about.

sounds like you got some good stuff coming.

User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

ORIGINAL: Whicker
auto-detectable at the start of the game but toggling it off immediately (a non-repeatable Scenario Loads Event)

you can do this pre-game start and don't need the event to make them not detectable - just roll time forward a sec or two and stop. Then make them not auto and the other side will have them as a contact but without new info.
just one less event to worry about.

sounds like you got some good stuff coming.


Yeah, I guess that would work, too. [:D]

Just wrote the first iteration of the SAM activation function. Here's what it looks like.
function SAM_Fire_Check (SAM_Table, AC_Table, difficulty)
--[[ checks all NON-DECOY Area SAMs in SAM_Table to see if there are any in-flight US/UK aircraft in their engagement zone. If so they test to see if they go FREE FIRE for a short, random number of pulses. No matter what, they do not use local surveillance radar. Should check whether Historical, Normal or Aggressive game play was chosen and weight accordingly.]]
local num_AC = #AC_Table
local num_SAMs = #SAM_Table
math.randomseed(os.time())

if ((num_AC == 0) or (num_SAMs == 0)) then
-- no aircraft or SAMs to process
return 'No Aircraft and/or SAMs left'
else
for i = 1,num_AC do
local check_Flight = ScenEdit_GetUnit({side="US/UK", unitname= AC_Table [1]})
if check_Flight.condition == 'Airborne' then
-- only check for aircraft in flight
for j = 1,num_SAMs do
if (SAM_Table [j] [2] == false) then
-- only check for SAMs that are NOT decoys
if check_Flight:inArea (SAM_Table [j] [5]) then
-- test SAM for FREE FIRE, difficulty is based on a Constant: 3% for Historical, 15% for Normal and 60% for Aggressive
if math.random (1,100) <= difficulty then
-- test allows FREE FIRE, need to account for SAMs on Iraq IADS and Iraq IADS_ sides.
local check_SAM = ScenEdit_SetDoctrine({side="Iraq IADS", unitname=SAM_Table [j] [1]}, {weapon_control_status_air= 0})
if check_SAM = nil then
check_SAM = ScenEdit_SetDoctrine({side="Iraq IADS_", unitname=SAM_Table [j] [1]}, {weapon_control_status_air= 0})
end
-- now set pulse time for the SAM as well
SAM_Table[j] [3] = math.random (1,3)
end
end
end
end
end
end
end
return 'Checked all Aircraft vs SAMs'
end


I probably should of popped another function in there for the setting of the FREE FIRE weapons release and pulse value to keep things clean, but this should work.

I've done RP table creation for SAM threat areas in my test scenario and it's not as bad as I thought, though that's pretty small in comparison to Desert Fox. For SAMs I went with a guestimated Historical value of 3%/30second pulse to go FREE FIRE, vs 15% for Normal and 60% for Aggressive, against eligible aircraft. This will be further effected by SAM battery Proficiency loss as their IADS is degraded and their ability to see targets (no SAM batteries will use native search radars) as they will be dependent on the EW Radar feed, if they can get it. On the other hand there will be several dummy SAM sites, including those that are TARGETs, and many SAM units will displace over the course of the operation. Suppressing the air defenses will still be somewhat of a challenge in the Normal game and I think quite challenging in Aggressive.
Whicker
Posts: 664
Joined: Tue Jun 19, 2018 9:54 pm

RE: Desert Fox Diary - Pt 1

Post by Whicker »

I can't follow all of that but:
for i = 1,num_AC do
local check_Flight = ScenEdit_GetUnit({side="US/UK", unitname= AC_Table [1]})

Code: Select all

 should that be [1] or [i] seems like i.
 
if check_Flight.condition == 'Airborne' then
-- only check for aircraft in flight

IIRC there are LOTS of potential conditions - I think I tried to do what you are doing here and decided to use altitude above ground as the check instead. I never found a list of what they could be but I think some are: Cranking, Engaged Offensive/Defensive, RTB?

This is part of the code I used - not sure why I had the < 5 part in there:

Code: Select all

 local worldElevation = World_GetElevation({latitude= triggerUnit.latitude, longitude=triggerUnit.longitude})
         if triggerUnit.type == "Aircraft" and (triggerUnit.altitude - worldElevation) < 5 then --check f AC is on the ground
             return
         end

argh. i in brackets is italics.
KnightHawk75
Posts: 1850
Joined: Thu Nov 15, 2018 7:24 pm

RE: Desert Fox Diary - Pt 1

Post by KnightHawk75 »

Some crazy intriguing and good stuff going on in this thread. :)
User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

ORIGINAL: Whicker

I can't follow all of that but:
for i = 1,num_AC do
local check_Flight = ScenEdit_GetUnit({side="US/UK", unitname= AC_Table [1]})

Code: Select all

 should that be [1] or [i] seems like i.
 
if check_Flight.condition == 'Airborne' then
-- only check for aircraft in flight

IIRC there are LOTS of potential conditions - I think I tried to do what you are doing here and decided to use altitude above ground as the check instead. I never found a list of what they could be but I think some are: Cranking, Engaged Offensive/Defensive, RTB?

This is part of the code I used - not sure why I had the < 5 part in there:

Code: Select all

 local worldElevation = World_GetElevation({latitude= triggerUnit.latitude, longitude=triggerUnit.longitude})
         if triggerUnit.type == "Aircraft" and (triggerUnit.altitude - worldElevation) < 5 then --check f AC is on the ground
             return
         end

argh. i in brackets is italics.

Good ideas! Yeah, the 'i' in that reference was swallowed by post-code gobbling it as an italics indicator. I'll have to review the various conditions and decide how to proceed. I could just indicate NOT (landed, taxiing or taking off) too, and the altitude check is a good work around as well.
User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

Did a bit of testing to isolate the varying a/c conditions while at base. There are a lot of them, as Whicker mentioned! I couldn't find a comprehensive list of all unit conditions so I figured it was easier to test the ones associated with being on the ground than in flight. Came up with this function ...
function Aircraft_Grounded (ac_side, ac_guid)
-- determines if a particular aircraft is currently at base - returns true if so and false (in flight somewhere) if not
local ac = ScenEdit_GetUnit({side=ac_side, guid=ac_guid})
if ac == nil then
return nil
elseif
(ac.condition == 'Parked' or ac.condition == 'Parked on flight deck' or ac.condition == 'Parked in hangar' or ac.condition == 'Readying' or ac.condition == 'Taxiing to take off' or ac.condition == 'Preparing to launch' or ac.condition == 'Waiting for available taxiway/elevator' or ac.condition == 'Taking off' or ac.condition == 'Waiting for runway to become available' or ac.condition == 'On elevator, enroute to takeoff' or ac.condition == 'Completing landing' or ac.condition == 'On elevator, enroute to parking spot' or ac.condition == 'Taxiing to parking spot') then
return true
else
return false
end
end

I knew I wasn't going to get away without using at least one other function in the SAM_Fire_Check function... [:)]
User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

Had a little time today to work. Remembered to put a limiter into the SAM_Fire_Check function so that it checks only ONCE-per-pulse for FREE FIRE if an aircraft is in its' threatened zone. This way multiple approaching a/c won't increase a SAMs likelihood of firing. A 15% roll per ac when we're talking 1 ac isn't all that likely; but when there are 10 ac, each getting a check, it's all but certain.

I'm looking at a simpler way to implement AAA. Most AAA guns will be set with active radar and FREE FIRE - systems like 23mm - 100mm guns - though not ZSU-24-4 - + MANPADS; and concentrated in standard locations - around airfields, Baghdad, Kirkuk, Basra, likely targets, etc. They will all be on the Iraq AAA side and not get EW radar info, but their own radar systems - Fire Can and Flap Wheel mainly - will help them spot targets. The US/UK can target those radars but in most cases significant numbers of AAA guns will remain even after an ARM attack. For higher-end AAA units, like ZSU-23-4 and SHORADS like SA-8, SA-9 and Roland, there will be AAA Zones with attached Missions to which these units will belong, with the base case of HOLD FIRE and Passive Radar EMCON. When US/UK aircraft enter these zones at a sufficiently low altitude then those Missions will be set to radiate and get FREE FIRE, though with a conservative WRA, and probably limited ammo. Enough to get respect but not dominate. When US/UK aircraft depart those parameters they'll clam up. Those units will also tend to move about their zone a bit over time, too.
KnightHawk75
Posts: 1850
Joined: Thu Nov 15, 2018 7:24 pm

RE: Desert Fox Diary - Pt 1

Post by KnightHawk75 »


Here was a copy I made of the full list, I think you may be missing two related to id=18 in the 'elseif' in post #28.

As for the list, a snippet from a larger utility script:
---Status for Aircraft
---id=gamecode enum value,vname= condition_v ,text= condition
gKH.Enums.StatusAir = {
{id=0, vname="Airborne", text="Airborn", isAirborn=true},
{id=1, vname="Parked",text="Parked", isAirborn=false},
{id=1, vname="Parked",text="Parked on flight deck", isAirborn=false},
{id=1, vname="Parked",text="Parked in hangar", isAirborn=false},
{id=2, vname="TaxyingToTakeOff",text="Taxiing to take off", isAirborn=false},
{id=2, vname="TaxyingToTakeOff",text="On elevator, enroute to takeoff", isAirborn=false},
{id=3, vname="TaxyingToPark",text="Taxiing to parking spot", isAirborn=false},
{id=3, vname="TaxyingToPark",text="On elevator, enroute to parking spot", isAirborn=false},
{id=4, vname="TakingOff",text="Taking off", isAirborn=false},
{id=5, vname="Landing_PreTouchdown",text="On final approach", isAirborn=true},
{id=6, vname="Landing_PostTouchdown",text="Completing landing", isAirborn=false},
{id=7, vname="Readying",text="Readying", isAirborn=false},
{id=8, vname="HoldingForAvailableTransit",text="Waiting for available taxiway/elevator", isAirborn=false},
{id=9, vname="HoldingForAvailableRunway",text="Waiting for runway to become available", isAirborn=false},
{id=10,vname="HoldingOnLandingQueue",text="In landing queue", isAirborn=true},
{id=11,vname="RTB",text="Returning to base", isAirborn=true},
{id=12,vname="PreparingToLaunch",text="Preparing to launch", isAirborn=false},
{id=13,vname="ManoeuveringToRefuel", text="Manoeuvering to refuel", isAirborn=true},
{id=14,vname="Refuelling",text="Refuelling", isAirborn=true},
{id=15,vname="OffloadingFuel",text="Offloading fuel", isAirborn=true},
{id=16,vname="DeployingDippingSonar",text="Deploying Dipping Sonar", isAirborn=true},
{id=17,vname="EmergencyLanding", text="Chicken, critically low on fuel", isAirborn=true},
{id=18,vname="TaxyingToFlightDeck", text="On elevator, enroute to flight deck", isAirborn=false},
{id=18,vname="TaxyingToFlightDeck", text="Moving to flight deck", isAirborn=false},
{id=19,vname="BVRAttack", text="Executing BVR attack", isAirborn=true},
{id=20,vname="BVRCrank", text="Cranking", isAirborn=true},
{id=21,vname="Dogfight", text="Dogfight", isAirborn=true},
{id=22,vname="TransferringCargo", text="Transferring Cargo", isAirborn=false} --isAirborn here is not necessarily accurate.
}

User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

That's awesome! However I think the actual value I'm interested in is the isAirborn status boolean. The operative point of the function was to determine if an a/c is airborne, which that value seems to condense quite well. Any way to shake that loose from a wrapper?
Whicker
Posts: 664
Joined: Tue Jun 19, 2018 9:54 pm

RE: Desert Fox Diary - Pt 1

Post by Whicker »

I see something else in the wrapper that may work:
airbornetime

In a quick test it was 0 for an AC that was airborne and then landed - it was not 0 while it was in the air. Would need more testing but it might work.
I was able to access it like:

local u = ScenEdit_GetUnit({name='F-14D Tomcat', guid='78407e18-3841-4f63-bcc2-df202cc3dc3c'})
print(u.airbornetime)
User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

That's a good idea!
User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

A bit of work over the past couple of days. I've got all the major functions written and mostly tested. Here's a list of planned events and their consequences...

Scenario Loaded Up (always run)
This event runs at the Scenario Load each time. It loads unit/mission tables, functions and constants. It then runs table pruning functions to ensure current unit tables are accurate to units currently in play.

ScenStart (run once)
This event runs at the Scenario Load but runs once (at the beginning). It removes the unit auto-detect from certain Iraq IADS units such as Area SAMS and mobile EW Radars. Some of those Area SAMs, SHORADS and mobile EW Radars will also be moved to alternate locations at this time with the assumption that the Iraqis are aware of an impending attack and that US/UK intel is not real-time.

Unit Destroyed - Iraq IADS (Unit Destroyed)
This event runs each time a unit on the Iraq IADS side has a unit destroyed. It evaluates the kind of unit destroyed and processes results accordingly according to their type. If an IADS node is destroyed then functions determine any IADS degradations - ie moving of zone Area SAMs to the Iraq IADS_ side. If an IADS control center is destroyed there is a potential for Area SAM proficiency loss. Only IADS nodes are pruned in this Event, all other Iraq IADS tables are pruned each Pulse. It also assesses score change to the US/UK side if the destroyed unit is a TARGET.

Unit Destroyed - Iraq IADS_ (Unit Destroyed)
Since only Area SAMs will be on this side this event only assesses a score change to the US/UK side if the destroyed SAM is a TARGET.

US/UK Aircraft Destroyed (Unit Destroyed)
This event assesses a score change to the US/UK side.

Pulse (Repeated Time Event every 30 seconds)
This event goes off every 30 seconds and does a variety of things. First it prunes applicable unit tables (Iraqi SAMs, Iraqi EW Radars, US/UK aircraft) so they reflect the current game state. It then evaluates Radar state by Zone and attempts to keep up to two radars per Zone active. It also evaluates the ROE of all current Area SAMS and if a US/UK aircraft is in a threatened area they have a chance to go to a FREE FIRE ROE for a certain amount of time. Those who’s FREE FIRE timer has not been activated or expired are set to HOLD FIRE. Finally it determines a similar effect for AAA zone missions which contain SHORADS and activates these missions (with FREE FIRE and active radar) if conditions are met, otherwise silences them.

0200 17Dec 1998 (Specific Time Event)
This event provides the US/UK player with a Text Box that warns them that by order of Commander, USCENTCOM all aircraft other than those tasked with CSAR or recon missions are to be clear of hostile Iraqi airspace by 0300 17Dec 1998 (dawn). Info on eligible units for CSAR and recon will be provided in US/UK side briefing.

0300 17Dec 1998 (Specific Time Event)
This event provides the US/UK player with a Text Box indicating that hostile Iraqi airspace is now prohibited to aircraft not on CSAR or Recon missions until 1500 17Dec 1998 (dusk). Info on eligible units for CSAR and recon will be provided in US/UK side briefing. This event will also start the Check Airspace event.

Check Airspace (Repeated Time Event, every 5 minutes)
This event checks for the presence of US/UK aircraft in the hostile Iraq airspace zone. If found and not ascribed as a permitted CSAR or recon aircraft (F-14s with TARPS pod loadouts will be allowed), then it provides the US/UK player with a text box explaining they are in violation of USCENTCOM operational orders. This also incurs a heavy penalty on US/UK score per ac violation per 5 minutes.

1000 - 1200 17Dec 1998 (Random Time Event)
Mobile Iraq SAMs, Radars and SHORADS have a chance of being relocated to somewhere nearby.

1400 17Dec 1998 (Specific Time Event)
The US/UK player is player is provided with a text box that indicates that all strike aircraft will be permitted into Iraqi hostile airspace starting at 1500 17Dec 1998 (dusk).

1500 17Dec 1998 (Specific Time Event)
The US/UK player is provided a text box indicating that all strike aircraft are now cleared for entry into Iraq hostile airspace. The Check Airspace event is suspended.

0200 18Dec 1998 (Specific Time Event)
As the same event at this time on 17Dec.

0300 18Dec 1998 (Specific Time Event)
As the same event at this time on 17Dec.

1000 - 1200 18Dec 1998 (Random Time Event)
As the same event in this interval on 17Dec.

1400 18Dec 1998 (Specific Time Event)
As the same event at this time on 17Dec.

1500 18Dec 1998 (Specific Time Event)
As the same event at this time on 17Dec.

0200 19Dec 1998 (Specific Time Event)
As the same event at this time on 17Dec.

0300 19Dec 1998 (Specific Time Event)
As the same event at this time on 17Dec.

1000 - 1200 19Dec 1998 (Random Time Event)
As the same event in this interval on 17Dec.

1400 19Dec 1998 (Specific Time Event)
As the same event at this time on 17Dec.

1500 19Dec 1998 (Specific Time Event)
As the same event at this time on 17Dec.

0200 20Dec 1998 (Specific Time Event)
This event provides the US/UK player with a Text Box that tells them that all offensive actions will be suspended as of 0300 GMT.

0300 18Dec 1998 (Specific Time Event)
Scenario Ends

I'll probably spend a couple more days mucking with my micro test scenario to work out any obvious kinks. After that it's back to the Desert Fox scenario, which already has a ton of units placed. I have to complete laying out the OOB on the board, make applicable Lua tables containing those units for event processing, create some missions, enter the time/date events and write a scenario description + side briefing. I'm thinking a v1.0 release in the next week or two at this point.

For v1.0 I don't think I'll lay out a CSAR option, which may show up in a later update. For now I have US/UK aircraft identified as 'Strike', 'CSAR' and 'Recon', with the latter two not incurring a penalty for entering Iraqi airspace in daytime in prep for enabling that option.

As a side note, along with U-2S' being notated as 'Recon' aircraft, F-14s with a TARPS load out are also not penalized for daytime incursions. Recon will be a real issue in this scenario as all but firmly fixed sites will cease to have automatic detection once the game begins. It will be assumed that the intel the US is operating from is at least a day old, too, so some targets will be shuffled in that picture and need to be reacquired. I was interested in using satellites, too, but am not confident their intel would be available before the limited duration of this scenario ended. Also I'm not all that up to date on how to best implement sats, either. The US/UK have the aforementioned recon assets as well as supporting E-3 and RC-135s. Additional organic assets include ES-3A and EA-6B carrier aircraft and the strike ac themselves, some of which have FLIR or HTS pods.

The main impetus for this scenario has been to get a feel for Lua and see how deeply you can manipulate game conditions with it. In a nutshell, WOW! There are very few limitations to a designer's possibilities. The only thing I would want at this point is a (simple) way to store tables as key values or export data to an ini file for later use. With that you could really set up perpetuating games that could last indefinitely, and if you use a more abstract approach, you already can.
User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

Wrote a draft Scenario Description today.

Scenario Description
Date/Time: 16 December, 1998 / 21:00:00 Zulu
Location: Iraq
Playable Sides: US/UK
Duration: 3 days


Following mounting instances of Saddam’s interference and obfuscation with UNSCOM inspectors’ access to potential WMD research, manufacturing and storage sites, the United States and United Kingdom mounted a short, pointed air offensive against suspected WMD, C3 and Air Defense targets in Iraq. Beginning on the evening of December 16th, 1998 the operation continued through the early hours of December 20th and involved large numbers of USN Tomahawk and USAF CALCM cruise missiles along with US & UK air force and naval strike aircraft. General Anthony Zinni, CinC USCENTCOM, stated afterwards that 85% of identified targets had been struck during Desert Fox and that 74% had been destroyed to his satisfaction.

This action stands out as being the first large operation where precision guided munitions formed the majority of weapons employed by the attackers. It also saw the largest number of cruise missile strikes up until that time, and second only to Operation Iraqi Freedom, 5 years later. The B-1B Lancer bomber received it’s combat christening during Desert Fox as well, flying a single mission with iron bombs out of Thumrait in Oman against an Iraqi army target. Remarkably, there were no air losses to the US or UK although hundreds of combat sorties were flown. Very few SAM encounters were documented and the Iraqi IADS was remarkably quiet, counter to expectation.

Scenario Notes:
This scenario has somewhat complex behavior for the Iraqi air defense system. It will endeavor to keep it’s radars radiating in random rotation throughout the country, move air defense units and sensors during the day when attacking warplanes have departed and have SAMs that only radiate when firing at an Allied aircraft. On the other hand the IADS command and communication structure is open to damage and degradation, with firing units losing access to early warning radar information and losing proficiency as important IADS nodes and control centers are eliminated.
Area SAMs also are less likely to fire, even if they have contact with an Allied aircraft. As the player you will be prompted to choose Historical, Normal or Aggressive levels of play as a Special Action at the start of play. Historical will very rarely fire SAMs. Normal is shy but loitering for long around a SAM battery is risky. Aggressive will have the Iraqis frequently firing.

User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

And the US/UK Side Briefing draft.

US/UK Side Briefing

Situation:
UN weapon inspectors have withdrawn from Iraq after citing insurmountable interference and obstruction to their mission by Iraqi authorities. For failure in complying with the UN Security Council’s resolutions both the United States and Great Britain are committing military forces to a corrective strike against Iraq meant to degrade Saddam Hussein’s ability to field weapons of mass destruction.

Mission:
USCENTCOM has presented a large array of targets to be destroyed in the upcoming operation. Primary among these are high-confidence WMD research, manufacturing and storage facilities. Other targets include barracks & staging areas for elements of the Republican Guard and Special Republican Guard which help Saddam maintain control in Iraq. Finally there are a wide array of IADS Control Centers, communications nodes and SAM batteries that need to be suppressed to ensure the safety of our strike aircraft.

Commander’s Intent:
Due to the beginning of Ramadan this operation will be of short duration. Saddam still has potent ADA resources so degrading his high altitude SAMs and overall IADS will be crucial to keeping losses to a minimum. An impressive amount of AAA is in evidence, making low level flight quite dangerous. Keep aircraft to medium and high altitudes unless otherwise necessary. ROE - Weapons Tight.

Execution:
We understand that the Iraqis are expecting our attack given the rapid departure of the UNSCOM inspectors. As such an overwhelming opening blow against their defenses should be our opening move. We can expect that they have already displaced a sizable number of air defense positions so strike hard before they can complete any other moves. You will need to utilize recon missions to acquire some target units that have moved from their initial location. Above all, this operation will only strike at Iraqi targets with manned aircraft at night and must be clear of the the engagement area before 0300Z each morning. While it is not expected that Iraqi AF aircraft would react to our forces, defensive counter air measures must be taken.

Timeline:
Commence operations immediately. Stand by for further directives from USCENTCOM regarding operational tempo as BDA and NCA feedback becomes available.

Admin:
Units at your command include…
ENTERPRISE Carrier Strike Group, Arabian Gulf
VINSON Carrier Strike Group, Red Sea
BELLEAU WOOD Amphibious Ready Group, Persian Gulf
SSN 767 HAMPTON
USAF & RAF combat assets at Ahmed Al Jaber Air Base, Kuwait
USAF strategic reconnaissance assets at King Fahad Air Base, Saudi Arabia
USAF bomber assets at Thumrait Air Base, Oman
USAF bomber and tanker assets at Diego Garcia, BIOT

Of these, the 355th FS (A-10) & 522nd FS (F-16C) and all elements of the BELLEAU WOOD ARG are available for CSAR operations. These units will not be penalized for entry into hostile Iraqi airspace during daylight hours in the event of an ongoing CSAR mission. Additionally U-2S reconnaissance aircraft and F-14 Tomcat aircraft with TARPS pods are similarly allowed for theater recon of Iraqi targets. AWACS and strategic ELINT platforms are on hand for support but not directly in your chain of command.

Logistics:
Units may draw on all available assets and munitions to accomplish their mission. Resupply will not be available until the conclusion of the operation.

Command & Signal:
US Army Central Command. Serves as Land Component Commander.
US Naval Forces Central Command. Serves as Naval Component Commander.
US Air Force Central Command. Serves as Air Component Commander.
U.S. Marine Forces Central. Provide forces to the Land Component Commander.
U.S. Special Operations Command Central. Provide Special Operations Forces to the Combined Joint Special Operations Task Force Commander.
Command Post -- Shaikh Isa AB, Bahrain
KnightHawk75
Posts: 1850
Joined: Thu Nov 15, 2018 7:24 pm

RE: Desert Fox Diary - Pt 1

Post by KnightHawk75 »

Any way to shake that loose from a wrapper?
Not sure what you mean? I mean I wrapped it in a sort of namespace for my purposes at the time but it's still just a table. ;)
All sort of moot with altitude and airborntime existing for your purposes though but didn't want to ignore the question.

Nice progress btw, normally this might not be my cup of tea, but all the logic going into the iraqi AD side makes it sound far more interesting and challenging than I might otherwise assume if I'd not followed the thread. It's good the scenario notes advertise the enemy is 'smart\flexible' and that equally it will attempt to simulate fallout from it's C&C being attacked successfully, and that I can play it non-historically.
User avatar
Primarchx
Posts: 1954
Joined: Sun Jan 20, 2013 9:29 pm

RE: Desert Fox Diary - Pt 1

Post by Primarchx »

I think we have the 'aircraft-in-flight' test == number-of-minutes-in-flight field from the unit wrapper, so trying to extract the isAirborn value isn't necessary at this point.

Thanks for the feedback, KnightHawk75. I started this scenario as a springboard to getting up to speed with Lua and wanted to do something historical that could benefit from some enhancement. Desert Fox is somewhat anticlimactic from a historical point of view - the allies just bombed stuff and got shot at a little bit. Hard to make a challenging game from that. So one thing to do is up the chance of being fired upon in the standard game and provide options to make it more likely or less (which would be more historical). Also make some targets less static, use the limited historical OOB and restrict the time the allies can send aircraft in to attack.

Writing a dev diary has been a way to document some things, provide some guidance to other scenario designers (and maybe coax some pointers from them, too!) and keep me on task.

The goal has been to make a scenario that someone interested in this event would like. Hopefully that works out!
Whicker
Posts: 664
Joined: Tue Jun 19, 2018 9:54 pm

RE: Desert Fox Diary - Pt 1

Post by Whicker »

Writing a dev diary has been a way to document some things, provide some guidance to other scenario designers

I like this idea a lot. thanks for doing it - we're just selfish people really, you with the diary, me with the vids -what we really want is more people to make scens for US to play haha!
KnightHawk75
Posts: 1850
Joined: Thu Nov 15, 2018 7:24 pm

RE: Desert Fox Diary - Pt 1

Post by KnightHawk75 »

ORIGINAL: Whicker
Writing a dev diary has been a way to document some things, provide some guidance to other scenario designers

I like this idea a lot. thanks for doing it - we're just selfish people really, you with the diary, me with the vids -what we really want is more people to make scens for US to play haha!

I like it as well. Definitely both help in that regard.
Post Reply

Return to “Mods and Scenarios”