Add ability to use IonCannonPower via lua.

This commit is contained in:
Mustafa Alperen Seki
2018-02-06 12:52:39 +03:00
committed by Matthias Mailänder
parent 2387e49ee7
commit 51c207dd28
3 changed files with 48 additions and 3 deletions

View File

@@ -132,6 +132,7 @@
<Compile Include="Traits\SupportPowers\GpsPower.cs" />
<Compile Include="Traits\GpsWatcher.cs" />
<Compile Include="Scripting\Properties\ChronosphereProperties.cs" />
<Compile Include="Scripting\Properties\IonCannonProperties.cs" />
<Compile Include="Traits\Render\WithDisguisingInfantryBody.cs" />
<Compile Include="UtilityCommands\ImportRedAlertLegacyMapCommand.cs" />
<Compile Include="Traits\Infiltration\InfiltrateForDecoration.cs" />

View File

@@ -0,0 +1,39 @@
#region Copyright & License Information
/*
* Copyright 2007-2018 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, either version 3 of
* the License, or (at your option) any later version. For more
* Information, see COPYING.
*/
#endregion
using System.Linq;
using OpenRA.Mods.Cnc.Effects;
using OpenRA.Mods.Cnc.Traits;
using OpenRA.Mods.Common.Activities;
using OpenRA.Mods.Common.Traits;
using OpenRA.Scripting;
using OpenRA.Traits;
namespace OpenRA.Mods.CnC.Scripting
{
[ScriptPropertyGroup("Support Powers")]
public class IonCannonProperties : ScriptActorProperties, Requires<IonCannonPowerInfo>
{
readonly IonCannonPower icp;
public IonCannonProperties(ScriptContext context, Actor self)
: base(context, self)
{
icp = self.TraitsImplementing<IonCannonPower>().First();
}
[Desc("Activate the actor's IonCannonPower.")]
public void ActivateIonCannon(CPos target)
{
icp.Activate(Self, target);
}
}
}

View File

@@ -74,11 +74,16 @@ namespace OpenRA.Mods.Cnc.Traits
{
base.Activate(self, order, manager);
Activate(self, order.TargetLocation);
}
public void Activate(Actor self, CPos targetLocation)
{
self.World.AddFrameEndTask(w =>
{
PlayLaunchSounds();
Game.Sound.Play(SoundType.World, info.OnFireSound, self.World.Map.CenterOfCell(order.TargetLocation));
w.Add(new IonCannon(self.Owner, info.WeaponInfo, w, self.CenterPosition, order.TargetLocation,
Game.Sound.Play(SoundType.World, info.OnFireSound, self.World.Map.CenterOfCell(targetLocation));
w.Add(new IonCannon(self.Owner, info.WeaponInfo, w, self.CenterPosition, targetLocation,
info.Effect, info.EffectSequence, info.EffectPalette, info.WeaponDelay));
if (info.CameraActor == null)
@@ -86,7 +91,7 @@ namespace OpenRA.Mods.Cnc.Traits
var camera = w.CreateActor(info.CameraActor, new TypeDictionary
{
new LocationInit(order.TargetLocation),
new LocationInit(targetLocation),
new OwnerInit(self.Owner),
});