mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Merge branch 'develop' into waypoint-planning
This commit is contained in:
commit
1f18bf2bd8
@ -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
|
||||
)
|
||||
|
||||
82
resources/campaigns/battle_of_britain.json
Normal file
82
resources/campaigns/battle_of_britain.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
58
resources/campaigns/desert_war.json
Normal file
58
resources/campaigns/desert_war.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
72
resources/campaigns/dunkirk.json
Normal file
72
resources/campaigns/dunkirk.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
103
resources/campaigns/emirates.json
Normal file
103
resources/campaigns/emirates.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
180
resources/campaigns/full_map.json
Normal file
180
resources/campaigns/full_map.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
78
resources/campaigns/golan_heights_battle.json
Normal file
78
resources/campaigns/golan_heights_battle.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
78
resources/campaigns/inherent_resolve.json
Normal file
78
resources/campaigns/inherent_resolve.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
84
resources/campaigns/invasion_from_turkey.json
Normal file
84
resources/campaigns/invasion_from_turkey.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
140
resources/campaigns/invasion_of_iran.json
Normal file
140
resources/campaigns/invasion_of_iran.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
74
resources/campaigns/invasion_of_iran_[lite].json
Normal file
74
resources/campaigns/invasion_of_iran_[lite].json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
82
resources/campaigns/normandy.json
Normal file
82
resources/campaigns/normandy.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
56
resources/campaigns/normandy_small.json
Normal file
56
resources/campaigns/normandy_small.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
96
resources/campaigns/north_caucasus.json
Normal file
96
resources/campaigns/north_caucasus.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
70
resources/campaigns/north_nevada.json
Normal file
70
resources/campaigns/north_nevada.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
36
resources/campaigns/russia_small.json
Normal file
36
resources/campaigns/russia_small.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
88
resources/campaigns/syrian_civil_war.json
Normal file
88
resources/campaigns/syrian_civil_war.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
108
resources/campaigns/western_georgia.json
Normal file
108
resources/campaigns/western_georgia.json
Normal 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"
|
||||
]
|
||||
]
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user