Merge pull request #6378 from Mailaender/desert-shellmap-lua-cleaning
Desert shellmap Lua maintenance
This commit is contained in:
@@ -572,6 +572,7 @@
|
||||
<Compile Include="Warheads\PerCellDamageWarhead.cs" />
|
||||
<Compile Include="Warheads\SpreadDamageWarhead.cs" />
|
||||
<Compile Include="Scripting\Global\ReinforcementsGlobal.cs" />
|
||||
<Compile Include="Scripting\Global\DateGlobal.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
||||
|
||||
28
OpenRA.Mods.RA/Scripting/Global/DateGlobal.cs
Normal file
28
OpenRA.Mods.RA/Scripting/Global/DateGlobal.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
|
||||
* This file is part of OpenRA, which is free software. It is made
|
||||
* available to you under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation. For more information,
|
||||
* see COPYING.
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using Eluant;
|
||||
using OpenRA.Scripting;
|
||||
|
||||
namespace OpenRA.Mods.RA.Scripting
|
||||
{
|
||||
[ScriptGlobal("Date")]
|
||||
public class DateGlobal : ScriptGlobal
|
||||
{
|
||||
public DateGlobal(ScriptContext context) : base(context) { }
|
||||
|
||||
[Desc("True on the 31st of October.")]
|
||||
public bool IsHalloween
|
||||
{
|
||||
get { return DateTime.Today.Month == 10 && DateTime.Today.Day == 31; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,7 @@
|
||||
local ants = Utils.RandomInteger(0, 51) == 0
|
||||
|
||||
if ants then
|
||||
if Date.IsHalloween then
|
||||
UnitTypes = { "ant", "ant", "ant" }
|
||||
BeachUnitTypes = { "ant", "ant" }
|
||||
ParadropUnitTypes = { "ant", "ant", "ant", "ant", "ant" }
|
||||
ParadropUnitTypes = { "zombie", "zombie", "zombie", "zombie", "zombie" }
|
||||
ProducedUnitTypes =
|
||||
{
|
||||
{ AlliedBarracks1, { "e1", "e3" } },
|
||||
@@ -30,6 +28,9 @@ else
|
||||
}
|
||||
end
|
||||
|
||||
ShipUnitTypes = { "1tnk", "1tnk", "jeep", "2tnk", "2tnk" }
|
||||
HelicopterUnitTypes = { "e1", "e1", "e1", "e1", "e3", "e3" };
|
||||
|
||||
ParadropWaypoints = { Paradrop1, Paradrop2, Paradrop3, Paradrop4, Paradrop5, Paradrop6, Paradrop7, Paradrop8 }
|
||||
|
||||
BindActorTriggers = function(a)
|
||||
@@ -52,39 +53,37 @@ BindActorTriggers = function(a)
|
||||
end
|
||||
|
||||
SendSovietUnits = function(entryCell, unitTypes, interval)
|
||||
local i = 0
|
||||
team = {}
|
||||
|
||||
Utils.Do(unitTypes, function(type)
|
||||
local a = Actor.Create(type, false, { Owner = soviets, Location = entryCell })
|
||||
BindActorTriggers(a)
|
||||
Trigger.AfterDelay(i * interval, function() a.IsInWorld = true end)
|
||||
table.insert(team, a)
|
||||
i = i + 1
|
||||
local units = Reinforcements.Reinforce(soviets, unitTypes, { entryCell }, interval)
|
||||
Utils.Do(units, function(unit)
|
||||
BindActorTriggers(unit)
|
||||
end)
|
||||
|
||||
Trigger.OnAllKilled(team, function() SendSovietUnits(entryCell, unitTypes, interval) end)
|
||||
Trigger.OnAllKilled(units, function() SendSovietUnits(entryCell, unitTypes, interval) end)
|
||||
end
|
||||
|
||||
ShipAlliedUnits = function()
|
||||
local transport = Actor.Create("lst", true, { Location = LstEntry.Location, Owner = allies })
|
||||
local units = Reinforcements.ReinforceWithTransport(allies, "lst",
|
||||
ShipUnitTypes, { LstEntry.Location, LstUnload.Location }, { LstEntry.Location })[2]
|
||||
|
||||
Utils.Do({ "1tnk", "1tnk", "jeep", "2tnk", "2tnk" }, function(type)
|
||||
local a = Actor.Create(type, false, { Owner = allies })
|
||||
BindActorTriggers(a)
|
||||
transport.LoadPassenger(a)
|
||||
Utils.Do(units, function(unit)
|
||||
BindActorTriggers(unit)
|
||||
end)
|
||||
|
||||
transport.Move(LstUnload.Location)
|
||||
transport.UnloadPassengers()
|
||||
transport.Wait(50)
|
||||
transport.Move(LstEntry.Location)
|
||||
transport.Destroy()
|
||||
Trigger.AfterDelay(60 * 25, ShipAlliedUnits)
|
||||
Trigger.AfterDelay(Utils.Seconds(60), ShipAlliedUnits)
|
||||
end
|
||||
|
||||
InsertAlliedChinookReinforcements = function(entry, hpad)
|
||||
local units = Reinforcements.ReinforceWithTransport(allies, "tran",
|
||||
HelicopterUnitTypes, { entry.Location, hpad.Location + CVec.New(1, 2) }, { entry.Location })[2]
|
||||
|
||||
Utils.Do(units, function(unit)
|
||||
BindActorTriggers(unit)
|
||||
end)
|
||||
|
||||
Trigger.AfterDelay(Utils.Seconds(60), function() InsertAlliedChinookReinforcements(entry, hpad) end)
|
||||
end
|
||||
|
||||
ParadropSovietUnits = function()
|
||||
local lz = Utils.Random(ParadropWaypoints).Location
|
||||
local lz = Utils.Random(ParadropWaypoints).Location
|
||||
local start = Utils.CenterOfCell(Map.RandomEdgeCell()) + WVec.New(0, 0, Actor.CruiseAltitude("badr"))
|
||||
local transport = Actor.Create("badr", true, { CenterPosition = start, Owner = soviets, Facing = (Utils.CenterOfCell(lz) - start).Facing })
|
||||
|
||||
@@ -95,7 +94,7 @@ ParadropSovietUnits = function()
|
||||
end)
|
||||
|
||||
transport.Paradrop(lz)
|
||||
Trigger.AfterDelay(35 * 25, ParadropSovietUnits)
|
||||
Trigger.AfterDelay(Utils.Seconds(35), ParadropSovietUnits)
|
||||
end
|
||||
|
||||
ProduceUnits = function(t)
|
||||
@@ -118,9 +117,9 @@ SetupAlliedUnits = function()
|
||||
end
|
||||
|
||||
SetupFactories = function()
|
||||
Utils.Do(ProducedUnitTypes, function(pair)
|
||||
Utils.Do(ProducedUnitTypes, function(pair)
|
||||
Trigger.OnProduction(pair[1], function(_, a) BindActorTriggers(a) end)
|
||||
end)
|
||||
end)
|
||||
end
|
||||
|
||||
ChronoshiftAlliedUnits = function()
|
||||
@@ -129,10 +128,10 @@ ChronoshiftAlliedUnits = function()
|
||||
for i = 1, #cells do
|
||||
local unit = Actor.Create("2tnk", true, { Owner = allies, Facing = 0 })
|
||||
BindActorTriggers(unit)
|
||||
units[unit] = cells[i]
|
||||
end
|
||||
Chronosphere.Chronoshift(units)
|
||||
Trigger.AfterDelay(60 * 25, ChronoshiftAlliedUnits)
|
||||
units[unit] = cells[i]
|
||||
end
|
||||
Chronosphere.Chronoshift(units)
|
||||
Trigger.AfterDelay(Utils.Seconds(60), ChronoshiftAlliedUnits)
|
||||
end
|
||||
|
||||
ticks = 0
|
||||
@@ -153,9 +152,11 @@ WorldLoaded = function()
|
||||
SetupAlliedUnits()
|
||||
SetupFactories()
|
||||
ShipAlliedUnits()
|
||||
InsertAlliedChinookReinforcements(Chinook1Entry, HeliPad1)
|
||||
InsertAlliedChinookReinforcements(Chinook2Entry, HeliPad2)
|
||||
ParadropSovietUnits()
|
||||
Trigger.AfterDelay(5 * 25, ChronoshiftAlliedUnits)
|
||||
Utils.Do(ProducedUnitTypes, ProduceUnits)
|
||||
Trigger.AfterDelay(Utils.Seconds(5), ChronoshiftAlliedUnits)
|
||||
Utils.Do(ProducedUnitTypes, ProduceUnits)
|
||||
|
||||
SendSovietUnits(Entry1.Location, UnitTypes, 50)
|
||||
SendSovietUnits(Entry2.Location, UnitTypes, 50)
|
||||
|
||||
@@ -947,8 +947,8 @@ Actors:
|
||||
Actor329: mine
|
||||
Location: 90,21
|
||||
Owner: Neutral
|
||||
Actor195: hpad
|
||||
Location: 70,75
|
||||
HeliPad1: hpad
|
||||
Location: 70,76
|
||||
Owner: Allies
|
||||
Actor341: dome
|
||||
Location: 63,73
|
||||
@@ -1004,7 +1004,7 @@ Actors:
|
||||
Actor361: pbox
|
||||
Location: 71,96
|
||||
Owner: Allies
|
||||
Actor365: hpad
|
||||
HeliPad2: hpad
|
||||
Location: 64,78
|
||||
Owner: Allies
|
||||
Actor221: fenc
|
||||
@@ -1217,6 +1217,12 @@ Actors:
|
||||
LstUnload: waypoint
|
||||
Location: 60,93
|
||||
Owner: Neutral
|
||||
Chinook1Entry: waypoint
|
||||
Location: 44,126
|
||||
Owner: Neutral
|
||||
Chinook2Entry: waypoint
|
||||
Location: 47,126
|
||||
Owner: Neutral
|
||||
Actor184: pbox
|
||||
Location: 96,79
|
||||
Owner: Allies
|
||||
|
||||
Reference in New Issue
Block a user