diff --git a/manager/javascripts/filesystem.js b/manager/javascripts/filesystem.js index 9b6b0634..12bd1117 100644 --- a/manager/javascripts/filesystem.js +++ b/manager/javascripts/filesystem.js @@ -60,6 +60,7 @@ async function installHooks(folder) { */ async function installMod(folder, name) { + /* Timestamp string */ logger.log(`Installing mod in ${folder}`) await fsp.cp(path.join("..", "mod"), path.join(folder, "Mods", "Services", "Olympus"), { recursive: true }); @@ -242,6 +243,11 @@ async function deleteMod(folder, name) { else logger.warn(`No mods.lua found in ${folder}, skipping backup...`) + if (await exists(path.join(folder, "Mods", "Services", "Olympus", "scripts", "unitPayloads.lua"))) + await fsp.cp(path.join(folder, "Mods", "Services", "Olympus", "scripts", "unitPayloads.lua"), path.join(__dirname, "..", "..", "..", "DCS Olympus backups", name, "scripts", "unitPayloads.lua")); + else + logger.warn(`No unitPayloads.lua found in ${folder}, skipping backup...`) + /* Remove the mod folder */ await fsp.rmdir(path.join(folder, "Mods", "Services", "Olympus"), { recursive: true, force: true }) logger.log(`Mod succesfully removed from ${folder}`) diff --git a/scripts/lua/backend/OlympusCommand.lua b/scripts/lua/backend/OlympusCommand.lua index 44f27268..96bb07d5 100644 --- a/scripts/lua/backend/OlympusCommand.lua +++ b/scripts/lua/backend/OlympusCommand.lua @@ -659,7 +659,7 @@ end -- lat: (number) -- lng: (number) -- alt: (number, optional) only for air units - -- loadout: (string, optional) only for air units, must be one of the loadouts defined in unitPayloads.lua + -- loadout: (string, optional) only for air units, must be one of the loadouts defined in unitPayloads.lua or mods.lua -- payload: (table, optional) overrides loadout, specifies directly the loadout of the unit -- liveryID: (string, optional) function Olympus.spawnUnits(spawnTable) @@ -731,6 +731,8 @@ function Olympus.generateAirUnitsTable(units) if payload == nil then if loadout ~= nil and loadout ~= "" and Olympus.unitPayloads[unit.unitType] and Olympus.unitPayloads[unit.unitType][loadout] then payload = { ["pylons"] = Olympus.unitPayloads[unit.unitType][loadout], ["fuel"] = 999999, ["flare"] = 60, ["ammo_type"] = 1, ["chaff"] = 60, ["gun"] = 100 } + if loadout ~= nil and loadout ~= "" and Olympus.modsUnitPayloads ~= nil and Olympus.modsUnitPayloads[unit.unitType] and Olympus.modsUnitPayloads[unit.unitType][loadout] then + payload = { ["pylons"] = Olympus.modsUnitPayloads[unit.unitType][loadout], ["fuel"] = 999999, ["flare"] = 60, ["ammo_type"] = 1, ["chaff"] = 60, ["gun"] = 100 } else payload = { ["pylons"] = {}, ["fuel"] = 999999, ["flare"] = 60, ["ammo_type"] = 1, ["chaff"] = 60, ["gun"] = 100 } end diff --git a/scripts/lua/backend/mods.lua b/scripts/lua/backend/mods.lua index 4107733b..82b093d6 100644 --- a/scripts/lua/backend/mods.lua +++ b/scripts/lua/backend/mods.lua @@ -9,3 +9,19 @@ Olympus.modsList = { ["A-4E-C"] = "Aircraft", ["Bronco-OV-10A"] = "Aircraft" } + +-- Enter here any unitPayloads you want to use for your mods. Remember to add the payload to the database in mods.json! +-- DO NOT ADD PAYLOADS TO "ORIGINAL" DCS UNITS HERE! To add payloads to original DCS units, use the "unitPayload.lua" table instead and add them under the correct unit section. +-- Provided example is for the A-4E-C mod, with a payload of 76 FFAR Mk1 HE rockets and a 300 gallon fuel tank. + +Olympus.modsUnitPayloads = { + ["A-4E-C"] = { + ["FFAR Mk1 HE *76, Fuel 300G"] = { + [1] = {["CLSID"] = "{LAU3_FFAR_MK1HE}"}, + [2] = {["CLSID"] = "{LAU3_FFAR_MK1HE}"}, + [3] = {["CLSID"] = "{LAU3_FFAR_MK1HE}"}, + [4] = {["CLSID"] = "{LAU3_FFAR_MK1HE}"}, + [5] = {["CLSID"] = "{DFT-300gal}"} + } + } +}