diff --git a/data/mission/theater/region1/base-defense/BandarEJaskAirbaseDefence.dct b/data/mission/theater/region1/base-defense/BandarEJaskAirbaseDefence.dct index 6f3dd074..648d5d9d 100644 --- a/data/mission/theater/region1/base-defense/BandarEJaskAirbaseDefence.dct +++ b/data/mission/theater/region1/base-defense/BandarEJaskAirbaseDefence.dct @@ -1,6 +1,6 @@ metadata = { ["rank"] = 2, ["objtype"] = "basedefense", - ["base"] = "Bandar-e-jask airfield", + ["regenerate"] = true, } diff --git a/doc/03-designer.md b/doc/03-designer.md index 601df2d7..489c3644 100644 --- a/doc/03-designer.md +++ b/doc/03-designer.md @@ -690,6 +690,15 @@ ignored by the DCT AI. This includes scheduling the asset to be assigned as a target to a player. [TODO] This will also make any units spawned by the asset to be ignored by the DCS AI. +### `regenerate` + + * _required:_ no + * _value:_ boolean + * _default:_ false + +Forces an asset on state reload to reset its `tpldata` to the original +state when the asset was created. + ### Attributes - Type Specific #### Airspace diff --git a/src/dct/assets/AssetBase.lua b/src/dct/assets/AssetBase.lua index 29fb42d1..778a5ced 100644 --- a/src/dct/assets/AssetBase.lua +++ b/src/dct/assets/AssetBase.lua @@ -121,6 +121,7 @@ function AssetBase:__init(template, region) "codename", "cost", "ignore", + "regenerate", }) self._spawned = false self._dead = false @@ -154,6 +155,7 @@ function AssetBase:_completeinit(template, region) print(string.format("Template(%s) has nil 'desc' field", template.name)) end + self.regenerate = template.regenerate self.ignore = template.ignore self.owner = template.coalition self.rgnname = region.name diff --git a/src/dct/assets/StaticAsset.lua b/src/dct/assets/StaticAsset.lua index f9f42768..d9080d5f 100644 --- a/src/dct/assets/StaticAsset.lua +++ b/src/dct/assets/StaticAsset.lua @@ -300,7 +300,11 @@ function StaticAsset:marshal() if tbl == nil then return nil end - tbl._tpldata = filterTemplateData(self._tpldata) + if self.regenerate then + tbl._tpldata = self._tpldata + else + tbl._tpldata = filterTemplateData(self._tpldata) + end if tbl._tpldata == nil then return nil end diff --git a/src/dct/templates/Template.lua b/src/dct/templates/Template.lua index 85245757..1e006f91 100644 --- a/src/dct/templates/Template.lua +++ b/src/dct/templates/Template.lua @@ -260,6 +260,10 @@ local function getkeys(objtype) ["name"] = "ignore", ["type"] = "boolean", ["default"] = false, + }, { + ["name"] = "regenerate", + ["type"] = "boolean", + ["default"] = false, }, { ["name"] = "priority", ["type"] = "number",