mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
First version of the generated Pretense campaign running in-game.
This commit is contained in:
parent
d517b1cdeb
commit
93265040f6
@ -55,174 +55,17 @@ class PretenseLuaGenerator(LuaGenerator):
|
|||||||
def generate_plugin_data(self) -> None:
|
def generate_plugin_data(self) -> None:
|
||||||
self.mission.triggerrules.triggers.clear()
|
self.mission.triggerrules.triggers.clear()
|
||||||
|
|
||||||
lua_data = LuaData("dcsRetribution")
|
self.inject_plugin_script("base", "mist_4_5_107.lua", "mist_4_5_107")
|
||||||
|
self.inject_plugin_script(
|
||||||
install_path = lua_data.add_item("installPath")
|
"pretense", "pretense_compiled.lua", "pretense_compiled"
|
||||||
install_path.set_value(os.path.abspath("."))
|
|
||||||
|
|
||||||
lua_data.add_item("Airbases")
|
|
||||||
carriers_object = lua_data.add_item("Carriers")
|
|
||||||
|
|
||||||
for carrier in self.mission_data.carriers:
|
|
||||||
carrier_item = carriers_object.add_item()
|
|
||||||
carrier_item.add_key_value("dcsGroupName", carrier.group_name)
|
|
||||||
carrier_item.add_key_value("unit_name", carrier.unit_name)
|
|
||||||
carrier_item.add_key_value("callsign", carrier.callsign)
|
|
||||||
carrier_item.add_key_value("radio", str(carrier.freq.mhz))
|
|
||||||
carrier_item.add_key_value(
|
|
||||||
"tacan", str(carrier.tacan.number) + carrier.tacan.band.name
|
|
||||||
)
|
)
|
||||||
|
|
||||||
tankers_object = lua_data.add_item("Tankers")
|
|
||||||
for tanker in self.mission_data.tankers:
|
|
||||||
tanker_item = tankers_object.add_item()
|
|
||||||
tanker_item.add_key_value("dcsGroupName", tanker.group_name)
|
|
||||||
tanker_item.add_key_value("callsign", tanker.callsign)
|
|
||||||
tanker_item.add_key_value("variant", tanker.variant)
|
|
||||||
tanker_item.add_key_value("radio", str(tanker.freq.mhz))
|
|
||||||
tanker_item.add_key_value(
|
|
||||||
"tacan", str(tanker.tacan.number) + tanker.tacan.band.name
|
|
||||||
)
|
|
||||||
|
|
||||||
awacs_object = lua_data.add_item("AWACs")
|
|
||||||
for awacs in self.mission_data.awacs:
|
|
||||||
awacs_item = awacs_object.add_item()
|
|
||||||
awacs_item.add_key_value("dcsGroupName", awacs.group_name)
|
|
||||||
awacs_item.add_key_value("callsign", awacs.callsign)
|
|
||||||
awacs_item.add_key_value("radio", str(awacs.freq.mhz))
|
|
||||||
|
|
||||||
jtacs_object = lua_data.add_item("JTACs")
|
|
||||||
for jtac in self.mission_data.jtacs:
|
|
||||||
jtac_item = jtacs_object.add_item()
|
|
||||||
jtac_item.add_key_value("dcsGroupName", jtac.group_name)
|
|
||||||
jtac_item.add_key_value("callsign", jtac.callsign)
|
|
||||||
jtac_item.add_key_value("zone", jtac.region)
|
|
||||||
jtac_item.add_key_value("dcsUnit", jtac.unit_name)
|
|
||||||
jtac_item.add_key_value("laserCode", jtac.code)
|
|
||||||
jtac_item.add_key_value("radio", str(jtac.freq.mhz))
|
|
||||||
jtac_item.add_key_value("modulation", jtac.freq.modulation.name)
|
|
||||||
|
|
||||||
logistics_object = lua_data.add_item("Logistics")
|
|
||||||
logistics_flights = logistics_object.add_item("flights")
|
|
||||||
crates_object = logistics_object.add_item("crates")
|
|
||||||
spawnable_crates: dict[str, str] = {}
|
|
||||||
transports: list[AircraftType] = []
|
|
||||||
for logistic_info in self.mission_data.logistics:
|
|
||||||
if logistic_info.transport not in transports:
|
|
||||||
transports.append(logistic_info.transport)
|
|
||||||
coalition_color = "blue" if logistic_info.blue else "red"
|
|
||||||
logistics_item = logistics_flights.add_item()
|
|
||||||
logistics_item.add_data_array("pilot_names", logistic_info.pilot_names)
|
|
||||||
logistics_item.add_key_value("pickup_zone", logistic_info.pickup_zone)
|
|
||||||
logistics_item.add_key_value("drop_off_zone", logistic_info.drop_off_zone)
|
|
||||||
logistics_item.add_key_value("target_zone", logistic_info.target_zone)
|
|
||||||
logistics_item.add_key_value("side", str(2 if logistic_info.blue else 1))
|
|
||||||
logistics_item.add_key_value("logistic_unit", logistic_info.logistic_unit)
|
|
||||||
logistics_item.add_key_value(
|
|
||||||
"aircraft_type", logistic_info.transport.dcs_id
|
|
||||||
)
|
|
||||||
logistics_item.add_key_value(
|
|
||||||
"preload", "true" if logistic_info.preload else "false"
|
|
||||||
)
|
|
||||||
for cargo in logistic_info.cargo:
|
|
||||||
if cargo.unit_type not in spawnable_crates:
|
|
||||||
spawnable_crates[cargo.unit_type] = str(200 + len(spawnable_crates))
|
|
||||||
crate_weight = spawnable_crates[cargo.unit_type]
|
|
||||||
for i in range(cargo.amount):
|
|
||||||
cargo_item = crates_object.add_item()
|
|
||||||
cargo_item.add_key_value("weight", crate_weight)
|
|
||||||
cargo_item.add_key_value("coalition", coalition_color)
|
|
||||||
cargo_item.add_key_value("zone", cargo.spawn_zone)
|
|
||||||
transport_object = logistics_object.add_item("transports")
|
|
||||||
for transport in transports:
|
|
||||||
transport_item = transport_object.add_item()
|
|
||||||
transport_item.add_key_value("aircraft_type", transport.dcs_id)
|
|
||||||
transport_item.add_key_value("cabin_size", str(transport.cabin_size))
|
|
||||||
transport_item.add_key_value(
|
|
||||||
"troops", "true" if transport.cabin_size > 0 else "false"
|
|
||||||
)
|
|
||||||
transport_item.add_key_value(
|
|
||||||
"crates", "true" if transport.can_carry_crates else "false"
|
|
||||||
)
|
|
||||||
spawnable_crates_object = logistics_object.add_item("spawnable_crates")
|
|
||||||
for unit, weight in spawnable_crates.items():
|
|
||||||
crate_item = spawnable_crates_object.add_item()
|
|
||||||
crate_item.add_key_value("unit", unit)
|
|
||||||
crate_item.add_key_value("weight", weight)
|
|
||||||
|
|
||||||
target_points = lua_data.add_item("TargetPoints")
|
|
||||||
for flight in self.mission_data.flights:
|
|
||||||
if flight.friendly and flight.flight_type in [
|
|
||||||
FlightType.ANTISHIP,
|
|
||||||
FlightType.DEAD,
|
|
||||||
FlightType.SEAD,
|
|
||||||
FlightType.STRIKE,
|
|
||||||
]:
|
|
||||||
flight_type = str(flight.flight_type)
|
|
||||||
flight_target = flight.package.target
|
|
||||||
if flight_target:
|
|
||||||
flight_target_name = None
|
|
||||||
flight_target_type = None
|
|
||||||
if isinstance(flight_target, TheaterGroundObject):
|
|
||||||
flight_target_name = flight_target.obj_name
|
|
||||||
flight_target_type = (
|
|
||||||
flight_type + f" TGT ({flight_target.category})"
|
|
||||||
)
|
|
||||||
elif hasattr(flight_target, "name"):
|
|
||||||
flight_target_name = flight_target.name
|
|
||||||
flight_target_type = flight_type + " TGT (Airbase)"
|
|
||||||
target_item = target_points.add_item()
|
|
||||||
if flight_target_name:
|
|
||||||
target_item.add_key_value("name", flight_target_name)
|
|
||||||
if flight_target_type:
|
|
||||||
target_item.add_key_value("type", flight_target_type)
|
|
||||||
target_item.add_key_value(
|
|
||||||
"positionX", str(flight_target.position.x)
|
|
||||||
)
|
|
||||||
target_item.add_key_value(
|
|
||||||
"positionY", str(flight_target.position.y)
|
|
||||||
)
|
|
||||||
|
|
||||||
for cp in self.game.theater.controlpoints:
|
|
||||||
coalition_object = (
|
|
||||||
lua_data.get_or_create_item("BlueAA")
|
|
||||||
if cp.captured
|
|
||||||
else lua_data.get_or_create_item("RedAA")
|
|
||||||
)
|
|
||||||
for ground_object in cp.ground_objects:
|
|
||||||
for g in ground_object.groups:
|
|
||||||
threat_range = g.max_threat_range()
|
|
||||||
|
|
||||||
if not threat_range:
|
|
||||||
continue
|
|
||||||
|
|
||||||
aa_item = coalition_object.add_item()
|
|
||||||
aa_item.add_key_value("name", ground_object.name)
|
|
||||||
aa_item.add_key_value("range", str(threat_range.meters))
|
|
||||||
aa_item.add_key_value("positionX", str(ground_object.position.x))
|
|
||||||
aa_item.add_key_value("positionY", str(ground_object.position.y))
|
|
||||||
|
|
||||||
# Generate IADS Lua Item
|
|
||||||
iads_object = lua_data.add_item("IADS")
|
|
||||||
for node in self.game.theater.iads_network.skynet_nodes(self.game):
|
|
||||||
coalition = iads_object.get_or_create_item("BLUE" if node.player else "RED")
|
|
||||||
iads_type = coalition.get_or_create_item(node.iads_role.value)
|
|
||||||
iads_element = iads_type.add_item()
|
|
||||||
iads_element.add_key_value("dcsGroupName", node.dcs_name)
|
|
||||||
if node.iads_role in [IadsRole.SAM, IadsRole.SAM_AS_EWR]:
|
|
||||||
# add additional SkynetProperties to SAM Sites
|
|
||||||
for property, value in node.properties.items():
|
|
||||||
iads_element.add_key_value(property, value)
|
|
||||||
for role, connections in node.connections.items():
|
|
||||||
iads_element.add_data_array(role, connections)
|
|
||||||
|
|
||||||
trigger = TriggerStart(comment="Pretense init")
|
trigger = TriggerStart(comment="Pretense init")
|
||||||
|
|
||||||
init_header_file = open("./resources/plugins/pretense/init_header.lua", "r")
|
init_header_file = open("./resources/plugins/pretense/init_header.lua", "r")
|
||||||
init_header = init_header_file.read()
|
init_header = init_header_file.read()
|
||||||
|
|
||||||
lua_string = ""
|
lua_string_zones = ""
|
||||||
lua_data = LuaData("products")
|
|
||||||
|
|
||||||
for cp in self.game.theater.controlpoints:
|
for cp in self.game.theater.controlpoints:
|
||||||
cp_name_trimmed = "".join([i for i in cp.name.lower() if i.isalnum()])
|
cp_name_trimmed = "".join([i for i in cp.name.lower() if i.isalnum()])
|
||||||
@ -230,93 +73,129 @@ class PretenseLuaGenerator(LuaGenerator):
|
|||||||
for side in range(1, 3):
|
for side in range(1, 3):
|
||||||
if cp_name_trimmed not in self.game.pretense_air[cp_side]:
|
if cp_name_trimmed not in self.game.pretense_air[cp_side]:
|
||||||
self.game.pretense_air[side][cp_name_trimmed] = {}
|
self.game.pretense_air[side][cp_name_trimmed] = {}
|
||||||
# if flight_type not in self.flight.coalition.game.pretense_air[cp_side][cp_name_trimmed]:
|
if cp_name_trimmed not in self.game.pretense_ground_supply[cp_side]:
|
||||||
# self.flight.coalition.game.pretense_air[cp_side][cp_name_trimmed][flight_type] = list()
|
self.game.pretense_ground_supply[side][cp_name_trimmed] = list()
|
||||||
|
if cp_name_trimmed not in self.game.pretense_ground_assault[cp_side]:
|
||||||
lua_string += f"zones.{cp_name_trimmed} = ZoneCommand:new('{cp.name}')\n"
|
self.game.pretense_ground_assault[side][cp_name_trimmed] = list()
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
|
f"zones.{cp_name_trimmed} = ZoneCommand:new('{cp.name}')\n"
|
||||||
|
)
|
||||||
|
lua_string_zones += (
|
||||||
f"zones.{cp_name_trimmed}.initialState = "
|
f"zones.{cp_name_trimmed}.initialState = "
|
||||||
+ "{ side="
|
+ "{ side="
|
||||||
+ str(cp_side)
|
+ str(cp_side)
|
||||||
+ " }\n"
|
+ " }\n"
|
||||||
)
|
)
|
||||||
lua_string += f"zones.{cp_name_trimmed}.keepActive = true\n"
|
lua_string_zones += f"zones.{cp_name_trimmed}.keepActive = true\n"
|
||||||
|
max_resource = 20000
|
||||||
if cp.has_helipads:
|
if cp.has_helipads:
|
||||||
lua_string += f"zones.{cp_name_trimmed}.isHeloSpawn = true\n"
|
lua_string_zones += f"zones.{cp_name_trimmed}.isHeloSpawn = true\n"
|
||||||
|
max_resource = 30000
|
||||||
if isinstance(cp, Airfield) or cp.has_ground_spawns:
|
if isinstance(cp, Airfield) or cp.has_ground_spawns:
|
||||||
lua_string += f"zones.{cp_name_trimmed}.isPlaneSpawn = true\n"
|
lua_string_zones += f"zones.{cp_name_trimmed}.isPlaneSpawn = true\n"
|
||||||
lua_string += f"zones.{cp_name_trimmed}.maxResource = 50000\n"
|
if cp.has_ground_spawns:
|
||||||
lua_string += f"zones.{cp_name_trimmed}:defineUpgrades(" + "{\n"
|
max_resource = 40000
|
||||||
lua_string += " [1] = { --red side\n"
|
if isinstance(cp, Airfield):
|
||||||
lua_string += " presets.upgrades.basic.tent:extend({\n"
|
max_resource = 50000
|
||||||
lua_string += f" name='{cp_name_trimmed}-tent-red',\n"
|
lua_string_zones += (
|
||||||
lua_string += " products = {\n"
|
f"zones.{cp_name_trimmed}.maxResource = {max_resource}\n"
|
||||||
lua_string += (
|
)
|
||||||
|
lua_string_zones += f"zones.{cp_name_trimmed}:defineUpgrades(" + "{\n"
|
||||||
|
lua_string_zones += " [1] = { --red side\n"
|
||||||
|
lua_string_zones += " presets.upgrades.basic.tent:extend({\n"
|
||||||
|
lua_string_zones += f" name='{cp_name_trimmed}-tent-red',\n"
|
||||||
|
lua_string_zones += " products = {\n"
|
||||||
|
lua_string_zones += (
|
||||||
" presets.special.red.infantry:extend({ name='"
|
" presets.special.red.infantry:extend({ name='"
|
||||||
+ cp_name_trimmed
|
+ cp_name_trimmed
|
||||||
+ "-defense-red'})\n"
|
+ "-defense-red'})\n"
|
||||||
)
|
)
|
||||||
lua_string += " }\n"
|
lua_string_zones += " }\n"
|
||||||
lua_string += " }),\n"
|
lua_string_zones += " }),\n"
|
||||||
lua_string += " presets.upgrades.basic.comPost:extend({\n"
|
lua_string_zones += " presets.upgrades.basic.comPost:extend({\n"
|
||||||
lua_string += f" name = '{cp_name_trimmed}-com-red',\n"
|
lua_string_zones += f" name = '{cp_name_trimmed}-com-red',\n"
|
||||||
lua_string += " products = {"
|
lua_string_zones += " products = {"
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
" presets.special.red.infantry:extend({ name='"
|
" presets.special.red.infantry:extend({ name='"
|
||||||
+ cp_name_trimmed
|
+ cp_name_trimmed
|
||||||
+ "-defense-red'}),\n"
|
+ "-defense-red'}),\n"
|
||||||
)
|
)
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
" presets.defenses.red.infantry:extend({ name='"
|
" presets.defenses.red.infantry:extend({ name='"
|
||||||
+ cp_name_trimmed
|
+ cp_name_trimmed
|
||||||
+ "-garrison-red' })\n"
|
+ "-garrison-red' })\n"
|
||||||
)
|
)
|
||||||
lua_string += " }\n"
|
lua_string_zones += " }\n"
|
||||||
lua_string += " }),\n"
|
lua_string_zones += " }),\n"
|
||||||
lua_string += " },\n"
|
lua_string_zones += " },\n"
|
||||||
lua_string += " [2] = --blue side\n"
|
lua_string_zones += " [2] = --blue side\n"
|
||||||
lua_string += " {\n"
|
lua_string_zones += " {\n"
|
||||||
lua_string += " presets.upgrades.basic.tent:extend({\n"
|
lua_string_zones += " presets.upgrades.basic.tent:extend({\n"
|
||||||
lua_string += f" name='{cp_name_trimmed}-tent-blue',\n"
|
lua_string_zones += f" name='{cp_name_trimmed}-tent-blue',\n"
|
||||||
lua_string += " products = {\n"
|
lua_string_zones += " products = {\n"
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
" presets.special.blue.infantry:extend({ name='"
|
" presets.special.blue.infantry:extend({ name='"
|
||||||
+ cp_name_trimmed
|
+ cp_name_trimmed
|
||||||
+ "-defense-blue'})\n"
|
+ "-defense-blue'})\n"
|
||||||
)
|
)
|
||||||
lua_string += " }\n"
|
lua_string_zones += " }\n"
|
||||||
lua_string += " }),\n"
|
lua_string_zones += " }),\n"
|
||||||
lua_string += " presets.upgrades.basic.comPost:extend({\n"
|
lua_string_zones += " presets.upgrades.basic.comPost:extend({\n"
|
||||||
lua_string += f" name = '{cp_name_trimmed}-com-blue',\n"
|
lua_string_zones += f" name = '{cp_name_trimmed}-com-blue',\n"
|
||||||
lua_string += " products = {\n"
|
lua_string_zones += " products = {\n"
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
" presets.special.blue.infantry:extend({ name='"
|
" presets.special.blue.infantry:extend({ name='"
|
||||||
+ cp_name_trimmed
|
+ cp_name_trimmed
|
||||||
+ "-defense-blue'}),\n"
|
+ "-defense-blue'}),\n"
|
||||||
)
|
)
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
" presets.defenses.blue.infantry:extend({ name='"
|
" presets.defenses.blue.infantry:extend({ name='"
|
||||||
+ cp_name_trimmed
|
+ cp_name_trimmed
|
||||||
+ "-garrison-blue' })\n"
|
+ "-garrison-blue' })\n"
|
||||||
)
|
)
|
||||||
lua_string += " }\n"
|
lua_string_zones += " }\n"
|
||||||
lua_string += " }),\n"
|
lua_string_zones += " }),\n"
|
||||||
lua_string += " presets.upgrades.supply.fuelTank:extend({\n"
|
lua_string_zones += " presets.upgrades.supply.fuelTank:extend({\n"
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
" name = '" + cp_name_trimmed + "-fueltank-blue',\n"
|
" name = '" + cp_name_trimmed + "-fueltank-blue',\n"
|
||||||
)
|
)
|
||||||
lua_string += " products = {\n"
|
lua_string_zones += " products = {\n"
|
||||||
lua_string += " presets.missions.supply.convoy_escorted:extend({ name='batumi-supply-convoy-1'}),\n"
|
for ground_group in self.game.pretense_ground_supply[cp_side][
|
||||||
lua_string += " presets.missions.supply.helo:extend({ name='batumi-supply-blue-1' }),\n"
|
cp_name_trimmed
|
||||||
lua_string += " presets.missions.supply.transfer:extend({name='batumi-transfer-blue'})\n"
|
]:
|
||||||
lua_string += " }\n"
|
lua_string_zones += (
|
||||||
lua_string += " }),\n"
|
" presets.missions.supply.convoy:extend({ name='"
|
||||||
lua_string += " presets.upgrades.airdef.comCenter:extend({\n"
|
+ ground_group
|
||||||
lua_string += (
|
+ "'}),\n"
|
||||||
|
)
|
||||||
|
for ground_group in self.game.pretense_ground_assault[cp_side][
|
||||||
|
cp_name_trimmed
|
||||||
|
]:
|
||||||
|
lua_string_zones += (
|
||||||
|
" presets.missions.attack.surface:extend({ name='"
|
||||||
|
+ ground_group
|
||||||
|
+ "'}),\n"
|
||||||
|
)
|
||||||
|
for mission_type in self.game.pretense_air[cp_side][cp_name_trimmed]:
|
||||||
|
if mission_type == FlightType.AIR_ASSAULT.name:
|
||||||
|
mission_name = "supply.helo"
|
||||||
|
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
||||||
|
mission_type
|
||||||
|
]:
|
||||||
|
lua_string_zones += (
|
||||||
|
f" presets.missions.{mission_name}:extend"
|
||||||
|
+ "({name='"
|
||||||
|
+ air_group
|
||||||
|
+ "'}),\n"
|
||||||
|
)
|
||||||
|
lua_string_zones += " }\n"
|
||||||
|
lua_string_zones += " }),\n"
|
||||||
|
lua_string_zones += " presets.upgrades.airdef.comCenter:extend({\n"
|
||||||
|
lua_string_zones += (
|
||||||
f" name = '{cp_name_trimmed}-mission-command-blue',\n"
|
f" name = '{cp_name_trimmed}-mission-command-blue',\n"
|
||||||
)
|
)
|
||||||
lua_string += " products = {\n"
|
lua_string_zones += " products = {\n"
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
" presets.defenses.blue.shorad:extend({ name='"
|
" presets.defenses.blue.shorad:extend({ name='"
|
||||||
+ cp_name_trimmed
|
+ cp_name_trimmed
|
||||||
+ "-sam-blue' }),\n"
|
+ "-sam-blue' }),\n"
|
||||||
@ -327,7 +206,7 @@ class PretenseLuaGenerator(LuaGenerator):
|
|||||||
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
||||||
mission_type
|
mission_type
|
||||||
]:
|
]:
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
f" presets.missions.{mission_name}:extend"
|
f" presets.missions.{mission_name}:extend"
|
||||||
+ "({name='"
|
+ "({name='"
|
||||||
+ air_group
|
+ air_group
|
||||||
@ -338,7 +217,7 @@ class PretenseLuaGenerator(LuaGenerator):
|
|||||||
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
||||||
mission_type
|
mission_type
|
||||||
]:
|
]:
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
f" presets.missions.{mission_name}:extend"
|
f" presets.missions.{mission_name}:extend"
|
||||||
+ "({name='"
|
+ "({name='"
|
||||||
+ air_group
|
+ air_group
|
||||||
@ -349,7 +228,7 @@ class PretenseLuaGenerator(LuaGenerator):
|
|||||||
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
||||||
mission_type
|
mission_type
|
||||||
]:
|
]:
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
f" presets.missions.{mission_name}:extend"
|
f" presets.missions.{mission_name}:extend"
|
||||||
+ "({name='"
|
+ "({name='"
|
||||||
+ air_group
|
+ air_group
|
||||||
@ -360,7 +239,7 @@ class PretenseLuaGenerator(LuaGenerator):
|
|||||||
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
||||||
mission_type
|
mission_type
|
||||||
]:
|
]:
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
f" presets.missions.{mission_name}:extend"
|
f" presets.missions.{mission_name}:extend"
|
||||||
+ "({name='"
|
+ "({name='"
|
||||||
+ air_group
|
+ air_group
|
||||||
@ -371,23 +250,12 @@ class PretenseLuaGenerator(LuaGenerator):
|
|||||||
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
||||||
mission_type
|
mission_type
|
||||||
]:
|
]:
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
f" presets.missions.{mission_name}:extend"
|
f" presets.missions.{mission_name}:extend"
|
||||||
+ "({name='"
|
+ "({name='"
|
||||||
+ air_group
|
+ air_group
|
||||||
+ "', altitude=25000, range=25}),\n"
|
+ "', altitude=25000, range=25}),\n"
|
||||||
)
|
)
|
||||||
elif mission_type == FlightType.AIR_ASSAULT.name:
|
|
||||||
mission_name = "supply.helo"
|
|
||||||
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
|
||||||
mission_type
|
|
||||||
]:
|
|
||||||
lua_string += (
|
|
||||||
f" presets.missions.{mission_name}:extend"
|
|
||||||
+ "({name='"
|
|
||||||
+ air_group
|
|
||||||
+ "'}),\n"
|
|
||||||
)
|
|
||||||
elif mission_type == FlightType.REFUELING.name:
|
elif mission_type == FlightType.REFUELING.name:
|
||||||
mission_name = "support.tanker"
|
mission_name = "support.tanker"
|
||||||
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
for air_group in self.game.pretense_air[cp_side][cp_name_trimmed][
|
||||||
@ -403,7 +271,7 @@ class PretenseLuaGenerator(LuaGenerator):
|
|||||||
tanker_variant = "Boom"
|
tanker_variant = "Boom"
|
||||||
else:
|
else:
|
||||||
tanker_variant = "Drogue"
|
tanker_variant = "Drogue"
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
f" presets.missions.{mission_name}:extend"
|
f" presets.missions.{mission_name}:extend"
|
||||||
+ "({name='"
|
+ "({name='"
|
||||||
+ air_group
|
+ air_group
|
||||||
@ -424,7 +292,7 @@ class PretenseLuaGenerator(LuaGenerator):
|
|||||||
for awacs in self.mission_data.awacs:
|
for awacs in self.mission_data.awacs:
|
||||||
if awacs.group_name == air_group:
|
if awacs.group_name == air_group:
|
||||||
awacs_freq = awacs.freq.hertz / 1000000
|
awacs_freq = awacs.freq.hertz / 1000000
|
||||||
lua_string += (
|
lua_string_zones += (
|
||||||
f" presets.missions.{mission_name}:extend"
|
f" presets.missions.{mission_name}:extend"
|
||||||
+ "({name='"
|
+ "({name='"
|
||||||
+ air_group
|
+ air_group
|
||||||
@ -432,18 +300,32 @@ class PretenseLuaGenerator(LuaGenerator):
|
|||||||
+ str(awacs_freq)
|
+ str(awacs_freq)
|
||||||
+ "}),\n"
|
+ "}),\n"
|
||||||
)
|
)
|
||||||
lua_string += " }\n"
|
lua_string_zones += " }\n"
|
||||||
lua_string += " })\n"
|
lua_string_zones += " })\n"
|
||||||
lua_string += " }\n"
|
lua_string_zones += " }\n"
|
||||||
lua_string += "})\n"
|
lua_string_zones += "})\n"
|
||||||
|
|
||||||
init_body_file = open("./resources/plugins/pretense/init_body.lua", "r")
|
init_body_file = open("./resources/plugins/pretense/init_body.lua", "r")
|
||||||
init_body = init_body_file.read()
|
init_body = init_body_file.read()
|
||||||
|
|
||||||
|
lua_string_connman = " cm = ConnectionManager:new()"
|
||||||
|
|
||||||
|
for cp in self.game.theater.controlpoints:
|
||||||
|
for other_cp in cp.connected_points:
|
||||||
|
lua_string_connman += (
|
||||||
|
f" cm: addConnection('{cp.name}', '{other_cp.name}')"
|
||||||
|
)
|
||||||
|
|
||||||
init_footer_file = open("./resources/plugins/pretense/init_footer.lua", "r")
|
init_footer_file = open("./resources/plugins/pretense/init_footer.lua", "r")
|
||||||
init_footer = init_footer_file.read()
|
init_footer = init_footer_file.read()
|
||||||
|
|
||||||
lua_string = init_header + lua_string + init_body + init_footer
|
lua_string = (
|
||||||
|
init_header
|
||||||
|
+ lua_string_zones
|
||||||
|
+ lua_string_connman
|
||||||
|
+ init_body
|
||||||
|
+ init_footer
|
||||||
|
)
|
||||||
|
|
||||||
trigger.add_action(DoScript(String(lua_string)))
|
trigger.add_action(DoScript(String(lua_string)))
|
||||||
self.mission.triggerrules.triggers.append(trigger)
|
self.mission.triggerrules.triggers.append(trigger)
|
||||||
|
|||||||
@ -29,7 +29,7 @@ from dcs.triggers import Event, TriggerCondition, TriggerOnce
|
|||||||
from dcs.unit import Skill
|
from dcs.unit import Skill
|
||||||
|
|
||||||
from game.theater import Airfield
|
from game.theater import Airfield
|
||||||
from game.theater.controlpoint import Fob, TRIGGER_RADIUS_CAPTURE
|
from game.theater.controlpoint import Fob, TRIGGER_RADIUS_CAPTURE, OffMapSpawn
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from game.game import Game
|
from game.game import Game
|
||||||
@ -157,7 +157,7 @@ class PretenseTriggerGenerator:
|
|||||||
Directly appends to the global `base_capture_events` var declared by `dcs_libaration.lua`
|
Directly appends to the global `base_capture_events` var declared by `dcs_libaration.lua`
|
||||||
"""
|
"""
|
||||||
for cp in self.game.theater.controlpoints:
|
for cp in self.game.theater.controlpoints:
|
||||||
if isinstance(cp, self.capture_zone_types) and not cp.is_fleet:
|
if not isinstance(cp, OffMapSpawn):
|
||||||
|
|
||||||
zone_color = {1: 0.0, 2: 0.0, 3: 0.0, 4: 0.15}
|
zone_color = {1: 0.0, 2: 0.0, 3: 0.0, 4: 0.15}
|
||||||
trigger_zone = self.mission.triggers.add_triggerzone(
|
trigger_zone = self.mission.triggers.add_triggerzone(
|
||||||
@ -215,7 +215,6 @@ class PretenseTriggerGenerator:
|
|||||||
|
|
||||||
self._set_skill(player_coalition, enemy_coalition)
|
self._set_skill(player_coalition, enemy_coalition)
|
||||||
self._set_allegiances(player_coalition, enemy_coalition)
|
self._set_allegiances(player_coalition, enemy_coalition)
|
||||||
self._gen_markers()
|
|
||||||
self._generate_pretense_zone_triggers(player_coalition, enemy_coalition)
|
self._generate_pretense_zone_triggers(player_coalition, enemy_coalition)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
ZoneCommand.setNeighbours(cm)
|
ZoneCommand.setNeighbours(cm)
|
||||||
|
|
||||||
bm = BattlefieldManager:new()
|
bm = BattlefieldManager:new()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user