check voice actor references
This commit is contained in:
@@ -57,9 +57,21 @@ namespace OpenRA
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var voicedActor = actors.FirstOrDefault(a => a.Owner == world.LocalPlayer && a.IsInWorld && a.HasTrait<IVoiced>());
|
// Play the selection voice from one of the selected actors
|
||||||
if (voicedActor != null)
|
// TODO: This probably should only be considering the newly selected actors
|
||||||
voicedActor.PlayVoice("Select");
|
// TODO: Ship this into an INotifySelection trait to remove the engine dependency on Selectable
|
||||||
|
foreach (var actor in actors)
|
||||||
|
{
|
||||||
|
if (actor.Owner != world.LocalPlayer || !actor.IsInWorld)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
var selectable = actor.Info.Traits.GetOrDefault<SelectableInfo>();
|
||||||
|
if (selectable == null || !actor.HasVoice(selectable.Voice))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
actor.PlayVoice(selectable.Voice);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var a in newSelection)
|
foreach (var a in newSelection)
|
||||||
foreach (var sel in a.TraitsImplementing<INotifySelected>())
|
foreach (var sel in a.TraitsImplementing<INotifySelected>())
|
||||||
|
|||||||
@@ -324,12 +324,6 @@ namespace OpenRA
|
|||||||
|
|
||||||
if (voicedActor != null)
|
if (voicedActor != null)
|
||||||
{
|
{
|
||||||
if (!rules.VoicePools.Value.ContainsKey("Attack"))
|
|
||||||
rules.VoicePools.Value.Add("Attack", rules.VoicePools.Value["Move"]);
|
|
||||||
|
|
||||||
if (!rules.VoicePools.Value.ContainsKey("AttackMove"))
|
|
||||||
rules.VoicePools.Value.Add("AttackMove", rules.VoicePools.Value["Move"]);
|
|
||||||
|
|
||||||
if (!rules.VoicePools.Value.ContainsKey(definition))
|
if (!rules.VoicePools.Value.ContainsKey(definition))
|
||||||
throw new InvalidOperationException("Can't find {0} in voice pool.".F(definition));
|
throw new InvalidOperationException("Can't find {0} in voice pool.".F(definition));
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ namespace OpenRA.Traits
|
|||||||
[AttributeUsage(AttributeTargets.Field)]
|
[AttributeUsage(AttributeTargets.Field)]
|
||||||
public sealed class WeaponReferenceAttribute : Attribute { }
|
public sealed class WeaponReferenceAttribute : Attribute { }
|
||||||
|
|
||||||
|
[AttributeUsage(AttributeTargets.Field)]
|
||||||
|
public sealed class VoiceSetReferenceAttribute : Attribute { }
|
||||||
|
|
||||||
[AttributeUsage(AttributeTargets.Field)]
|
[AttributeUsage(AttributeTargets.Field)]
|
||||||
public sealed class VoiceReferenceAttribute : Attribute { }
|
public sealed class VoiceReferenceAttribute : Attribute { }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ namespace OpenRA.Traits
|
|||||||
+ "Defaults to the actor name when not defined or inherited.")]
|
+ "Defaults to the actor name when not defined or inherited.")]
|
||||||
public readonly string Class = null;
|
public readonly string Class = null;
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Select";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new Selectable(init.Self, this); }
|
public object Create(ActorInitializer init) { return new Selectable(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,9 +31,12 @@ namespace OpenRA.Traits
|
|||||||
{
|
{
|
||||||
public readonly string Class = null;
|
public readonly string Class = null;
|
||||||
|
|
||||||
|
public SelectableInfo Info;
|
||||||
|
|
||||||
public Selectable(Actor self, SelectableInfo info)
|
public Selectable(Actor self, SelectableInfo info)
|
||||||
{
|
{
|
||||||
Class = string.IsNullOrEmpty(info.Class) ? self.Info.Name : info.Class;
|
Class = string.IsNullOrEmpty(info.Class) ? self.Info.Name : info.Class;
|
||||||
|
Info = info;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ namespace OpenRA.Mods.Common.Lint
|
|||||||
CheckReference(actorInfo, traitInfo, field, map.Rules.Actors, "actor");
|
CheckReference(actorInfo, traitInfo, field, map.Rules.Actors, "actor");
|
||||||
if (field.HasAttribute<WeaponReferenceAttribute>())
|
if (field.HasAttribute<WeaponReferenceAttribute>())
|
||||||
CheckReference(actorInfo, traitInfo, field, map.Rules.Weapons, "weapon");
|
CheckReference(actorInfo, traitInfo, field, map.Rules.Weapons, "weapon");
|
||||||
if (field.HasAttribute<VoiceReferenceAttribute>())
|
if (field.HasAttribute<VoiceSetReferenceAttribute>())
|
||||||
CheckReference(actorInfo, traitInfo, field, map.Rules.Voices, "voice");
|
CheckReference(actorInfo, traitInfo, field, map.Rules.Voices, "voice");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
64
OpenRA.Mods.Common/Lint/CheckVoiceReferences.cs
Normal file
64
OpenRA.Mods.Common/Lint/CheckVoiceReferences.cs
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
#region Copyright & License Information
|
||||||
|
/*
|
||||||
|
* Copyright 2007-2015 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 System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using OpenRA.Traits;
|
||||||
|
|
||||||
|
namespace OpenRA.Mods.Common.Lint
|
||||||
|
{
|
||||||
|
public class CheckVoiceReferences : ILintPass
|
||||||
|
{
|
||||||
|
public void Run(Action<string> emitError, Action<string> emitWarning, Map map)
|
||||||
|
{
|
||||||
|
foreach (var actorInfo in map.Rules.Actors)
|
||||||
|
{
|
||||||
|
foreach (var traitInfo in actorInfo.Value.Traits.WithInterface<ITraitInfo>())
|
||||||
|
{
|
||||||
|
var fields = traitInfo.GetType().GetFields().Where(f => f.HasAttribute<VoiceSetReferenceAttribute>());
|
||||||
|
foreach (var field in fields)
|
||||||
|
{
|
||||||
|
var voiceSets = LintExts.GetFieldValues(traitInfo, field, emitError);
|
||||||
|
foreach (var voiceSet in voiceSets)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(voiceSet))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
CheckVoices(actorInfo.Value, emitError, map, voiceSet);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheckVoices(ActorInfo actorInfo, Action<string> emitError, Map map, string voiceSet)
|
||||||
|
{
|
||||||
|
var soundInfo = map.Rules.Voices[voiceSet.ToLowerInvariant()];
|
||||||
|
|
||||||
|
foreach (var traitInfo in actorInfo.Traits.WithInterface<ITraitInfo>())
|
||||||
|
{
|
||||||
|
var fields = traitInfo.GetType().GetFields().Where(f => f.HasAttribute<VoiceReferenceAttribute>());
|
||||||
|
foreach (var field in fields)
|
||||||
|
{
|
||||||
|
var voices = LintExts.GetFieldValues(traitInfo, field, emitError);
|
||||||
|
foreach (var voice in voices)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(voice))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (!soundInfo.Voices.Keys.Contains(voice))
|
||||||
|
emitError("Actor {0} using voice set {1} does not define {2} voice required by {3}.".F(actorInfo.Name, voiceSet, voice, traitInfo));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -185,6 +185,7 @@
|
|||||||
<Compile Include="Lint\CheckSyncAnnotations.cs" />
|
<Compile Include="Lint\CheckSyncAnnotations.cs" />
|
||||||
<Compile Include="Lint\CheckTraitPrerequisites.cs" />
|
<Compile Include="Lint\CheckTraitPrerequisites.cs" />
|
||||||
<Compile Include="Lint\CheckDeathTypes.cs" />
|
<Compile Include="Lint\CheckDeathTypes.cs" />
|
||||||
|
<Compile Include="Lint\CheckVoiceReferences.cs" />
|
||||||
<Compile Include="Lint\LintBuildablePrerequisites.cs" />
|
<Compile Include="Lint\LintBuildablePrerequisites.cs" />
|
||||||
<Compile Include="Lint\LintExts.cs" />
|
<Compile Include="Lint\LintExts.cs" />
|
||||||
<Compile Include="LoadScreens\ModChooserLoadScreen.cs" />
|
<Compile Include="LoadScreens\ModChooserLoadScreen.cs" />
|
||||||
|
|||||||
@@ -44,6 +44,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public int GetInitialFacing() { return InitialFacing; }
|
public int GetInitialFacing() { return InitialFacing; }
|
||||||
public WRange GetCruiseAltitude() { return CruiseAltitude; }
|
public WRange GetCruiseAltitude() { return CruiseAltitude; }
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public IReadOnlyDictionary<CPos, SubCell> OccupiedCells(ActorInfo info, CPos location, SubCell subCell = SubCell.Any) { return new ReadOnlyDictionary<CPos, SubCell>(); }
|
public IReadOnlyDictionary<CPos, SubCell> OccupiedCells(ActorInfo info, CPos location, SubCell subCell = SubCell.Any) { return new ReadOnlyDictionary<CPos, SubCell>(); }
|
||||||
bool IOccupySpaceInfo.SharesCell { get { return false; } }
|
bool IOccupySpaceInfo.SharesCell { get { return false; } }
|
||||||
}
|
}
|
||||||
@@ -300,7 +302,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
case "Enter":
|
case "Enter":
|
||||||
case "ReturnToBase":
|
case "ReturnToBase":
|
||||||
case "Stop":
|
case "Stop":
|
||||||
return "Move";
|
return info.Voice;
|
||||||
default: return null;
|
default: return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Does not care about shroud or fog. Enables the actor to launch an attack against a target even if he has no visibility of it.")]
|
[Desc("Does not care about shroud or fog. Enables the actor to launch an attack against a target even if he has no visibility of it.")]
|
||||||
public readonly bool IgnoresVisibility = false;
|
public readonly bool IgnoresVisibility = false;
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public abstract object Create(ActorInitializer init);
|
public abstract object Create(ActorInitializer init);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,7 +143,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return order.OrderString == "Attack" ? "Attack" : null;
|
return order.OrderString == "Attack" ? Info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove);
|
public abstract Activity GetAttackActivity(Actor self, Target newTarget, bool allowMove);
|
||||||
|
|||||||
@@ -18,6 +18,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Provides access to the attack-move command, which will make the actor automatically engage viable targets while moving to the destination.")]
|
[Desc("Provides access to the attack-move command, which will make the actor automatically engage viable targets while moving to the destination.")]
|
||||||
class AttackMoveInfo : ITraitInfo
|
class AttackMoveInfo : ITraitInfo
|
||||||
{
|
{
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new AttackMove(init.Self, this); }
|
public object Create(ActorInitializer init) { return new AttackMove(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,16 +29,18 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public CPos? TargetLocation = null;
|
public CPos? TargetLocation = null;
|
||||||
|
|
||||||
readonly IMove move;
|
readonly IMove move;
|
||||||
|
readonly AttackMoveInfo info;
|
||||||
|
|
||||||
public AttackMove(Actor self, AttackMoveInfo info)
|
public AttackMove(Actor self, AttackMoveInfo info)
|
||||||
{
|
{
|
||||||
move = self.Trait<IMove>();
|
move = self.Trait<IMove>();
|
||||||
|
this.info = info;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
if (order.OrderString == "AttackMove")
|
if (order.OrderString == "AttackMove")
|
||||||
return "AttackMove";
|
return info.Voice;
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,16 +22,21 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Delay to demolish the target once the C4 is planted." +
|
[Desc("Delay to demolish the target once the C4 is planted." +
|
||||||
"Measured in game ticks. Default is 1.8 seconds.")]
|
"Measured in game ticks. Default is 1.8 seconds.")]
|
||||||
public readonly int C4Delay = 45;
|
public readonly int C4Delay = 45;
|
||||||
|
|
||||||
[Desc("Number of times to flash the target")]
|
[Desc("Number of times to flash the target")]
|
||||||
public readonly int Flashes = 3;
|
public readonly int Flashes = 3;
|
||||||
|
|
||||||
[Desc("Delay before the flashing starts")]
|
[Desc("Delay before the flashing starts")]
|
||||||
public readonly int FlashesDelay = 4;
|
public readonly int FlashesDelay = 4;
|
||||||
|
|
||||||
[Desc("Interval between each flash")]
|
[Desc("Interval between each flash")]
|
||||||
public readonly int FlashInterval = 4;
|
public readonly int FlashInterval = 4;
|
||||||
|
|
||||||
[Desc("Duration of each flash")]
|
[Desc("Duration of each flash")]
|
||||||
public readonly int FlashDuration = 3;
|
public readonly int FlashDuration = 3;
|
||||||
|
|
||||||
[Desc("Voice string when planting explosive charges.")]
|
[Desc("Voice string when planting explosive charges.")]
|
||||||
public readonly string Voice = "Attack";
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new C4Demolition(this); }
|
public object Create(ActorInitializer init) { return new C4Demolition(this); }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Only used if Sabotage=true. Sabotage damage expressed as a percentage of enemy health removed.")]
|
[Desc("Only used if Sabotage=true. Sabotage damage expressed as a percentage of enemy health removed.")]
|
||||||
public readonly float SabotageHPRemoval = 0.5f;
|
public readonly float SabotageHPRemoval = 0.5f;
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new Captures(init.Self, this); }
|
public object Create(ActorInitializer init) { return new Captures(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -59,7 +61,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return order.OrderString == "CaptureActor" ? "Attack" : null;
|
return order.OrderString == "CaptureActor" ? Info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly string[] UnloadTerrainTypes = { };
|
public readonly string[] UnloadTerrainTypes = { };
|
||||||
|
|
||||||
[Desc("Voice to play when ordered to unload the passengers.")]
|
[Desc("Voice to play when ordered to unload the passengers.")]
|
||||||
public readonly string UnloadVoice = "Unload";
|
[VoiceReference] public readonly string UnloadVoice = "Action";
|
||||||
|
|
||||||
[Desc("Which direction the passenger will face (relative to the transport) when unloading.")]
|
[Desc("Which direction the passenger will face (relative to the transport) when unloading.")]
|
||||||
public readonly int PassengerFacing = 128;
|
public readonly int PassengerFacing = 128;
|
||||||
|
|||||||
@@ -17,10 +17,22 @@ using OpenRA.Traits;
|
|||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
[Desc("Can instantly repair other actors, but gets consumed afterwards.")]
|
[Desc("Can instantly repair other actors, but gets consumed afterwards.")]
|
||||||
class EngineerRepairInfo : TraitInfo<EngineerRepair> { }
|
class EngineerRepairInfo : ITraitInfo
|
||||||
|
{
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
|
public object Create(ActorInitializer init) { return new EngineerRepair(init, this); }
|
||||||
|
}
|
||||||
|
|
||||||
class EngineerRepair : IIssueOrder, IResolveOrder, IOrderVoice
|
class EngineerRepair : IIssueOrder, IResolveOrder, IOrderVoice
|
||||||
{
|
{
|
||||||
|
readonly EngineerRepairInfo info;
|
||||||
|
|
||||||
|
public EngineerRepair(ActorInitializer init, EngineerRepairInfo info)
|
||||||
|
{
|
||||||
|
this.info = info;
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerable<IOrderTargeter> Orders
|
public IEnumerable<IOrderTargeter> Orders
|
||||||
{
|
{
|
||||||
get { yield return new EngineerRepairOrderTargeter(); }
|
get { yield return new EngineerRepairOrderTargeter(); }
|
||||||
@@ -63,7 +75,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return order.OrderString == "EngineerRepair" && IsValidOrder(self, order)
|
return order.OrderString == "EngineerRepair" && IsValidOrder(self, order)
|
||||||
? "Attack" : null;
|
? info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
|
|||||||
@@ -21,9 +21,12 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
[Desc("Types of actors that it can capture, as long as the type also exists in the ExternalCapturable Type: trait.")]
|
[Desc("Types of actors that it can capture, as long as the type also exists in the ExternalCapturable Type: trait.")]
|
||||||
public readonly string[] CaptureTypes = { "building" };
|
public readonly string[] CaptureTypes = { "building" };
|
||||||
|
|
||||||
[Desc("Destroy the unit after capturing.")]
|
[Desc("Destroy the unit after capturing.")]
|
||||||
public readonly bool ConsumeActor = false;
|
public readonly bool ConsumeActor = false;
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new ExternalCaptures(init.Self, this); }
|
public object Create(ActorInitializer init) { return new ExternalCaptures(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,7 +86,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return order.OrderString == "ExternalCaptureActor" && IsValidOrder(self, order)
|
return order.OrderString == "ExternalCaptureActor" && IsValidOrder(self, order)
|
||||||
? "Attack" : null;
|
? Info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("The player can give this unit the order to follow and protect friendly units with the Guardable trait.")]
|
[Desc("The player can give this unit the order to follow and protect friendly units with the Guardable trait.")]
|
||||||
public class GuardInfo : ITraitInfo
|
public class GuardInfo : ITraitInfo
|
||||||
{
|
{
|
||||||
public readonly string Voice = "Move";
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new Guard(this); }
|
public object Create(ActorInitializer init) { return new Guard(this); }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,23 +22,35 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public class HarvesterInfo : ITraitInfo
|
public class HarvesterInfo : ITraitInfo
|
||||||
{
|
{
|
||||||
public readonly string[] DeliveryBuildings = { };
|
public readonly string[] DeliveryBuildings = { };
|
||||||
|
|
||||||
[Desc("How much resources it can carry.")]
|
[Desc("How much resources it can carry.")]
|
||||||
public readonly int Capacity = 28;
|
public readonly int Capacity = 28;
|
||||||
|
|
||||||
public readonly int LoadTicksPerBale = 4;
|
public readonly int LoadTicksPerBale = 4;
|
||||||
|
|
||||||
[Desc("How fast it can dump it's carryage.")]
|
[Desc("How fast it can dump it's carryage.")]
|
||||||
public readonly int UnloadTicksPerBale = 4;
|
public readonly int UnloadTicksPerBale = 4;
|
||||||
|
|
||||||
[Desc("How many squares to show the fill level.")]
|
[Desc("How many squares to show the fill level.")]
|
||||||
public readonly int PipCount = 7;
|
public readonly int PipCount = 7;
|
||||||
|
|
||||||
public readonly int HarvestFacings = 0;
|
public readonly int HarvestFacings = 0;
|
||||||
|
|
||||||
[Desc("Which resources it can harvest.")]
|
[Desc("Which resources it can harvest.")]
|
||||||
public readonly string[] Resources = { };
|
public readonly string[] Resources = { };
|
||||||
|
|
||||||
[Desc("Percentage of maximum speed when fully loaded.")]
|
[Desc("Percentage of maximum speed when fully loaded.")]
|
||||||
public readonly int FullyLoadedSpeed = 85;
|
public readonly int FullyLoadedSpeed = 85;
|
||||||
|
|
||||||
[Desc("Initial search radius (in cells) from the refinery that created us.")]
|
[Desc("Initial search radius (in cells) from the refinery that created us.")]
|
||||||
public readonly int SearchFromProcRadius = 24;
|
public readonly int SearchFromProcRadius = 24;
|
||||||
|
|
||||||
[Desc("Search radius (in cells) from the last harvest order location to find more resources.")]
|
[Desc("Search radius (in cells) from the last harvest order location to find more resources.")]
|
||||||
public readonly int SearchFromOrderRadius = 12;
|
public readonly int SearchFromOrderRadius = 12;
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string HarvestVoice = "Action";
|
||||||
|
[VoiceReference] public readonly string DeliverVoice = "Action";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new Harvester(init.Self, this); }
|
public object Create(ActorInitializer init) { return new Harvester(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,7 +282,13 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return (order.OrderString == "Harvest" || (order.OrderString == "Deliver" && !IsEmpty)) ? "Move" : null;
|
if (order.OrderString == "Harvest")
|
||||||
|
return info.HarvestVoice;
|
||||||
|
|
||||||
|
if (order.OrderString == "Deliver" && !IsEmpty)
|
||||||
|
return info.DeliverVoice;
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
|
|||||||
@@ -61,6 +61,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public readonly string Cursor = "move";
|
public readonly string Cursor = "move";
|
||||||
public readonly string BlockedCursor = "move-blocked";
|
public readonly string BlockedCursor = "move-blocked";
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public virtual object Create(ActorInitializer init) { return new Mobile(init, this); }
|
public virtual object Create(ActorInitializer init) { return new Mobile(init, this); }
|
||||||
|
|
||||||
static object LoadSpeeds(MiniYaml y)
|
static object LoadSpeeds(MiniYaml y)
|
||||||
@@ -533,7 +535,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
case "Move":
|
case "Move":
|
||||||
case "Scatter":
|
case "Scatter":
|
||||||
case "Stop":
|
case "Stop":
|
||||||
return "Move";
|
return Info.Voice;
|
||||||
default:
|
default:
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -103,6 +103,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Upgrade types to grant to transport.")]
|
[Desc("Upgrade types to grant to transport.")]
|
||||||
public readonly string[] GrantUpgrades = { };
|
public readonly string[] GrantUpgrades = { };
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new Passenger(this); }
|
public object Create(ActorInitializer init) { return new Passenger(this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +156,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
if ((order.OrderString != "EnterTransport" && order.OrderString != "EnterTransports") ||
|
if ((order.OrderString != "EnterTransport" && order.OrderString != "EnterTransports") ||
|
||||||
!CanEnter(order.TargetActor)) return null;
|
!CanEnter(order.TargetActor)) return null;
|
||||||
return "Move";
|
return Info.Voice;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
|
|||||||
@@ -22,6 +22,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
class RepairableInfo : ITraitInfo, Requires<HealthInfo>
|
class RepairableInfo : ITraitInfo, Requires<HealthInfo>
|
||||||
{
|
{
|
||||||
public readonly string[] RepairBuildings = { "fix" };
|
public readonly string[] RepairBuildings = { "fix" };
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public virtual object Create(ActorInitializer init) { return new Repairable(init.Self, this); }
|
public virtual object Create(ActorInitializer init) { return new Repairable(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -76,7 +79,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return (order.OrderString == "Repair" && CanRepair()) ? "Move" : null;
|
return (order.OrderString == "Repair" && CanRepair()) ? info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
|
|||||||
@@ -17,10 +17,22 @@ using OpenRA.Traits;
|
|||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
[Desc("Can enter a BridgeHut to trigger a repair.")]
|
[Desc("Can enter a BridgeHut to trigger a repair.")]
|
||||||
class RepairsBridgesInfo : TraitInfo<RepairsBridges> { }
|
class RepairsBridgesInfo : ITraitInfo
|
||||||
|
{
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
|
public object Create(ActorInitializer init) { return new RepairsBridges(this); }
|
||||||
|
}
|
||||||
|
|
||||||
class RepairsBridges : IIssueOrder, IResolveOrder, IOrderVoice
|
class RepairsBridges : IIssueOrder, IResolveOrder, IOrderVoice
|
||||||
{
|
{
|
||||||
|
readonly RepairsBridgesInfo info;
|
||||||
|
|
||||||
|
public RepairsBridges(RepairsBridgesInfo info)
|
||||||
|
{
|
||||||
|
this.info = info;
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerable<IOrderTargeter> Orders
|
public IEnumerable<IOrderTargeter> Orders
|
||||||
{
|
{
|
||||||
get { yield return new RepairBridgeOrderTargeter(); }
|
get { yield return new RepairBridgeOrderTargeter(); }
|
||||||
@@ -43,7 +55,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
if (hut == null)
|
if (hut == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return hut.BridgeDamageState == DamageState.Undamaged || hut.Repairing || hut.Bridge.IsDangling ? null : "Attack";
|
return hut.BridgeDamageState == DamageState.Undamaged || hut.Repairing || hut.Bridge.IsDangling ? null : info.Voice;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
{
|
{
|
||||||
[Desc("The amount of cash the owner recieves.")]
|
[Desc("The amount of cash the owner recieves.")]
|
||||||
public readonly int Payload = 500;
|
public readonly int Payload = 500;
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new SupplyTruck(this); }
|
public object Create(ActorInitializer init) { return new SupplyTruck(this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,7 +54,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return "Move";
|
return info.Voice;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
[Desc("Cursor to display when unable to (un)deploy the actor.")]
|
[Desc("Cursor to display when unable to (un)deploy the actor.")]
|
||||||
public readonly string DeployBlockedCursor = "deploy-blocked";
|
public readonly string DeployBlockedCursor = "deploy-blocked";
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public virtual object Create(ActorInitializer init) { return new Transforms(init, this); }
|
public virtual object Create(ActorInitializer init) { return new Transforms(init, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,7 +67,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return (order.OrderString == "DeployTransform") ? "Move" : null;
|
return (order.OrderString == "DeployTransform") ? info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CanDeploy()
|
bool CanDeploy()
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
public class VoicedInfo : ITraitInfo
|
public class VoicedInfo : ITraitInfo
|
||||||
{
|
{
|
||||||
[Desc("Which voice set to use.")]
|
[Desc("Which voice set to use.")]
|
||||||
[VoiceReference] public readonly string VoiceSet = null;
|
[VoiceSetReference] public readonly string VoiceSet = null;
|
||||||
|
|
||||||
[Desc("Multiply volume with this factor.")]
|
[Desc("Multiply volume with this factor.")]
|
||||||
public readonly float Volume = 1f;
|
public readonly float Volume = 1f;
|
||||||
|
|||||||
@@ -19,10 +19,22 @@ using OpenRA.Traits;
|
|||||||
|
|
||||||
namespace OpenRA.Mods.RA.Traits
|
namespace OpenRA.Mods.RA.Traits
|
||||||
{
|
{
|
||||||
class DemoTruckInfo : TraitInfo<DemoTruck>, Requires<ExplodesInfo> { }
|
class DemoTruckInfo : ITraitInfo, Requires<ExplodesInfo>
|
||||||
|
{
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
|
public object Create(ActorInitializer init) { return new DemoTruck(init.Self, this); }
|
||||||
|
}
|
||||||
|
|
||||||
class DemoTruck : IIssueOrder, IResolveOrder, IOrderVoice
|
class DemoTruck : IIssueOrder, IResolveOrder, IOrderVoice
|
||||||
{
|
{
|
||||||
|
readonly DemoTruckInfo info;
|
||||||
|
|
||||||
|
public DemoTruck(Actor self, DemoTruckInfo info)
|
||||||
|
{
|
||||||
|
this.info = info;
|
||||||
|
}
|
||||||
|
|
||||||
static void Explode(Actor self)
|
static void Explode(Actor self)
|
||||||
{
|
{
|
||||||
self.World.AddFrameEndTask(w => self.InflictDamage(self, int.MaxValue, null));
|
self.World.AddFrameEndTask(w => self.InflictDamage(self, int.MaxValue, null));
|
||||||
@@ -50,7 +62,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return "Attack";
|
return info.Voice;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
|
|||||||
@@ -57,10 +57,22 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Desc("Provides access to the disguise command, which makes the actor appear to be another player's actor.")]
|
[Desc("Provides access to the disguise command, which makes the actor appear to be another player's actor.")]
|
||||||
class DisguiseInfo : TraitInfo<Disguise> { }
|
class DisguiseInfo : ITraitInfo
|
||||||
|
{
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
|
public object Create(ActorInitializer init) { return new Disguise(init.Self, this); }
|
||||||
|
}
|
||||||
|
|
||||||
class Disguise : IEffectiveOwner, IIssueOrder, IResolveOrder, IOrderVoice, IRadarColorModifier, INotifyAttack
|
class Disguise : IEffectiveOwner, IIssueOrder, IResolveOrder, IOrderVoice, IRadarColorModifier, INotifyAttack
|
||||||
{
|
{
|
||||||
|
readonly DisguiseInfo info;
|
||||||
|
|
||||||
|
public Disguise(Actor self, DisguiseInfo info)
|
||||||
|
{
|
||||||
|
this.info = info;
|
||||||
|
}
|
||||||
|
|
||||||
public Player AsPlayer { get; private set; }
|
public Player AsPlayer { get; private set; }
|
||||||
public string AsSprite { get; private set; }
|
public string AsSprite { get; private set; }
|
||||||
public ITooltipInfo AsTooltipInfo { get; private set; }
|
public ITooltipInfo AsTooltipInfo { get; private set; }
|
||||||
@@ -95,7 +107,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return order.OrderString == "Disguise" ? "Attack" : null;
|
return order.OrderString == "Disguise" ? info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color RadarColorOverride(Actor self)
|
public Color RadarColorOverride(Actor self)
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
{
|
{
|
||||||
public readonly string[] Types = { };
|
public readonly string[] Types = { };
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new Infiltrates(this); }
|
public object Create(ActorInitializer init) { return new Infiltrates(this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +83,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return order.OrderString == "Infiltrate" && IsValidOrder(self, order)
|
return order.OrderString == "Infiltrate" && IsValidOrder(self, order)
|
||||||
? "Attack" : null;
|
? info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResolveOrder(Actor self, Order order)
|
public void ResolveOrder(Actor self, Order order)
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
[ActorReference]
|
[ActorReference]
|
||||||
public readonly string DriverActor = "e1";
|
public readonly string DriverActor = "e1";
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new MadTank(init.Self, this); }
|
public object Create(ActorInitializer init) { return new MadTank(init.Self, this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,7 +109,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return "Attack";
|
return info.Voice;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Detonate()
|
void Detonate()
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
[Desc("Cursor to display when unable to deploy the actor.")]
|
[Desc("Cursor to display when unable to deploy the actor.")]
|
||||||
public readonly string DeployBlockedCursor = "deploy-blocked";
|
public readonly string DeployBlockedCursor = "deploy-blocked";
|
||||||
|
|
||||||
|
[VoiceReference] public readonly string Voice = "Action";
|
||||||
|
|
||||||
public object Create(ActorInitializer init) { return new PortableChrono(this); }
|
public object Create(ActorInitializer init) { return new PortableChrono(this); }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,7 +95,7 @@ namespace OpenRA.Mods.RA.Traits
|
|||||||
|
|
||||||
public string VoicePhraseForOrder(Actor self, Order order)
|
public string VoicePhraseForOrder(Actor self, Order order)
|
||||||
{
|
{
|
||||||
return order.OrderString == "PortableChronoTeleport" && CanTeleport ? "Move" : null;
|
return order.OrderString == "PortableChronoTeleport" && CanTeleport ? Info.Voice : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ResetChargeTime()
|
public void ResetChargeTime()
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ GenericVoice:
|
|||||||
gdi: .v01,.v03
|
gdi: .v01,.v03
|
||||||
Voices:
|
Voices:
|
||||||
Select: await1,ready,report1,yessir1
|
Select: await1,ready,report1,yessir1
|
||||||
Move: ackno,affirm1,noprob,ritaway,roger,ugotit
|
Action: ackno,affirm1,noprob,ritaway,roger,ugotit
|
||||||
Die: nuyell1,nuyell4,nuyell5,nuyell6
|
Die: nuyell1,nuyell4,nuyell5,nuyell6
|
||||||
Burned: yell1
|
Burned: yell1
|
||||||
Zapped: nuyell3
|
Zapped: nuyell3
|
||||||
@@ -17,13 +17,13 @@ VehicleVoice:
|
|||||||
gdi: .v00,.v02
|
gdi: .v00,.v02
|
||||||
Voices:
|
Voices:
|
||||||
Select: vehic1,yessir1,report1,await1,unit1
|
Select: vehic1,yessir1,report1,await1,unit1
|
||||||
Move: ackno,affirm1,movout1
|
Action: ackno,affirm1,movout1
|
||||||
Unload: movout1
|
Unload: movout1
|
||||||
|
|
||||||
CivilianMaleVoice:
|
CivilianMaleVoice:
|
||||||
Voices:
|
Voices:
|
||||||
Select: guyyeah1
|
Select: guyyeah1
|
||||||
Move: guyokay1
|
Action: guyokay1
|
||||||
Die: nuyell1,nuyell4,nuyell5,nuyell6
|
Die: nuyell1,nuyell4,nuyell5,nuyell6
|
||||||
Burned: yell1
|
Burned: yell1
|
||||||
Zapped: nuyell3
|
Zapped: nuyell3
|
||||||
@@ -32,7 +32,7 @@ CivilianMaleVoice:
|
|||||||
CivilianFemaleVoice:
|
CivilianFemaleVoice:
|
||||||
Voices:
|
Voices:
|
||||||
Select: girlyeah
|
Select: girlyeah
|
||||||
Move: girlokay
|
Action: girlokay
|
||||||
Die: nuyell1,nuyell4,nuyell5,nuyell6
|
Die: nuyell1,nuyell4,nuyell5,nuyell6
|
||||||
Burned: yell1
|
Burned: yell1
|
||||||
Zapped: nuyell3
|
Zapped: nuyell3
|
||||||
|
|||||||
@@ -170,6 +170,7 @@ C17:
|
|||||||
PipCount: 10
|
PipCount: 10
|
||||||
Invulnerable:
|
Invulnerable:
|
||||||
-Selectable:
|
-Selectable:
|
||||||
|
-Voiced:
|
||||||
-TargetableUnit:
|
-TargetableUnit:
|
||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
FlyAwayOnIdle:
|
FlyAwayOnIdle:
|
||||||
@@ -219,6 +220,7 @@ A10:
|
|||||||
Weapon: Napalm
|
Weapon: Napalm
|
||||||
LocalOffset: 0,-256,-43, 0,256,-43
|
LocalOffset: 0,-256,-43, 0,256,-43
|
||||||
-Selectable:
|
-Selectable:
|
||||||
|
-Voiced:
|
||||||
-TargetableUnit:
|
-TargetableUnit:
|
||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
FlyAwayOnIdle:
|
FlyAwayOnIdle:
|
||||||
|
|||||||
@@ -437,6 +437,7 @@ VICE:
|
|||||||
Tiberium: 100
|
Tiberium: 100
|
||||||
BlueTiberium: 100
|
BlueTiberium: 100
|
||||||
Beach: 60
|
Beach: 60
|
||||||
|
Voice: Move
|
||||||
SelectionDecorations:
|
SelectionDecorations:
|
||||||
VisualBounds: 24,24
|
VisualBounds: 24,24
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -446,6 +447,7 @@ VICE:
|
|||||||
AutoTarget:
|
AutoTarget:
|
||||||
ScanRadius: 5
|
ScanRadius: 5
|
||||||
AttackMove:
|
AttackMove:
|
||||||
|
Voice: Attack
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
GivesExperience:
|
GivesExperience:
|
||||||
Valued:
|
Valued:
|
||||||
@@ -458,6 +460,7 @@ VICE:
|
|||||||
MuzzleSequence: muzzle
|
MuzzleSequence: muzzle
|
||||||
MuzzleSplitFacings: 8
|
MuzzleSplitFacings: 8
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
AttackWander:
|
AttackWander:
|
||||||
WanderMoveRadius: 2
|
WanderMoveRadius: 2
|
||||||
MinMoveDelayInTicks: 25
|
MinMoveDelayInTicks: 25
|
||||||
@@ -467,6 +470,7 @@ VICE:
|
|||||||
SplitFacings: true
|
SplitFacings: true
|
||||||
CombatDebugOverlay:
|
CombatDebugOverlay:
|
||||||
Guard:
|
Guard:
|
||||||
|
Voice: Move
|
||||||
Guardable:
|
Guardable:
|
||||||
UpdatesPlayerStatistics:
|
UpdatesPlayerStatistics:
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
|
|||||||
@@ -300,6 +300,7 @@
|
|||||||
Tiberium: 70
|
Tiberium: 70
|
||||||
BlueTiberium: 70
|
BlueTiberium: 70
|
||||||
Beach: 80
|
Beach: 80
|
||||||
|
Voice: Move
|
||||||
SelectionDecorations:
|
SelectionDecorations:
|
||||||
Selectable:
|
Selectable:
|
||||||
Bounds: 24,24
|
Bounds: 24,24
|
||||||
@@ -317,7 +318,9 @@
|
|||||||
AutoTarget:
|
AutoTarget:
|
||||||
ScanRadius: 4
|
ScanRadius: 4
|
||||||
AttackMove:
|
AttackMove:
|
||||||
|
Voice: Attack
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
UpdatesPlayerStatistics:
|
UpdatesPlayerStatistics:
|
||||||
Huntable:
|
Huntable:
|
||||||
ScriptTriggers:
|
ScriptTriggers:
|
||||||
|
|||||||
@@ -179,19 +179,27 @@ RMBO:
|
|||||||
Queue: Infantry.GDI
|
Queue: Infantry.GDI
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 71
|
Speed: 71
|
||||||
|
Voice: Move
|
||||||
|
Guard:
|
||||||
|
Voice: Move
|
||||||
Health:
|
Health:
|
||||||
HP: 150
|
HP: 150
|
||||||
Passenger:
|
Passenger:
|
||||||
PipType: Red
|
PipType: Red
|
||||||
|
Voice: Move
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
ScanRadius: 6
|
ScanRadius: 6
|
||||||
C4Demolition:
|
C4Demolition:
|
||||||
C4Delay: 45
|
C4Delay: 45
|
||||||
|
Voice: Demolish
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Sniper
|
Weapon: Sniper
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
|
AttackMove:
|
||||||
|
Voice: Attack
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2,idle3
|
IdleSequences: idle1,idle2,idle3
|
||||||
|
|||||||
@@ -12,12 +12,11 @@ GenericVoice:
|
|||||||
harkonnen: H
|
harkonnen: H
|
||||||
Voices:
|
Voices:
|
||||||
Select: G_SSEL1,G_SSEL2,G_SSEL3
|
Select: G_SSEL1,G_SSEL2,G_SSEL3
|
||||||
Move: G_SCONF1,G_SCONF2,G_SCONF3
|
Action: G_SCONF1,G_SCONF2,G_SCONF3
|
||||||
Attack: G_SCONF1,G_SCONF2,G_SCONF3
|
|
||||||
Die: KILLGUY1,KILLGUY2,KILLGUY3,KILLGUY4,KILLGUY5,KILLGUY6,KILLGUY7,KILLGUY8,KILLGUY9
|
Die: KILLGUY1,KILLGUY2,KILLGUY3,KILLGUY4,KILLGUY5,KILLGUY6,KILLGUY7,KILLGUY8,KILLGUY9
|
||||||
Guard: I_GUARD
|
Guard: I_GUARD
|
||||||
DisablePrefixes: Select, Move, Attack, Die
|
DisablePrefixes: Select, Action, Die
|
||||||
DisableVariants: Select, Move, Attack, Guard
|
DisableVariants: Select, Action, Guard
|
||||||
|
|
||||||
VehicleVoice:
|
VehicleVoice:
|
||||||
DefaultVariant: .AUD
|
DefaultVariant: .AUD
|
||||||
@@ -27,8 +26,7 @@ VehicleVoice:
|
|||||||
harkonnen: H
|
harkonnen: H
|
||||||
Voices:
|
Voices:
|
||||||
Select: _VSEL1,_VSEL2,_VSEL3
|
Select: _VSEL1,_VSEL2,_VSEL3
|
||||||
Move: _VCONF1,_VCONF2,_VCONF3
|
Action: _VCONF1,_VCONF2,_VCONF3
|
||||||
Attack: _VCONF1,_VCONF2,_VCONF3
|
|
||||||
Guard: I_GUARD
|
Guard: I_GUARD
|
||||||
|
|
||||||
InfantryVoice:
|
InfantryVoice:
|
||||||
@@ -43,12 +41,11 @@ InfantryVoice:
|
|||||||
harkonnen: H
|
harkonnen: H
|
||||||
Voices:
|
Voices:
|
||||||
Select: _ISEL1,_ISEL2,_ISEL3
|
Select: _ISEL1,_ISEL2,_ISEL3
|
||||||
Move: _ICONF1,_ICONF2,_ICONF3
|
Action: _ICONF1,_ICONF2,_ICONF3
|
||||||
Attack: _ICONF1,_ICONF2,_ICONF3
|
|
||||||
Die: KILLGUY1,KILLGUY2,KILLGUY3,KILLGUY4,KILLGUY5,KILLGUY6,KILLGUY7,KILLGUY8,KILLGUY9
|
Die: KILLGUY1,KILLGUY2,KILLGUY3,KILLGUY4,KILLGUY5,KILLGUY6,KILLGUY7,KILLGUY8,KILLGUY9
|
||||||
Guard: I_GUARD
|
Guard: I_GUARD
|
||||||
DisablePrefixes: Die
|
DisablePrefixes: Die
|
||||||
DisableVariants: Select, Move, Attack, Guard
|
DisableVariants: Select, Action, Guard
|
||||||
|
|
||||||
EngineerVoice:
|
EngineerVoice:
|
||||||
DefaultVariant: .AUD
|
DefaultVariant: .AUD
|
||||||
@@ -62,11 +59,11 @@ EngineerVoice:
|
|||||||
harkonnen: H
|
harkonnen: H
|
||||||
Voices:
|
Voices:
|
||||||
Select: _ESEL1,_ESEL2,_ESEL3
|
Select: _ESEL1,_ESEL2,_ESEL3
|
||||||
Move: _ECONF1,_ECONF2,_ECONF3
|
Action: _ECONF1,_ECONF2,_ECONF3
|
||||||
Die: KILLGUY1,KILLGUY2,KILLGUY3,KILLGUY4,KILLGUY5,KILLGUY6,KILLGUY7,KILLGUY8,KILLGUY9
|
Die: KILLGUY1,KILLGUY2,KILLGUY3,KILLGUY4,KILLGUY5,KILLGUY6,KILLGUY7,KILLGUY8,KILLGUY9
|
||||||
Guard: I_GUARD
|
Guard: I_GUARD
|
||||||
DisablePrefixes: Die
|
DisablePrefixes: Die
|
||||||
DisableVariants: Select, Move, Guard
|
DisableVariants: Select, Action, Guard
|
||||||
|
|
||||||
FremenVoice:
|
FremenVoice:
|
||||||
DefaultVariant: .AUD
|
DefaultVariant: .AUD
|
||||||
@@ -80,12 +77,11 @@ FremenVoice:
|
|||||||
harkonnen: H
|
harkonnen: H
|
||||||
Voices:
|
Voices:
|
||||||
Select: A_FSEL1,A_FSEL2,A_FSEL3, A_SEL4
|
Select: A_FSEL1,A_FSEL2,A_FSEL3, A_SEL4
|
||||||
Move: A_FCONF1,A_FCONF2,A_FCONF3, A_FCONF4
|
Action: A_FCONF1,A_FCONF2,A_FCONF3, A_FCONF4
|
||||||
Attack: A_FCONF1,A_FCONF2,A_FCONF3, A_FCONF4
|
|
||||||
Die: KILLGUY1,KILLGUY2,KILLGUY3,KILLGUY4,KILLGUY5,KILLGUY6,KILLGUY7,KILLGUY8,KILLGUY9
|
Die: KILLGUY1,KILLGUY2,KILLGUY3,KILLGUY4,KILLGUY5,KILLGUY6,KILLGUY7,KILLGUY8,KILLGUY9
|
||||||
Guard: I_GUARD
|
Guard: I_GUARD
|
||||||
DisablePrefixes: Select, Move, Attack, Die
|
DisablePrefixes: Select, Action, Die
|
||||||
DisableVariants: Select, Move, Attack, Guard
|
DisableVariants: Select, Action, Guard
|
||||||
|
|
||||||
SaboteurVoice:
|
SaboteurVoice:
|
||||||
DefaultVariant: .AUD
|
DefaultVariant: .AUD
|
||||||
@@ -99,8 +95,8 @@ SaboteurVoice:
|
|||||||
harkonnen: H
|
harkonnen: H
|
||||||
Voices:
|
Voices:
|
||||||
Select: O_SSEL1,O_SSEL2,O_SSEL3
|
Select: O_SSEL1,O_SSEL2,O_SSEL3
|
||||||
Move: O_SCONF1,O_SCONF2,O_SCONF3
|
Action: O_SCONF1,O_SCONF2,O_SCONF3
|
||||||
Die: KILLGUY1,KILLGUY2,KILLGUY3,KILLGUY4,KILLGUY5,KILLGUY6,KILLGUY7,KILLGUY8,KILLGUY9
|
Die: KILLGUY1,KILLGUY2,KILLGUY3,KILLGUY4,KILLGUY5,KILLGUY6,KILLGUY7,KILLGUY8,KILLGUY9
|
||||||
Guard: I_GUARD
|
Guard: I_GUARD
|
||||||
DisablePrefixes: Select, Move, Die
|
DisablePrefixes: Select, Action, Die
|
||||||
DisableVariants: Select, Move, Guard
|
DisableVariants: Select, Action, Guard
|
||||||
@@ -63,6 +63,7 @@ carryall.infantry:
|
|||||||
MaxWeight: 5
|
MaxWeight: 5
|
||||||
Types: Infantry
|
Types: Infantry
|
||||||
-Selectable:
|
-Selectable:
|
||||||
|
-Voiced:
|
||||||
-TargetableAircraft:
|
-TargetableAircraft:
|
||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
@@ -117,6 +118,7 @@ frigate:
|
|||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
FlyAwayOnIdle:
|
FlyAwayOnIdle:
|
||||||
RejectsOrders:
|
RejectsOrders:
|
||||||
|
-Voiced:
|
||||||
|
|
||||||
orni:
|
orni:
|
||||||
Inherits: ^Helicopter
|
Inherits: ^Helicopter
|
||||||
@@ -172,6 +174,7 @@ orni.bomber:
|
|||||||
WithFacingSpriteBody:
|
WithFacingSpriteBody:
|
||||||
WithShadow:
|
WithShadow:
|
||||||
-Selectable:
|
-Selectable:
|
||||||
|
-Voiced:
|
||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Ornithopter
|
Name: Ornithopter
|
||||||
|
|||||||
@@ -221,7 +221,6 @@ saboteur:
|
|||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
C4Demolition:
|
C4Demolition:
|
||||||
C4Delay: 45
|
C4Delay: 45
|
||||||
Voice: Move
|
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
AttractsWorms:
|
AttractsWorms:
|
||||||
Intensity: 120
|
Intensity: 120
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ GenericVoice:
|
|||||||
ukraine: .r01,.r03
|
ukraine: .r01,.r03
|
||||||
Voices:
|
Voices:
|
||||||
Select: await1,ready,report1,yessir1
|
Select: await1,ready,report1,yessir1
|
||||||
Move: ackno,affirm1,noprob,overout,ritaway,roger,ugotit
|
Action: ackno,affirm1,noprob,overout,ritaway,roger,ugotit
|
||||||
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
||||||
Burned: dedman10
|
Burned: dedman10
|
||||||
Zapped: dedman6
|
Zapped: dedman6
|
||||||
@@ -26,13 +26,12 @@ VehicleVoice:
|
|||||||
ukraine: .r00,.r02
|
ukraine: .r00,.r02
|
||||||
Voices:
|
Voices:
|
||||||
Select: vehic1,yessir1,report1,await1
|
Select: vehic1,yessir1,report1,await1
|
||||||
Move: ackno,affirm1
|
Action: ackno,affirm1
|
||||||
Unload: ackno,affirm1
|
|
||||||
|
|
||||||
EngineerVoice:
|
EngineerVoice:
|
||||||
Voices:
|
Voices:
|
||||||
Select: eengin1,eyessir1
|
Select: eengin1,eyessir1
|
||||||
Move: eaffirm1,emovout1
|
Action: eaffirm1,emovout1
|
||||||
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
||||||
Burned: dedman10
|
Burned: dedman10
|
||||||
Zapped: dedman6
|
Zapped: dedman6
|
||||||
@@ -40,7 +39,7 @@ EngineerVoice:
|
|||||||
MedicVoice:
|
MedicVoice:
|
||||||
Voices:
|
Voices:
|
||||||
Select: mrespon1,myessir1
|
Select: mrespon1,myessir1
|
||||||
Move: maffirm1,mmovout1
|
Action: maffirm1,mmovout1
|
||||||
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
||||||
Burned: dedman10
|
Burned: dedman10
|
||||||
Zapped: dedman6
|
Zapped: dedman6
|
||||||
@@ -49,7 +48,7 @@ MechanicVoice:
|
|||||||
Voices:
|
Voices:
|
||||||
Select: mhuh1,mhowdy1,myes1,mrise1
|
Select: mhuh1,mhowdy1,myes1,mrise1
|
||||||
Move: mboss1,mhear1
|
Move: mboss1,mhear1
|
||||||
Attack: mhotdig1,mwrench1
|
Action: mhotdig1,mwrench1
|
||||||
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
||||||
Burned: dedman10
|
Burned: dedman10
|
||||||
Zapped: dedman6
|
Zapped: dedman6
|
||||||
@@ -58,7 +57,7 @@ TanyaVoice:
|
|||||||
Voices:
|
Voices:
|
||||||
Select: yo1,yes1,yeah1
|
Select: yo1,yes1,yeah1
|
||||||
Move: onit1,cmon1,rokroll1
|
Move: onit1,cmon1,rokroll1
|
||||||
Attack: tuffguy1,bombit1
|
Action: tuffguy1,bombit1
|
||||||
Die: tandeth1
|
Die: tandeth1
|
||||||
Burned: tandeth1
|
Burned: tandeth1
|
||||||
Zapped: tandeth1
|
Zapped: tandeth1
|
||||||
@@ -79,7 +78,7 @@ SpyVoice:
|
|||||||
Voices:
|
Voices:
|
||||||
Select: syessir1,scomnd1
|
Select: syessir1,scomnd1
|
||||||
Move: sonway1,sindeed1
|
Move: sonway1,sindeed1
|
||||||
Attack: sking1
|
Action: sking1
|
||||||
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
||||||
Burned: dedman10
|
Burned: dedman10
|
||||||
Zapped: dedman6
|
Zapped: dedman6
|
||||||
@@ -87,7 +86,7 @@ SpyVoice:
|
|||||||
ThiefVoice:
|
ThiefVoice:
|
||||||
Voices:
|
Voices:
|
||||||
Select: swhat1,syeah1
|
Select: swhat1,syeah1
|
||||||
Move: saffirm1,smout1,sokay1
|
Action: saffirm1,smout1,sokay1
|
||||||
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
||||||
Burned: dedman10
|
Burned: dedman10
|
||||||
Zapped: dedman6
|
Zapped: dedman6
|
||||||
@@ -95,7 +94,7 @@ ThiefVoice:
|
|||||||
CivilianMaleVoice:
|
CivilianMaleVoice:
|
||||||
Voices:
|
Voices:
|
||||||
Select: guyyeah1
|
Select: guyyeah1
|
||||||
Move: guyokay1
|
Action: guyokay1
|
||||||
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
||||||
Burned: dedman10
|
Burned: dedman10
|
||||||
Zapped: dedman6
|
Zapped: dedman6
|
||||||
@@ -103,7 +102,7 @@ CivilianMaleVoice:
|
|||||||
CivilianFemaleVoice:
|
CivilianFemaleVoice:
|
||||||
Voices:
|
Voices:
|
||||||
Select: girlyeah
|
Select: girlyeah
|
||||||
Move: girlokay
|
Action: girlokay
|
||||||
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
||||||
Burned: dedman10
|
Burned: dedman10
|
||||||
Zapped: dedman6
|
Zapped: dedman6
|
||||||
@@ -111,7 +110,7 @@ CivilianFemaleVoice:
|
|||||||
EinsteinVoice:
|
EinsteinVoice:
|
||||||
Voices:
|
Voices:
|
||||||
Select: einah1
|
Select: einah1
|
||||||
Move: einok1,einyes1
|
Action: einok1,einyes1
|
||||||
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
Die: dedman1,dedman2,dedman3,dedman4,dedman5,dedman7,dedman8
|
||||||
Burned: dedman10
|
Burned: dedman10
|
||||||
Zapped: dedman6
|
Zapped: dedman6
|
||||||
@@ -128,8 +127,7 @@ ShokVoice:
|
|||||||
AntVoice:
|
AntVoice:
|
||||||
Voices:
|
Voices:
|
||||||
Select: antbite
|
Select: antbite
|
||||||
Move: antbite
|
Action: antbite
|
||||||
Attack: antbite
|
|
||||||
Die: antdie
|
Die: antdie
|
||||||
Burned: antdie
|
Burned: antdie
|
||||||
Zapped: antdie
|
Zapped: antdie
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ BADR:
|
|||||||
Cargo:
|
Cargo:
|
||||||
MaxWeight: 10
|
MaxWeight: 10
|
||||||
-Selectable:
|
-Selectable:
|
||||||
|
-Voiced:
|
||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Badger
|
Name: Badger
|
||||||
@@ -53,6 +54,7 @@ BADR.Bomber:
|
|||||||
Ammo: 7
|
Ammo: 7
|
||||||
WithFacingSpriteBody:
|
WithFacingSpriteBody:
|
||||||
-Selectable:
|
-Selectable:
|
||||||
|
-Voiced:
|
||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
Tooltip:
|
Tooltip:
|
||||||
Name: Badger
|
Name: Badger
|
||||||
@@ -348,6 +350,7 @@ U2:
|
|||||||
WithFacingSpriteBody:
|
WithFacingSpriteBody:
|
||||||
AttackBomber:
|
AttackBomber:
|
||||||
-Selectable:
|
-Selectable:
|
||||||
|
-Voiced:
|
||||||
-TargetableAircraft:
|
-TargetableAircraft:
|
||||||
-GainsExperience:
|
-GainsExperience:
|
||||||
Contrail@1:
|
Contrail@1:
|
||||||
|
|||||||
@@ -19,11 +19,19 @@ DOG:
|
|||||||
HP: 12
|
HP: 12
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 99
|
Speed: 99
|
||||||
|
Voice: Move
|
||||||
|
Guard:
|
||||||
|
Voice: Move
|
||||||
|
Passenger:
|
||||||
|
Voice: Move
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: DogJaw
|
Weapon: DogJaw
|
||||||
AttackLeap:
|
AttackLeap:
|
||||||
|
Voice: Attack
|
||||||
|
AttackMove:
|
||||||
|
Voice: Move
|
||||||
TargetableUnit:
|
TargetableUnit:
|
||||||
TargetTypes: Ground, Infantry
|
TargetTypes: Ground, Infantry
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
@@ -203,12 +211,16 @@ SPY:
|
|||||||
HP: 25
|
HP: 25
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 56
|
Speed: 56
|
||||||
|
Voice: Move
|
||||||
|
-Guard:
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
Passenger:
|
Passenger:
|
||||||
PipType: Yellow
|
PipType: Yellow
|
||||||
|
Voice: Move
|
||||||
TakeCover:
|
TakeCover:
|
||||||
Disguise:
|
Disguise:
|
||||||
|
Voice: Move
|
||||||
Infiltrates:
|
Infiltrates:
|
||||||
Types: SpyInfiltrate
|
Types: SpyInfiltrate
|
||||||
-AutoTarget:
|
-AutoTarget:
|
||||||
@@ -219,6 +231,8 @@ SPY:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: SilencedPPK
|
Weapon: SilencedPPK
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
AttackMove:
|
||||||
|
Voice: Move
|
||||||
Voiced:
|
Voiced:
|
||||||
VoiceSet: SpyVoice
|
VoiceSet: SpyVoice
|
||||||
|
|
||||||
@@ -252,6 +266,9 @@ E7:
|
|||||||
HP: 100
|
HP: 100
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 71
|
Speed: 71
|
||||||
|
Voice: Move
|
||||||
|
Guard:
|
||||||
|
Voice: Move
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
C4Demolition:
|
C4Demolition:
|
||||||
@@ -259,6 +276,7 @@ E7:
|
|||||||
Voice: Demolish
|
Voice: Demolish
|
||||||
Passenger:
|
Passenger:
|
||||||
PipType: Red
|
PipType: Red
|
||||||
|
Voice: Move
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: Colt45
|
Weapon: Colt45
|
||||||
Armament@SECONDARY:
|
Armament@SECONDARY:
|
||||||
@@ -326,16 +344,19 @@ MECH:
|
|||||||
HP: 80
|
HP: 80
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 56
|
Speed: 56
|
||||||
|
Voice: Move
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 3c0
|
Range: 3c0
|
||||||
Passenger:
|
Passenger:
|
||||||
PipType: Yellow
|
PipType: Yellow
|
||||||
|
Voice: Move
|
||||||
AutoHeal:
|
AutoHeal:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Repair
|
Weapon: Repair
|
||||||
AttackMedic:
|
AttackMedic:
|
||||||
Cursor: repair
|
Cursor: repair
|
||||||
OutsideRangeCursor: repair
|
OutsideRangeCursor: repair
|
||||||
|
Voice: Move
|
||||||
Captures:
|
Captures:
|
||||||
CaptureTypes: husk
|
CaptureTypes: husk
|
||||||
TakeCover:
|
TakeCover:
|
||||||
@@ -401,6 +422,16 @@ GNRL:
|
|||||||
Name: General
|
Name: General
|
||||||
Selectable:
|
Selectable:
|
||||||
Class: GNRL
|
Class: GNRL
|
||||||
|
Mobile:
|
||||||
|
Voice: Move
|
||||||
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
|
AttackMove:
|
||||||
|
Voice: Move
|
||||||
|
Passenger:
|
||||||
|
Voice: Move
|
||||||
|
Guard:
|
||||||
|
Voice: Move
|
||||||
Voiced:
|
Voiced:
|
||||||
VoiceSet: StavrosVoice
|
VoiceSet: StavrosVoice
|
||||||
|
|
||||||
@@ -469,6 +500,7 @@ SHOK:
|
|||||||
HP: 100
|
HP: 100
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 56
|
Speed: 56
|
||||||
|
Voice: Move
|
||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 5c0
|
Range: 5c0
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
@@ -478,6 +510,13 @@ SHOK:
|
|||||||
Name: garrisoned
|
Name: garrisoned
|
||||||
Weapon: PortaTesla
|
Weapon: PortaTesla
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
|
AttackMove:
|
||||||
|
Voice: Move
|
||||||
|
Passenger:
|
||||||
|
Voice: Move
|
||||||
|
Guard:
|
||||||
|
Voice: Move
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ Medic:
|
|||||||
Voices:
|
Voices:
|
||||||
Select: 20-I000, 20-I004, 20-I006
|
Select: 20-I000, 20-I004, 20-I006
|
||||||
Move: 20-I008, 20-I010, 20-I012
|
Move: 20-I008, 20-I010, 20-I012
|
||||||
Attack: 20-I016, 20-I018, 20-I020
|
Action: 20-I016, 20-I018, 20-I020
|
||||||
Die: DEDMAN1, DEDMAN3, DEDMAN4, DEDMAN5, DEDMAN6
|
Die: DEDMAN1, DEDMAN3, DEDMAN4, DEDMAN5, DEDMAN6
|
||||||
Burned: DEDMAN2
|
Burned: DEDMAN2
|
||||||
Zapped: ELECTRO1
|
Zapped: ELECTRO1
|
||||||
@@ -49,7 +49,7 @@ Engineer:
|
|||||||
Voices:
|
Voices:
|
||||||
Select: 19-I000, 19-I002, 19-I006
|
Select: 19-I000, 19-I002, 19-I006
|
||||||
Move: 19-I010, 19-I016
|
Move: 19-I010, 19-I016
|
||||||
Attack: 19-I018, 19-I016
|
Action: 19-I018, 19-I016
|
||||||
Die: DEDMAN1, DEDMAN3, DEDMAN4, DEDMAN5, DEDMAN6
|
Die: DEDMAN1, DEDMAN3, DEDMAN4, DEDMAN5, DEDMAN6
|
||||||
Burned: DEDMAN2
|
Burned: DEDMAN2
|
||||||
Zapped: ELECTRO1
|
Zapped: ELECTRO1
|
||||||
@@ -78,7 +78,7 @@ Spy:
|
|||||||
Voices:
|
Voices:
|
||||||
Select: 21-I000, 21-I002, 21-I004
|
Select: 21-I000, 21-I002, 21-I004
|
||||||
Move: 21-I010, 21-I012, 21-I016
|
Move: 21-I010, 21-I012, 21-I016
|
||||||
Attack: 21-I010, 21-I012, 21-I022
|
Action: 21-I010, 21-I012, 21-I022
|
||||||
# Feedback: 21-I000, 21-I002 # TODO
|
# Feedback: 21-I000, 21-I002 # TODO
|
||||||
Die: DEDMAN1, DEDMAN3, DEDMAN4, DEDMAN5, DEDMAN6
|
Die: DEDMAN1, DEDMAN3, DEDMAN4, DEDMAN5, DEDMAN6
|
||||||
Burned: DEDMAN2
|
Burned: DEDMAN2
|
||||||
@@ -88,7 +88,7 @@ Hijacker:
|
|||||||
Voices:
|
Voices:
|
||||||
Select: 24-I000, 24-I002, 24-I004, 24-I006
|
Select: 24-I000, 24-I002, 24-I004, 24-I006
|
||||||
Move: 24-I008, 24-I010, 24-I012, 24-I014
|
Move: 24-I008, 24-I010, 24-I012, 24-I014
|
||||||
Attack: 24-I016, 24-I018, 24-I020, 24-I022, 24-I024
|
Action: 24-I016, 24-I018, 24-I020, 24-I022, 24-I024
|
||||||
Die: DEDMAN1, DEDMAN3, DEDMAN4, DEDMAN5, DEDMAN6
|
Die: DEDMAN1, DEDMAN3, DEDMAN4, DEDMAN5, DEDMAN6
|
||||||
Burned: DEDMAN2
|
Burned: DEDMAN2
|
||||||
Zapped: ELECTRO1
|
Zapped: ELECTRO1
|
||||||
@@ -149,9 +149,9 @@ Slavick:
|
|||||||
|
|
||||||
Fiend:
|
Fiend:
|
||||||
Voices:
|
Voices:
|
||||||
Select:
|
Select: FIEND1
|
||||||
Move:
|
Attack: FIEND1
|
||||||
Attack:
|
Move: FIEND1
|
||||||
Die: FIEND1
|
Die: FIEND1
|
||||||
Burned: FIEND1
|
Burned: FIEND1
|
||||||
Zapped: FIEND1
|
Zapped: FIEND1
|
||||||
|
|||||||
@@ -20,9 +20,11 @@ DPOD:
|
|||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 1
|
MaxWeight: 1
|
||||||
PipCount: 1
|
PipCount: 1
|
||||||
|
UnloadVoice: Move
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Vulcan2
|
Weapon: Vulcan2
|
||||||
AttackHeli:
|
AttackHeli:
|
||||||
|
Voice: Attack
|
||||||
AmmoPool:
|
AmmoPool:
|
||||||
Ammo: 5
|
Ammo: 5
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
@@ -54,6 +56,7 @@ DSHP:
|
|||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 5
|
MaxWeight: 5
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
|
UnloadVoice: Move
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
WithVoxelBody:
|
WithVoxelBody:
|
||||||
Hovers:
|
Hovers:
|
||||||
@@ -85,6 +88,7 @@ ORCA:
|
|||||||
Weapon: Hellfire
|
Weapon: Hellfire
|
||||||
AttackHeli:
|
AttackHeli:
|
||||||
FacingTolerance: 20
|
FacingTolerance: 20
|
||||||
|
Voice: Attack
|
||||||
AmmoPool:
|
AmmoPool:
|
||||||
Ammo: 5
|
Ammo: 5
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
@@ -125,6 +129,7 @@ ORCAB:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: Bomb
|
Weapon: Bomb
|
||||||
AttackPlane:
|
AttackPlane:
|
||||||
|
Voice: Attack
|
||||||
FacingTolerance: 20
|
FacingTolerance: 20
|
||||||
AmmoPool:
|
AmmoPool:
|
||||||
Ammo: 10
|
Ammo: 10
|
||||||
@@ -163,6 +168,7 @@ ORCATRAN:
|
|||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 5
|
MaxWeight: 5
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
|
UnloadVoice: Move
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
WithVoxelBody:
|
WithVoxelBody:
|
||||||
Hovers:
|
Hovers:
|
||||||
@@ -223,6 +229,7 @@ SCRIN:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: Proton
|
Weapon: Proton
|
||||||
AttackPlane:
|
AttackPlane:
|
||||||
|
Voice: Attack
|
||||||
FacingTolerance: 20
|
FacingTolerance: 20
|
||||||
AmmoPool:
|
AmmoPool:
|
||||||
Ammo: 15
|
Ammo: 15
|
||||||
@@ -264,6 +271,7 @@ APACHE:
|
|||||||
Weapon: HarpyClaw
|
Weapon: HarpyClaw
|
||||||
AttackHeli:
|
AttackHeli:
|
||||||
FacingTolerance: 20
|
FacingTolerance: 20
|
||||||
|
Voice: Attack
|
||||||
AmmoPool:
|
AmmoPool:
|
||||||
Ammo: 12
|
Ammo: 12
|
||||||
PipCount: 4
|
PipCount: 4
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ WEEDGUY:
|
|||||||
Weapon: FireballLauncher
|
Weapon: FireballLauncher
|
||||||
LocalOffset: 85,0,384
|
LocalOffset: 85,0,384
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
|
|
||||||
@@ -39,6 +40,7 @@ UMAGON:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: Sniper
|
Weapon: Sniper
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
@@ -86,6 +88,7 @@ MUTANT:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: Vulcan
|
Weapon: Vulcan
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
@@ -109,6 +112,7 @@ MWMN:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: Vulcan
|
Weapon: Vulcan
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
@@ -132,6 +136,7 @@ MUTANT3:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: Vulcan
|
Weapon: Vulcan
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
@@ -218,6 +223,7 @@ DOGGIE:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: FiendShard
|
Weapon: FiendShard
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
AttackWander:
|
AttackWander:
|
||||||
WanderMoveRadius: 2
|
WanderMoveRadius: 2
|
||||||
MinMoveDelayInTicks: 25
|
MinMoveDelayInTicks: 25
|
||||||
@@ -246,6 +252,7 @@ VISLRG:
|
|||||||
Weapon: SlimeAttack
|
Weapon: SlimeAttack
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
AttackWander:
|
AttackWander:
|
||||||
WanderMoveRadius: 2
|
WanderMoveRadius: 2
|
||||||
MinMoveDelayInTicks: 25
|
MinMoveDelayInTicks: 25
|
||||||
@@ -260,6 +267,7 @@ CIV1:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: Pistola
|
Weapon: Pistola
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
|
|
||||||
CIV2:
|
CIV2:
|
||||||
Inherits: ^CivilianInfantry
|
Inherits: ^CivilianInfantry
|
||||||
@@ -270,4 +278,5 @@ CIV3:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: Pistola
|
Weapon: Pistola
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
Weapon: MammothTusk
|
Weapon: MammothTusk
|
||||||
LocalOffset: 0,256,426, 0,-256,426
|
LocalOffset: 0,256,426, 0,-256,426
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
|
Voice: Attack
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
SelfHealing:
|
SelfHealing:
|
||||||
Ticks: 10
|
Ticks: 10
|
||||||
@@ -76,6 +77,7 @@ ICBM:
|
|||||||
Facing: 96
|
Facing: 96
|
||||||
TransformSounds:
|
TransformSounds:
|
||||||
NoTransformSounds:
|
NoTransformSounds:
|
||||||
|
Voice: Move
|
||||||
|
|
||||||
BUS:
|
BUS:
|
||||||
Inherits: ^Vehicle
|
Inherits: ^Vehicle
|
||||||
@@ -96,6 +98,7 @@ BUS:
|
|||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 20
|
MaxWeight: 20
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
|
UnloadVoice: Unload
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
WithVoxelBody:
|
WithVoxelBody:
|
||||||
|
|
||||||
@@ -118,6 +121,7 @@ PICK:
|
|||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 2
|
MaxWeight: 2
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
|
UnloadVoice: Unload
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
WithVoxelBody:
|
WithVoxelBody:
|
||||||
|
|
||||||
@@ -140,6 +144,7 @@ CAR:
|
|||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 4
|
MaxWeight: 4
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
|
UnloadVoice: Unload
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
WithVoxelBody:
|
WithVoxelBody:
|
||||||
|
|
||||||
@@ -162,5 +167,6 @@ WINI:
|
|||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 5
|
MaxWeight: 5
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
|
UnloadVoice: Unload
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
WithVoxelBody:
|
WithVoxelBody:
|
||||||
@@ -213,6 +213,7 @@
|
|||||||
Rough: 70
|
Rough: 70
|
||||||
Tiberium: 80
|
Tiberium: 80
|
||||||
BlueTiberium: 80
|
BlueTiberium: 80
|
||||||
|
Voice: Move
|
||||||
SelectionDecorations:
|
SelectionDecorations:
|
||||||
Palette: pips
|
Palette: pips
|
||||||
Selectable:
|
Selectable:
|
||||||
@@ -241,8 +242,10 @@
|
|||||||
EnergyDeath: 6
|
EnergyDeath: 6
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
AttackMove:
|
AttackMove:
|
||||||
|
Voice: Move
|
||||||
Passenger:
|
Passenger:
|
||||||
CargoType: Infantry
|
CargoType: Infantry
|
||||||
|
Voice: Move
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
GivesExperience:
|
GivesExperience:
|
||||||
DrawLineToTarget:
|
DrawLineToTarget:
|
||||||
@@ -259,6 +262,7 @@
|
|||||||
UpdatesPlayerStatistics:
|
UpdatesPlayerStatistics:
|
||||||
CombatDebugOverlay:
|
CombatDebugOverlay:
|
||||||
Guard:
|
Guard:
|
||||||
|
Voice: Move
|
||||||
Guardable:
|
Guardable:
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
Huntable:
|
Huntable:
|
||||||
@@ -314,6 +318,7 @@
|
|||||||
Tiberium: 80
|
Tiberium: 80
|
||||||
BlueTiberium: 80
|
BlueTiberium: 80
|
||||||
ROT: 5
|
ROT: 5
|
||||||
|
Voice: Move
|
||||||
Selectable:
|
Selectable:
|
||||||
SelectionDecorations:
|
SelectionDecorations:
|
||||||
Palette: pips
|
Palette: pips
|
||||||
@@ -323,9 +328,12 @@
|
|||||||
TargetTypes: Ground, Vehicle
|
TargetTypes: Ground, Vehicle
|
||||||
Repairable:
|
Repairable:
|
||||||
RepairBuildings: gadept
|
RepairBuildings: gadept
|
||||||
|
Voice: Move
|
||||||
Passenger:
|
Passenger:
|
||||||
CargoType: Vehicle
|
CargoType: Vehicle
|
||||||
|
Voice: Move
|
||||||
AttackMove:
|
AttackMove:
|
||||||
|
Voice: Move
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
GivesExperience:
|
GivesExperience:
|
||||||
DrawLineToTarget:
|
DrawLineToTarget:
|
||||||
@@ -340,6 +348,7 @@
|
|||||||
UpdatesPlayerStatistics:
|
UpdatesPlayerStatistics:
|
||||||
CombatDebugOverlay:
|
CombatDebugOverlay:
|
||||||
Guard:
|
Guard:
|
||||||
|
Voice: Move
|
||||||
Guardable:
|
Guardable:
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
CameraPitch: 90
|
CameraPitch: 90
|
||||||
@@ -383,6 +392,7 @@
|
|||||||
Tiberium: 80
|
Tiberium: 80
|
||||||
BlueTiberium: 80
|
BlueTiberium: 80
|
||||||
ROT: 5
|
ROT: 5
|
||||||
|
Voice: Move
|
||||||
Selectable:
|
Selectable:
|
||||||
SelectionDecorations:
|
SelectionDecorations:
|
||||||
Palette: pips
|
Palette: pips
|
||||||
@@ -392,9 +402,12 @@
|
|||||||
TargetTypes: Ground, Vehicle
|
TargetTypes: Ground, Vehicle
|
||||||
Repairable:
|
Repairable:
|
||||||
RepairBuildings: gadept
|
RepairBuildings: gadept
|
||||||
|
Voice: Move
|
||||||
Passenger:
|
Passenger:
|
||||||
CargoType: Vehicle
|
CargoType: Vehicle
|
||||||
|
Voice: Move
|
||||||
AttackMove:
|
AttackMove:
|
||||||
|
Voice: Move
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
GivesExperience:
|
GivesExperience:
|
||||||
DrawLineToTarget:
|
DrawLineToTarget:
|
||||||
@@ -409,6 +422,7 @@
|
|||||||
UpdatesPlayerStatistics:
|
UpdatesPlayerStatistics:
|
||||||
CombatDebugOverlay:
|
CombatDebugOverlay:
|
||||||
Guard:
|
Guard:
|
||||||
|
Voice: Move
|
||||||
Guardable:
|
Guardable:
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
CameraPitch: 90
|
CameraPitch: 90
|
||||||
@@ -455,8 +469,10 @@
|
|||||||
RearmBuildings:
|
RearmBuildings:
|
||||||
LandWhenIdle: no
|
LandWhenIdle: no
|
||||||
CruiseAltitude: 2048
|
CruiseAltitude: 2048
|
||||||
|
Voice: Move
|
||||||
HiddenUnderFog:
|
HiddenUnderFog:
|
||||||
AttackMove:
|
AttackMove:
|
||||||
|
Voice: Move
|
||||||
GivesExperience:
|
GivesExperience:
|
||||||
DrawLineToTarget:
|
DrawLineToTarget:
|
||||||
ActorLostNotification:
|
ActorLostNotification:
|
||||||
@@ -466,6 +482,7 @@
|
|||||||
Huntable:
|
Huntable:
|
||||||
ScriptTriggers:
|
ScriptTriggers:
|
||||||
Guard:
|
Guard:
|
||||||
|
Voice: Move
|
||||||
Guardable:
|
Guardable:
|
||||||
UpgradeManager:
|
UpgradeManager:
|
||||||
MustBeDestroyed:
|
MustBeDestroyed:
|
||||||
@@ -478,6 +495,7 @@
|
|||||||
RearmBuildings: gahpad, nahpad
|
RearmBuildings: gahpad, nahpad
|
||||||
LandWhenIdle: no
|
LandWhenIdle: no
|
||||||
CruiseAltitude: 2560
|
CruiseAltitude: 2560
|
||||||
|
Voice: Move
|
||||||
ReturnOnIdle:
|
ReturnOnIdle:
|
||||||
|
|
||||||
^Viceroid:
|
^Viceroid:
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ E2:
|
|||||||
LocalOffset: 0,0,555
|
LocalOffset: 0,0,555
|
||||||
FireDelay: 5
|
FireDelay: 5
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
@@ -43,7 +44,7 @@ MEDIC:
|
|||||||
CrushSound: squishy2.aud
|
CrushSound: squishy2.aud
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: Heal
|
Weapon: Heal
|
||||||
AttackFrontal:
|
AttackMedic:
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
@@ -79,6 +80,7 @@ JUMPJET:
|
|||||||
Weapon: JumpCannon
|
Weapon: JumpCannon
|
||||||
-Crushable:
|
-Crushable:
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
|
|
||||||
@@ -111,8 +113,10 @@ GHOST:
|
|||||||
Crushable:
|
Crushable:
|
||||||
CrushSound: squishy2.aud
|
CrushSound: squishy2.aud
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
C4Demolition:
|
C4Demolition:
|
||||||
C4Delay: 45
|
C4Delay: 45
|
||||||
|
Voice: Attack
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ APC:
|
|||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 5
|
MaxWeight: 5
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
|
UnloadVoice: Unload
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
WithVoxelWaterBody:
|
WithVoxelWaterBody:
|
||||||
@@ -69,6 +70,7 @@ HVR:
|
|||||||
ROT: 7
|
ROT: 7
|
||||||
Offset: -128,0,85
|
Offset: -128,0,85
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
|
Voice: Attack
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
@@ -101,6 +103,7 @@ SMECH:
|
|||||||
RevealsShroud:
|
RevealsShroud:
|
||||||
Range: 6c0
|
Range: 6c0
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
Armament:
|
Armament:
|
||||||
Weapon: AssaultCannon
|
Weapon: AssaultCannon
|
||||||
@@ -144,6 +147,7 @@ MMCH:
|
|||||||
Turreted:
|
Turreted:
|
||||||
ROT: 5
|
ROT: 5
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
|
Voice: Attack
|
||||||
WithTurret:
|
WithTurret:
|
||||||
Recoils: no
|
Recoils: no
|
||||||
Armament:
|
Armament:
|
||||||
@@ -184,6 +188,7 @@ HMEC:
|
|||||||
Range: 8c0
|
Range: 8c0
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
Armament@MISSILES:
|
Armament@MISSILES:
|
||||||
Weapon: MammothTusk
|
Weapon: MammothTusk
|
||||||
@@ -220,6 +225,7 @@ SONIC:
|
|||||||
Weapon: SonicZap
|
Weapon: SonicZap
|
||||||
LocalOffset: -50,0,410
|
LocalOffset: -50,0,410
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
|
Voice: Attack
|
||||||
Turreted:
|
Turreted:
|
||||||
ROT: 5
|
ROT: 5
|
||||||
Offset: -170,0,0
|
Offset: -170,0,0
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ E3:
|
|||||||
Weapon: Bazooka
|
Weapon: Bazooka
|
||||||
LocalOffset: 128,0,640
|
LocalOffset: 128,0,640
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
@@ -53,6 +54,7 @@ CYBORG:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: Vulcan3
|
Weapon: Vulcan3
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
WithPermanentInjury:
|
WithPermanentInjury:
|
||||||
@@ -91,6 +93,7 @@ CYC2:
|
|||||||
Weapon: CyCannon
|
Weapon: CyCannon
|
||||||
LocalOffset: 170,85,683
|
LocalOffset: 170,85,683
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
WithPermanentInjury:
|
WithPermanentInjury:
|
||||||
|
|||||||
@@ -191,6 +191,7 @@ GATICK:
|
|||||||
UpgradeMinEnabledLevel: 1
|
UpgradeMinEnabledLevel: 1
|
||||||
MuzzleSequence: muzzle
|
MuzzleSequence: muzzle
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
|
Voice: Attack
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
QuantizedFacings: 32
|
QuantizedFacings: 32
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
@@ -206,6 +207,7 @@ GATICK:
|
|||||||
Facing: 159
|
Facing: 159
|
||||||
TransformSounds: place2.aud
|
TransformSounds: place2.aud
|
||||||
NoTransformSounds:
|
NoTransformSounds:
|
||||||
|
Voice: Move
|
||||||
WithMuzzleFlash:
|
WithMuzzleFlash:
|
||||||
-WithDeathAnimation:
|
-WithDeathAnimation:
|
||||||
|
|
||||||
@@ -234,6 +236,7 @@ GAARTY:
|
|||||||
LocalOffset: 811,0,0
|
LocalOffset: 811,0,0
|
||||||
MuzzleSequence: muzzle
|
MuzzleSequence: muzzle
|
||||||
AttackTurreted:
|
AttackTurreted:
|
||||||
|
Voice: Attack
|
||||||
BodyOrientation:
|
BodyOrientation:
|
||||||
QuantizedFacings: 32
|
QuantizedFacings: 32
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
@@ -250,6 +253,7 @@ GAARTY:
|
|||||||
Facing: 96
|
Facing: 96
|
||||||
TransformSounds: place2.aud
|
TransformSounds: place2.aud
|
||||||
NoTransformSounds:
|
NoTransformSounds:
|
||||||
|
Voice: Move
|
||||||
WithMuzzleFlash:
|
WithMuzzleFlash:
|
||||||
-WithDeathAnimation:
|
-WithDeathAnimation:
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ BGGY:
|
|||||||
MuzzleSequence: muzzle
|
MuzzleSequence: muzzle
|
||||||
MuzzleSplitFacings: 8
|
MuzzleSplitFacings: 8
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
@@ -62,6 +63,7 @@ BIKE:
|
|||||||
UpgradeMinEnabledLevel: 1
|
UpgradeMinEnabledLevel: 1
|
||||||
LocalOffset: -128,-170,213, -128,170,213
|
LocalOffset: -128,-170,213, -128,170,213
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
@@ -87,6 +89,7 @@ TTNK:
|
|||||||
Armor:
|
Armor:
|
||||||
Type: Light
|
Type: Light
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
Armament@PRIMARY:
|
Armament@PRIMARY:
|
||||||
Weapon: 90mm
|
Weapon: 90mm
|
||||||
LocalOffset: 256,0,256
|
LocalOffset: 256,0,256
|
||||||
@@ -111,6 +114,7 @@ TTNK:
|
|||||||
Facing: 159
|
Facing: 159
|
||||||
TransformSounds: place2.aud
|
TransformSounds: place2.aud
|
||||||
NoTransformSounds:
|
NoTransformSounds:
|
||||||
|
Voice: Move
|
||||||
|
|
||||||
ART2:
|
ART2:
|
||||||
Inherits: ^Tank
|
Inherits: ^Tank
|
||||||
@@ -141,6 +145,7 @@ ART2:
|
|||||||
Facing: 96
|
Facing: 96
|
||||||
TransformSounds:
|
TransformSounds:
|
||||||
NoTransformSounds:
|
NoTransformSounds:
|
||||||
|
Voice: Move
|
||||||
|
|
||||||
REPAIR:
|
REPAIR:
|
||||||
Inherits: ^Tank
|
Inherits: ^Tank
|
||||||
@@ -165,6 +170,7 @@ REPAIR:
|
|||||||
AttackMedic:
|
AttackMedic:
|
||||||
Cursor: repair
|
Cursor: repair
|
||||||
OutsideRangeCursor: repair
|
OutsideRangeCursor: repair
|
||||||
|
Voice: Attack
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
WithVoxelBody:
|
WithVoxelBody:
|
||||||
@@ -218,6 +224,7 @@ SAPC:
|
|||||||
Types: Infantry
|
Types: Infantry
|
||||||
MaxWeight: 5
|
MaxWeight: 5
|
||||||
PipCount: 5
|
PipCount: 5
|
||||||
|
UnloadVoice: Unload
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
WithVoxelBody:
|
WithVoxelBody:
|
||||||
@@ -246,6 +253,7 @@ SUBTANK:
|
|||||||
Armament:
|
Armament:
|
||||||
Weapon: FireballLauncher
|
Weapon: FireballLauncher
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
@@ -281,6 +289,7 @@ STNK:
|
|||||||
Weapon: Dragon
|
Weapon: Dragon
|
||||||
LocalOffset: 213,43,128, 213,-43,128
|
LocalOffset: 213,43,128, 213,-43,128
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
AutoTarget:
|
AutoTarget:
|
||||||
InitialStance: HoldFire
|
InitialStance: HoldFire
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
|
|||||||
@@ -23,6 +23,7 @@ E1:
|
|||||||
UpgradeTypes: eliteweapon
|
UpgradeTypes: eliteweapon
|
||||||
UpgradeMinEnabledLevel: 1
|
UpgradeMinEnabledLevel: 1
|
||||||
AttackFrontal:
|
AttackFrontal:
|
||||||
|
Voice: Attack
|
||||||
TakeCover:
|
TakeCover:
|
||||||
WithInfantryBody:
|
WithInfantryBody:
|
||||||
IdleSequences: idle1,idle2
|
IdleSequences: idle1,idle2
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ MCV:
|
|||||||
Facing: 96
|
Facing: 96
|
||||||
TransformSounds: facbld1.aud
|
TransformSounds: facbld1.aud
|
||||||
NoTransformSounds:
|
NoTransformSounds:
|
||||||
|
Voice: Move
|
||||||
RenderSprites:
|
RenderSprites:
|
||||||
RenderVoxels:
|
RenderVoxels:
|
||||||
WithVoxelBody:
|
WithVoxelBody:
|
||||||
@@ -57,6 +58,8 @@ HARV:
|
|||||||
UnloadTicksPerBale: 1
|
UnloadTicksPerBale: 1
|
||||||
SearchFromProcRadius: 24
|
SearchFromProcRadius: 24
|
||||||
SearchFromOrderRadius: 12
|
SearchFromOrderRadius: 12
|
||||||
|
HarvestVoice: Attack
|
||||||
|
DeliverVoice: Move
|
||||||
Mobile:
|
Mobile:
|
||||||
Speed: 71
|
Speed: 71
|
||||||
Crushes: wall, crate
|
Crushes: wall, crate
|
||||||
@@ -117,6 +120,7 @@ LPST:
|
|||||||
Facing: 159
|
Facing: 159
|
||||||
TransformSounds:
|
TransformSounds:
|
||||||
NoTransformSounds:
|
NoTransformSounds:
|
||||||
|
Voice: Move
|
||||||
|
|
||||||
GGHUNT:
|
GGHUNT:
|
||||||
Inherits: ^Vehicle
|
Inherits: ^Vehicle
|
||||||
@@ -135,6 +139,7 @@ GGHUNT:
|
|||||||
Range: 7c0
|
Range: 7c0
|
||||||
WithFacingSpriteBody:
|
WithFacingSpriteBody:
|
||||||
DemoTruck:
|
DemoTruck:
|
||||||
|
Voice: Attack
|
||||||
Explodes:
|
Explodes:
|
||||||
Weapon: SuicideBomb
|
Weapon: SuicideBomb
|
||||||
EmptyWeapon: SuicideBomb
|
EmptyWeapon: SuicideBomb
|
||||||
|
|||||||
Reference in New Issue
Block a user