Throw a LuaException when placing a beacon without the player trait
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
using Eluant;
|
||||||
using OpenRA.Mods.Common.Effects;
|
using OpenRA.Mods.Common.Effects;
|
||||||
using OpenRA.Mods.Common.Traits;
|
using OpenRA.Mods.Common.Traits;
|
||||||
using OpenRA.Scripting;
|
using OpenRA.Scripting;
|
||||||
@@ -20,16 +21,21 @@ namespace OpenRA.Mods.Common.Scripting
|
|||||||
{
|
{
|
||||||
readonly RadarPings radarPings;
|
readonly RadarPings radarPings;
|
||||||
|
|
||||||
public BeaconGlobal(ScriptContext context) : base(context)
|
public BeaconGlobal(ScriptContext context)
|
||||||
|
: base(context)
|
||||||
{
|
{
|
||||||
radarPings = context.World.WorldActor.TraitOrDefault<RadarPings>();
|
radarPings = context.World.WorldActor.TraitOrDefault<RadarPings>();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Desc("Creates a new beacon that stays for the specified time at the specified WPos. " +
|
[Desc("Creates a new beacon that stays for the specified time at the specified WPos. " +
|
||||||
"Does not remove player set beacons, nor gets removed by placing them.")]
|
"Does not remove player set beacons, nor gets removed by placing them. " +
|
||||||
|
"Requires the 'PlaceBeacon' trait on the player actor.")]
|
||||||
public Beacon New(Player owner, WPos position, int duration = 30 * 25, bool showRadarPings = true)
|
public Beacon New(Player owner, WPos position, int duration = 30 * 25, bool showRadarPings = true)
|
||||||
{
|
{
|
||||||
var beacon = owner.PlayerActor.Info.TraitInfo<PlaceBeaconInfo>();
|
var beacon = owner.PlayerActor.Info.TraitInfoOrDefault<PlaceBeaconInfo>();
|
||||||
|
if (beacon == null)
|
||||||
|
throw new LuaException("The player actor has no 'PlaceBeacon' trait.");
|
||||||
|
|
||||||
var playerBeacon = new Beacon(owner, position, duration, beacon.Palette, beacon.IsPlayerPalette,
|
var playerBeacon = new Beacon(owner, position, duration, beacon.Palette, beacon.IsPlayerPalette,
|
||||||
beacon.BeaconImage, beacon.BeaconSequence, beacon.ArrowSequence, beacon.CircleSequence);
|
beacon.BeaconImage, beacon.BeaconSequence, beacon.ArrowSequence, beacon.CircleSequence);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user