Merge branch 'develop' into waypoint-planning

This commit is contained in:
C. Perreau 2020-10-06 22:01:44 +02:00 committed by GitHub
commit 1f18bf2bd8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 1533 additions and 44 deletions

View File

@ -68,26 +68,8 @@ class Operation:
def initialize(self, mission: Mission, conflict: Conflict):
self.current_mission = mission
self.conflict = conflict
self.radio_registry = RadioRegistry()
self.tacan_registry = TacanRegistry()
self.airgen = AircraftConflictGenerator(
mission, conflict, self.game.settings, self.game,
self.radio_registry)
self.airsupportgen = AirSupportConflictGenerator(
mission, conflict, self.game, self.radio_registry,
self.tacan_registry)
self.triggersgen = TriggersGenerator(mission, conflict, self.game)
self.visualgen = VisualGenerator(mission, conflict, self.game)
self.envgen = EnviromentGenerator(mission, conflict, self.game)
self.forcedoptionsgen = ForcedOptionsGenerator(mission, conflict, self.game)
self.groundobjectgen = GroundObjectsGenerator(
mission,
conflict,
self.game,
self.radio_registry,
self.tacan_registry
)
self.briefinggen = BriefingGenerator(mission, conflict, self.game)
self.briefinggen = BriefingGenerator(self.current_mission,
self.conflict, self.game)
def prepare(self, terrain: Terrain, is_quick: bool):
with open("resources/default_options.lua", "r") as f:
@ -127,6 +109,9 @@ class Operation:
self.defenders_starting_position = self.to_cp.at
def generate(self):
radio_registry = RadioRegistry()
tacan_registry = TacanRegistry()
# Dedup beacon/radio frequencies, since some maps have some frequencies
# used multiple times.
beacons = load_beacons_for_terrain(self.game.theater.terrain.name)
@ -138,7 +123,7 @@ class Operation:
logging.error(
f"TACAN beacon has no channel: {beacon.callsign}")
else:
self.tacan_registry.reserve(beacon.tacan_channel)
tacan_registry.reserve(beacon.tacan_channel)
for airfield, data in AIRFIELD_DATA.items():
if data.theater == self.game.theater.terrain.name:
@ -150,16 +135,26 @@ class Operation:
# beacon list.
for frequency in unique_map_frequencies:
self.radio_registry.reserve(frequency)
radio_registry.reserve(frequency)
# Generate meteo
envgen = EnviromentGenerator(self.current_mission, self.conflict,
self.game)
if self.environment_settings is None:
self.environment_settings = self.envgen.generate()
self.environment_settings = envgen.generate()
else:
self.envgen.load(self.environment_settings)
envgen.load(self.environment_settings)
# Generate ground object first
self.groundobjectgen.generate()
groundobjectgen = GroundObjectsGenerator(
self.current_mission,
self.conflict,
self.game,
radio_registry,
tacan_registry
)
groundobjectgen.generate()
# Generate destroyed units
for d in self.game.get_destroyed_units():
@ -180,9 +175,11 @@ class Operation:
dead=True,
)
# Air Support (Tanker & Awacs)
self.airsupportgen.generate(self.is_awacs_enabled)
airsupportgen = AirSupportConflictGenerator(
self.current_mission, self.conflict, self.game, radio_registry,
tacan_registry)
airsupportgen.generate(self.is_awacs_enabled)
# Generate Activity on the map
self.airgen.generate_flights(
@ -196,6 +193,7 @@ class Operation:
self.groundobjectgen.runways
)
# Generate ground units on frontline everywhere
jtacs: List[JtacInfo] = []
for player_cp, enemy_cp in self.game.theater.conflicts(True):
@ -218,18 +216,20 @@ class Operation:
self.current_mission.groundControl.red_tactical_commander = self.ca_slots
# Triggers
if self.game.is_player_attack(self.conflict.attackers_country):
cp = self.conflict.from_cp
else:
cp = self.conflict.to_cp
self.triggersgen.generate()
triggersgen = TriggersGenerator(self.current_mission, self.conflict,
self.game)
triggersgen.generate()
# Options
self.forcedoptionsgen.generate()
forcedoptionsgen = ForcedOptionsGenerator(self.current_mission,
self.conflict, self.game)
forcedoptionsgen.generate()
# Generate Visuals Smoke Effects
visualgen = VisualGenerator(self.current_mission, self.conflict,
self.game)
if self.game.settings.perf_smoke_gen:
self.visualgen.generate()
visualgen.generate()
# Inject Plugins Lua Scripts
listOfPluginsScripts = []
@ -324,19 +324,20 @@ class Operation:
trigger.add_action(DoScript(String(lua)))
self.current_mission.triggerrules.triggers.append(trigger)
self.assign_channels_to_flights()
self.assign_channels_to_flights(airgen.flights,
airsupportgen.air_support)
kneeboard_generator = KneeboardGenerator(self.current_mission)
for dynamic_runway in self.groundobjectgen.runways.values():
for dynamic_runway in groundobjectgen.runways.values():
self.briefinggen.add_dynamic_runway(dynamic_runway)
for tanker in self.airsupportgen.air_support.tankers:
for tanker in airsupportgen.air_support.tankers:
self.briefinggen.add_tanker(tanker)
kneeboard_generator.add_tanker(tanker)
if self.is_awacs_enabled:
for awacs in self.airsupportgen.air_support.awacs:
for awacs in airsupportgen.air_support.awacs:
self.briefinggen.add_awacs(awacs)
kneeboard_generator.add_awacs(awacs)
@ -344,21 +345,23 @@ class Operation:
self.briefinggen.add_jtac(jtac)
kneeboard_generator.add_jtac(jtac)
for flight in self.airgen.flights:
for flight in airgen.flights:
self.briefinggen.add_flight(flight)
kneeboard_generator.add_flight(flight)
self.briefinggen.generate()
kneeboard_generator.generate()
def assign_channels_to_flights(self) -> None:
def assign_channels_to_flights(self, flights: List[FlightData],
air_support: AirSupport) -> None:
"""Assigns preset radio channels for client flights."""
for flight in self.airgen.flights:
for flight in flights:
if not flight.client_units:
continue
self.assign_channels_to_flight(flight)
self.assign_channels_to_flight(flight, air_support)
def assign_channels_to_flight(self, flight: FlightData) -> None:
def assign_channels_to_flight(self, flight: FlightData,
air_support: AirSupport) -> None:
"""Assigns preset radio channels for a client flight."""
airframe = flight.aircraft_type
@ -369,4 +372,5 @@ class Operation:
return
aircraft_data.channel_allocator.assign_channels_for_flight(
flight, self.airsupportgen.air_support)
flight, air_support
)

View File

@ -0,0 +1,82 @@
{
"name": "The Channel - Battle of Britain",
"theater": "The Channel",
"player_points": [
{
"type": "airbase",
"id": "Hawkinge",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Lympne",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Manston",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "High Halden",
"size": 600,
"importance": 1
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Dunkirk Mardyck",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Saint Omer Longuenesse",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Merville Calonne",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Abbeville Drucat",
"size": 600,
"importance": 1
}
],
"links": [
[
"Hawkinge",
"Lympne"
],
[
"Hawkinge",
"Manston"
],
[
"High Halden",
"Lympne"
],
[
"Dunkirk Mardyck",
"Saint Omer Longuenesse"
],
[
"Merville Calonne",
"Saint Omer Longuenesse"
],
[
"Abbeville Drucat",
"Saint Omer Longuenesse"
]
]
}

View File

@ -0,0 +1,58 @@
{
"name": "Persian Gulf - Desert War",
"theater": "Persian Gulf",
"player_points": [
{
"type": "airbase",
"id": "Liwa Airbase",
"size": 2000,
"importance": 1.2
},
{
"type": "lha",
"id": 1002,
"x": -164000,
"y": -257000
},
{
"type": "carrier",
"id": 1001,
"x": -124000,
"y": -303000
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Al Ain International Airport",
"size": 2000,
"importance": 1
},
{
"type": "airbase",
"id": "Al Maktoum Intl",
"size": 2000,
"importance": 1
},
{
"type": "airbase",
"id": "Al Minhad AB",
"size": 1000,
"importance": 1
}
],
"links": [
[
"Al Ain International Airport",
"Liwa Airbase"
],
[
"Al Ain International Airport",
"Al Maktoum Intl"
],
[
"Al Maktoum Intl",
"Al Minhad AB"
]
]
}

View File

@ -0,0 +1,72 @@
{
"name": "The Channel - Dunkirk",
"theater": "The Channel",
"player_points": [
{
"type": "airbase",
"id": "Hawkinge",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Lympne",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Manston",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Dunkirk Mardyck",
"size": 600,
"importance": 1
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Saint Omer Longuenesse",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Merville Calonne",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Abbeville Drucat",
"size": 600,
"importance": 1
}
],
"links": [
[
"Hawkinge",
"Lympne"
],
[
"Hawkinge",
"Manston"
],
[
"Dunkirk Mardyck",
"Saint Omer Longuenesse"
],
[
"Merville Calonne",
"Saint Omer Longuenesse"
],
[
"Abbeville Drucat",
"Saint Omer Longuenesse"
]
]
}

View File

@ -0,0 +1,103 @@
{
"name": "Persian Gulf - Emirates",
"theater": "Persian Gulf",
"player_points": [
{
"type": "airbase",
"id": "Fujairah Intl",
"radials": [
180,
225,
270,
315,
0
],
"size": 1000,
"importance": 1
},
{
"type": "lha",
"id": 1002,
"x": -79770,
"y": 49430
},
{
"type": "carrier",
"id": 1001,
"x": -61770,
"y": 69039
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Al Dhafra AB",
"size": 2000,
"importance": 1.2
},
{
"type": "airbase",
"id": "Al Ain International Airport",
"size": 2000,
"importance": 1
},
{
"type": "airbase",
"id": "Al Maktoum Intl",
"size": 2000,
"importance": 1
},
{
"type": "airbase",
"id": "Al Minhad AB",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Sharjah Intl",
"size": 2000,
"importance": 1
},
{
"type": "airbase",
"id": "Ras Al Khaimah",
"size": 1000,
"importance": 1
}
],
"links": [
[
"Al Ain International Airport",
"Al Dhafra AB"
],
[
"Al Dhafra AB",
"Al Maktoum Intl"
],
[
"Al Ain International Airport",
"Fujairah Intl"
],
[
"Al Ain International Airport",
"Al Maktoum Intl"
],
[
"Al Maktoum Intl",
"Al Minhad AB"
],
[
"Al Minhad AB",
"Sharjah Intl"
],
[
"Ras Al Khaimah",
"Sharjah Intl"
],
[
"Fujairah Intl",
"Sharjah Intl"
]
]
}

View File

@ -0,0 +1,180 @@
{
"name": "Syria - Full Map",
"theater": "Syria",
"player_points": [
{
"type": "airbase",
"id": "Ramat David",
"size": 1000,
"importance": 1.4
},
{
"type": "carrier",
"id": 1001,
"x": -151000,
"y": -106000
},
{
"type": "lha",
"id": 1002,
"x": -131000,
"y": -161000
}
],
"enemy_points": [
{
"type": "airbase",
"id": "King Hussein Air College",
"size": 1000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Khalkhalah",
"size": 1000,
"importance": 1.2
},
{
"type": "airbase",
"id": "Al-Dumayr",
"size": 1000,
"importance": 1.2
},
{
"type": "airbase",
"id": "Al Qusayr",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Rene Mouawad",
"size": 1000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Hama",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Bassel Al-Assad",
"size": 1000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Palmyra",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Tabqa",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Jirah",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Aleppo",
"size": 1000,
"importance": 1.2
},
{
"type": "airbase",
"id": "Minakh",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Hatay",
"size": 1000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Incirlik",
"size": 1000,
"importance": 1.4
}
],
"links": [
[
"King Hussein Air College",
"Ramat David"
],
[
"Khalkhalah",
"King Hussein Air College"
],
[
"Al-Dumayr",
"Khalkhalah"
],
[
"Al Qusayr",
"Al-Dumayr"
],
[
"Al Qusayr",
"Hama"
],
[
"Al Qusayr",
"Palmyra"
],
[
"Al Qusayr",
"Rene Mouawad"
],
[
"Bassel Al-Assad",
"Rene Mouawad"
],
[
"Aleppo",
"Hama"
],
[
"Bassel Al-Assad",
"Hama"
],
[
"Bassel Al-Assad",
"Hatay"
],
[
"Palmyra",
"Tabqa"
],
[
"Jirah",
"Tabqa"
],
[
"Aleppo",
"Jirah"
],
[
"Aleppo",
"Minakh"
],
[
"Hatay",
"Minakh"
],
[
"Incirlik",
"Minakh"
]
]
}

View File

@ -0,0 +1,78 @@
{
"name": "Syria - Golan heights battle",
"theater": "Syria",
"player_points": [
{
"type": "airbase",
"id": "Ramat David",
"size": 1000,
"importance": 1.4
},
{
"type": "carrier",
"id": 1001,
"x": -280000,
"y": -238000
},
{
"type": "lha",
"id": 1002,
"x": -237000,
"y": -89800
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Khalkhalah",
"size": 1000,
"importance": 1.2
},
{
"type": "airbase",
"id": "King Hussein Air College",
"size": 1000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Marj Ruhayyil",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Mezzeh",
"size": 1000,
"importance": 1.2
},
{
"type": "airbase",
"id": "Al-Dumayr",
"size": 1000,
"importance": 1.2
}
],
"links": [
[
"Khalkhalah",
"Ramat David"
],
[
"Khalkhalah",
"King Hussein Air College"
],
[
"Khalkhalah",
"Marj Ruhayyil"
],
[
"Marj Ruhayyil",
"Mezzeh"
],
[
"Al-Dumayr",
"Marj Ruhayyil"
]
]
}

View File

@ -0,0 +1,78 @@
{
"name": "Syria - Inherent Resolve",
"theater": "Syria",
"player_points": [
{
"type": "airbase",
"id": "King Hussein Air College",
"size": 1000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Incirlik",
"size": 1000,
"importance": 1.4
},
{
"type": "carrier",
"id": 1001,
"x": -210000,
"y": -200000
},
{
"type": "lha",
"id": 1002,
"x": -131000,
"y": -161000
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Khalkhalah",
"size": 1000,
"importance": 1.2
},
{
"type": "airbase",
"id": "Palmyra",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Tabqa",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Jirah",
"size": 1000,
"importance": 1
}
],
"links": [
[
"Khalkhalah",
"King Hussein Air College"
],
[
"Incirlik",
"Incirlik"
],
[
"Khalkhalah",
"Palmyra"
],
[
"Palmyra",
"Tabqa"
],
[
"Jirah",
"Tabqa"
]
]
}

View File

@ -0,0 +1,84 @@
{
"name": "Syria - Invasion from Turkey",
"theater": "Syria",
"player_points": [
{
"type": "airbase",
"id": "Incirlik",
"size": 1000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Hatay",
"size": 1000,
"importance": 1.4
},
{
"type": "carrier",
"id": 1001,
"x": 133000,
"y": -54000
},
{
"type": "lha",
"id": 1002,
"x": 155000,
"y": -19000
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Minakh",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Aleppo",
"size": 1000,
"importance": 1.2
},
{
"type": "airbase",
"id": "Kuweires",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Jirah",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Tabqa",
"size": 1000,
"importance": 1
}
],
"links": [
[
"Hatay",
"Minakh"
],
[
"Aleppo",
"Minakh"
],
[
"Aleppo",
"Kuweires"
],
[
"Jirah",
"Kuweires"
],
[
"Jirah",
"Tabqa"
]
]
}

View File

@ -0,0 +1,140 @@
{
"name": "Persian Gulf - Invasion of Iran",
"theater": "Persian Gulf",
"player_points": [
{
"type": "airbase",
"id": "Ras Al Khaimah",
"size": 1000,
"importance": 1.2
},
{
"type": "airbase",
"id": "Khasab",
"size": 600,
"importance": 1.2
},
{
"type": "airbase",
"id": "Qeshm Island",
"radials": [
270,
315,
0,
45,
90,
135,
180
],
"size": 600,
"importance": 1.1
},
{
"type": "airbase",
"id": "Havadarya",
"radials": [
225,
270,
315,
0,
45
],
"size": 1000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Bandar Abbas Intl",
"size": 2000,
"importance": 1.4
},
{
"type": "carrier",
"id": 1001,
"x": 59514.324335475,
"y": 28165.517980635
},
{
"type": "lha",
"id": 1002,
"x": -27500.813952358,
"y": -147000.65947136
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Bandar Lengeh",
"radials": [
270,
315,
0,
45
],
"size": 600,
"importance": 1.4
},
{
"type": "airbase",
"id": "Shiraz International Airport",
"size": 2000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Jiroft Airport",
"size": 2000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Kerman Airport",
"size": 2000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Lar Airbase",
"size": 1000,
"importance": 1.4
}
],
"links": [
[
"Khasab",
"Ras Al Khaimah"
],
[
"Bandar Lengeh",
"Lar Airbase"
],
[
"Havadarya",
"Lar Airbase"
],
[
"Bandar Abbas Intl",
"Havadarya"
],
[
"Bandar Abbas Intl",
"Jiroft Airport"
],
[
"Lar Airbase",
"Shiraz International Airport"
],
[
"Kerman Airport",
"Shiraz International Airport"
],
[
"Jiroft Airport",
"Kerman Airport"
],
[
"Kerman Airport",
"Lar Airbase"
]
]
}

View File

@ -0,0 +1,74 @@
{
"name": "Persian Gulf - Invasion of Iran [Lite]",
"theater": "Persian Gulf",
"player_points": [
{
"type": "airbase",
"id": "Bandar Lengeh",
"radials": [
270,
315,
0,
45
],
"size": 600,
"importance": 1.4
},
{
"type": "carrier",
"id": 1001,
"x": 72000.324335475,
"y": -376000
},
{
"type": "lha",
"id": 1002,
"x": -27500.813952358,
"y": -147000.65947136
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Shiraz International Airport",
"size": 2000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Jiroft Airport",
"size": 2000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Kerman Airport",
"size": 2000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Lar Airbase",
"size": 1000,
"importance": 1.4
}
],
"links": [
[
"Bandar Lengeh",
"Lar Airbase"
],
[
"Lar Airbase",
"Shiraz International Airport"
],
[
"Kerman Airport",
"Shiraz International Airport"
],
[
"Jiroft Airport",
"Kerman Airport"
]
]
}

View File

@ -0,0 +1,82 @@
{
"name": "Normandy - Normandy",
"theater": "Normandy",
"player_points": [
{
"type": "airbase",
"id": "Chailey",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Needs Oar Point",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Deux Jumeaux",
"size": 600,
"importance": 1
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Lignerolles",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Lessay",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Carpiquet",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Maupertus",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Evreux",
"size": 600,
"importance": 1
}
],
"links": [
[
"Chailey",
"Needs Oar Point"
],
[
"Deux Jumeaux",
"Lignerolles"
],
[
"Lessay",
"Lignerolles"
],
[
"Carpiquet",
"Lignerolles"
],
[
"Lessay",
"Maupertus"
],
[
"Carpiquet",
"Evreux"
]
]
}

View File

@ -0,0 +1,56 @@
{
"name": "Normandy - Normandy Small",
"theater": "Normandy",
"player_points": [
{
"type": "airbase",
"id": "Needs Oar Point",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Deux Jumeaux",
"size": 600,
"importance": 1
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Lignerolles",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Carpiquet",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Evreux",
"size": 600,
"importance": 1
}
],
"links": [
[
"Needs Oar Point",
"Needs Oar Point"
],
[
"Deux Jumeaux",
"Lignerolles"
],
[
"Carpiquet",
"Lignerolles"
],
[
"Carpiquet",
"Evreux"
]
]
}

View File

@ -0,0 +1,96 @@
{
"name": "Caucasus - North Caucasus",
"theater": "Caucasus",
"player_points": [
{
"type": "airbase",
"id": "Kutaisi",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Vaziani",
"size": 600,
"importance": 1
},
{
"type": "carrier",
"id": 1001,
"x": -285810.6875,
"y": 496399.1875
},
{
"type": "lha",
"id": 1002,
"x": -326050.6875,
"y": 519452.1875
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Beslan",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Nalchik",
"size": 1000,
"importance": 1.1
},
{
"type": "airbase",
"id": "Mozdok",
"size": 2000,
"importance": 1.1
},
{
"type": "airbase",
"id": "Mineralnye Vody",
"size": 2000,
"importance": 1.3
},
{
"type": "airbase",
"id": "Maykop-Khanskaya",
"size": 3000,
"importance": 1.4
}
],
"links": [
[
"Kutaisi",
"Vaziani"
],
[
"Beslan",
"Vaziani"
],
[
"Beslan",
"Mozdok"
],
[
"Beslan",
"Nalchik"
],
[
"Mozdok",
"Nalchik"
],
[
"Mineralnye Vody",
"Nalchik"
],
[
"Mineralnye Vody",
"Mozdok"
],
[
"Maykop-Khanskaya",
"Mineralnye Vody"
]
]
}

View File

@ -0,0 +1,70 @@
{
"name": "Nevada - North Nevada",
"theater": "Nevada",
"player_points": [
{
"type": "airbase",
"id": "Nellis AFB",
"size": 2000,
"importance": 1.4
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Tonopah Test Range Airfield",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Lincoln County",
"size": 600,
"importance": 1.2
},
{
"type": "airbase",
"id": "Groom Lake AFB",
"size": 1000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Creech AFB",
"size": 2000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Mesquite",
"size": 1000,
"importance": 1.3
}
],
"links": [
[
"Lincoln County",
"Tonopah Test Range Airfield"
],
[
"Groom Lake AFB",
"Tonopah Test Range Airfield"
],
[
"Lincoln County",
"Mesquite"
],
[
"Groom Lake AFB",
"Mesquite"
],
[
"Creech AFB",
"Groom Lake AFB"
],
[
"Creech AFB",
"Nellis AFB"
]
]
}

View File

@ -0,0 +1,36 @@
{
"name": "Caucasus - Russia Small",
"theater": "Caucasus",
"player_points": [
{
"type": "airbase",
"id": "Mozdok",
"size": 2000,
"importance": 1.1
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Mineralnye Vody",
"size": 2000,
"importance": 1.3
},
{
"type": "airbase",
"id": "Maykop-Khanskaya",
"size": 3000,
"importance": 1.4
}
],
"links": [
[
"Mineralnye Vody",
"Mozdok"
],
[
"Maykop-Khanskaya",
"Mineralnye Vody"
]
]
}

View File

@ -0,0 +1,88 @@
{
"name": "Syria - Syrian Civil War",
"theater": "Syria",
"player_points": [
{
"type": "airbase",
"id": "Bassel Al-Assad",
"size": 1000,
"importance": 1.4
},
{
"type": "airbase",
"id": "Marj Ruhayyil",
"size": 1000,
"importance": 1
},
{
"type": "carrier",
"id": 1001,
"x": 18537,
"y": -52000
},
{
"type": "lha",
"id": 1002,
"x": 116000,
"y": -30000
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Hama",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Aleppo",
"size": 1000,
"importance": 1.2
},
{
"type": "airbase",
"id": "Al Qusayr",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Palmyra",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Al-Dumayr",
"size": 1000,
"importance": 1.2
}
],
"links": [
[
"Bassel Al-Assad",
"Hama"
],
[
"Al-Dumayr",
"Marj Ruhayyil"
],
[
"Aleppo",
"Hama"
],
[
"Al Qusayr",
"Hama"
],
[
"Al Qusayr",
"Al-Dumayr"
],
[
"Al Qusayr",
"Palmyra"
]
]
}

View File

@ -0,0 +1,108 @@
{
"name": "Caucasus - Western Georgia",
"theater": "Caucasus",
"player_points": [
{
"type": "airbase",
"id": "Kobuleti",
"radials": [
0,
45,
90,
135,
180,
225,
315
],
"size": 600,
"importance": 1.1
},
{
"type": "carrier",
"id": 1001,
"x": -285810.6875,
"y": 496399.1875
},
{
"type": "lha",
"id": 1002,
"x": -326050.6875,
"y": 519452.1875
}
],
"enemy_points": [
{
"type": "airbase",
"id": "Kutaisi",
"size": 600,
"importance": 1
},
{
"type": "airbase",
"id": "Senaki-Kolkhi",
"size": 1000,
"importance": 1
},
{
"type": "airbase",
"id": "Sukhumi-Babushara",
"radials": [
315,
0,
45,
90,
135
],
"size": 1000,
"importance": 1.2
},
{
"type": "airbase",
"id": "Gudauta",
"radials": [
315,
0,
45,
90,
135
],
"size": 1000,
"importance": 1.2
},
{
"type": "airbase",
"id": "Sochi-Adler",
"radials": [
315,
0,
45,
90,
135
],
"size": 2000,
"importance": 1.4
}
],
"links": [
[
"Kutaisi",
"Senaki-Kolkhi"
],
[
"Kobuleti",
"Senaki-Kolkhi"
],
[
"Senaki-Kolkhi",
"Sukhumi-Babushara"
],
[
"Gudauta",
"Sukhumi-Babushara"
],
[
"Gudauta",
"Sochi-Adler"
]
]
}