diff --git a/mods/cnc/mod.yaml b/mods/cnc/mod.yaml index 32fbde44b8..95a65bcc11 100644 --- a/mods/cnc/mod.yaml +++ b/mods/cnc/mod.yaml @@ -174,3 +174,4 @@ LuaScripts: mods/common/lua/mission.lua mods/common/lua/reinforcements.lua mods/common/lua/supportpowers.lua + mods/common/lua/rules.lua diff --git a/mods/common/lua/actor.lua b/mods/common/lua/actor.lua index f2a6b92612..7e7dfd383c 100644 --- a/mods/common/lua/actor.lua +++ b/mods/common/lua/actor.lua @@ -173,24 +173,4 @@ end Actor.Trait = function(actor, className) return Internal.Trait(actor, className) -end - -Actor.HasTraitInfo = function(actorType, className) - return Internal.HasTraitInfo(actorType, className) -end - -Actor.TraitInfoOrDefault = function(actorType, className) - return Internal.TraitInfoOrDefault(actorType, className) -end - -Actor.TraitInfo = function(actorType, className) - return Internal.TraitInfo(actorType, className) -end - -Actor.InitialAltitude = function(actorName) - if Actor.HasTraitInfo("AircraftInfo") then - return Actor.TraitInfo(actorName, "AircraftInfo").CruiseAltitude - end - - return 0 end \ No newline at end of file diff --git a/mods/common/lua/reinforcements.lua b/mods/common/lua/reinforcements.lua index 0f20402fb8..8d88de85be 100644 --- a/mods/common/lua/reinforcements.lua +++ b/mods/common/lua/reinforcements.lua @@ -2,8 +2,8 @@ Reinforcements = { } Reinforcements.Insert = function(owner, transportName, passengerNames, enterPath, exitPath) local facing = { Map.GetFacing(CPos.op_Subtraction(enterPath[2], enterPath[1]), 0), "Int32" } - local altitude = Actor.InitialAltitude(transportName) - local transport = Actor.Create(transportName, { Owner = owner, Location = enterPath[1], Facing = facing, Altitude = { altitude, "Int32" } }) + local altitude = { Rules.InitialAltitude(transportName), "Int32" } + local transport = Actor.Create(transportName, { Owner = owner, Location = enterPath[1], Facing = facing, Altitude = altitude }) local cargo = Actor.Trait(transport, "Cargo") local passengers = { } @@ -24,8 +24,8 @@ end Reinforcements.Extract = function(owner, transportName, passengerNames, enterPath, exitPath) local facing = { Map.GetFacing(CPos.op_Subtraction(enterPath[2], enterPath[1]), 0), "Int32" } - local altitude = Actor.InitialAltitude(transportName) - local transport = Actor.Create(transportName, { Owner = owner, Location = enterPath[1], Facing = facing, Altitude = { altitude, "Int32" } }) + local altitude = { Rules.InitialAltitude(transportName), "Int32" } + local transport = Actor.Create(transportName, { Owner = owner, Location = enterPath[1], Facing = facing, Altitude = altitude }) local cargo = Actor.Trait(transport, "Cargo") Utils.Do(Utils.Skip(enterPath, 1), function(l) Actor.ScriptedMove(transport, l) end) diff --git a/mods/common/lua/rules.lua b/mods/common/lua/rules.lua new file mode 100644 index 0000000000..17d50b563c --- /dev/null +++ b/mods/common/lua/rules.lua @@ -0,0 +1,21 @@ +Rules = { } + +Rules.HasTraitInfo = function(actorType, className) + return Internal.HasTraitInfo(actorType, className) +end + +Rules.TraitInfoOrDefault = function(actorType, className) + return Internal.TraitInfoOrDefault(actorType, className) +end + +Rules.TraitInfo = function(actorType, className) + return Internal.TraitInfo(actorType, className) +end + +Rules.InitialAltitude = function(actorType) + local ai = Rules.TraitInfoOrDefault(actorType, "AircraftInfo") + if ai ~= nil then + return ai.CruiseAltitude + end + return 0 +end \ No newline at end of file diff --git a/mods/common/lua/supportpowers.lua b/mods/common/lua/supportpowers.lua index a7c96582db..c899ddfa3b 100644 --- a/mods/common/lua/supportpowers.lua +++ b/mods/common/lua/supportpowers.lua @@ -2,7 +2,7 @@ SupportPowers = { } SupportPowers.Airstrike = function(owner, planeName, enterLocation, bombLocation) local facing = { Map.GetFacing(CPos.op_Subtraction(bombLocation, enterLocation), 0), "Int32" } - local altitude = { Actor.TraitInfo(planeName, "AircraftInfo").CruiseAltitude, "Int32" } + local altitude = { Rules.TraitInfo(planeName, "AircraftInfo").CruiseAltitude, "Int32" } local plane = Actor.Create(planeName, { Location = enterLocation, Owner = owner, Facing = facing, Altitude = altitude }) Actor.Trait(plane, "AttackBomber"):SetTarget(bombLocation.CenterPosition) Actor.Fly(plane, bombLocation.CenterPosition) @@ -13,7 +13,7 @@ end SupportPowers.Paradrop = function(owner, planeName, passengerNames, enterLocation, dropLocation) local facing = { Map.GetFacing(CPos.op_Subtraction(dropLocation, enterLocation), 0), "Int32" } - local altitude = { Actor.TraitInfo(planeName, "AircraftInfo").CruiseAltitude, "Int32" } + local altitude = { Rules.TraitInfo(planeName, "AircraftInfo").CruiseAltitude, "Int32" } local plane = Actor.Create(planeName, { Location = enterLocation, Owner = owner, Facing = facing, Altitude = altitude }) Actor.FlyAttackCell(plane, dropLocation) Actor.Trait(plane, "ParaDrop"):SetLZ(dropLocation) diff --git a/mods/d2k/mod.yaml b/mods/d2k/mod.yaml index e670180373..8b333357f2 100644 --- a/mods/d2k/mod.yaml +++ b/mods/d2k/mod.yaml @@ -154,3 +154,4 @@ LuaScripts: mods/common/lua/mission.lua mods/common/lua/reinforcements.lua mods/common/lua/supportpowers.lua + mods/common/lua/rules.lua diff --git a/mods/ra/mod.yaml b/mods/ra/mod.yaml index ee635b4a62..0e3a50dc6f 100644 --- a/mods/ra/mod.yaml +++ b/mods/ra/mod.yaml @@ -174,3 +174,4 @@ LuaScripts: mods/common/lua/mission.lua mods/common/lua/reinforcements.lua mods/common/lua/supportpowers.lua + mods/common/lua/rules.lua diff --git a/mods/ts/mod.yaml b/mods/ts/mod.yaml index 3c8cf26861..a0c2a3b28c 100644 --- a/mods/ts/mod.yaml +++ b/mods/ts/mod.yaml @@ -195,3 +195,4 @@ LuaScripts: mods/common/lua/mission.lua mods/common/lua/reinforcements.lua mods/common/lua/supportpowers.lua + mods/common/lua/rules.lua