Merge pull request #2741 from Mailaender/classic-mods

Classic mods
This commit is contained in:
Chris Forbes
2013-03-09 21:06:41 -08:00
268 changed files with 16294 additions and 142 deletions

View File

@@ -17,23 +17,29 @@ Also thanks to:
* Christer Ulfsparre (Holloweye)
* Cody Brittain (Generalcamo)
* Daniel Derejvanik (Harisson)
* Danny (Dan9550)
* Erasmus Schroder (rasco)
* Igor Popov (ihptru)
* Iran
* James Dunne (jsd)
* Jeff Harris (jeff_1amstudios)
* Jes (-Jes-)
* Joakim Lindberg (booom3)
* JOo
* Kenny Hoxworth (hoxworth)
* Krishnakanth Mallik
* Kyrre Soerensen (zypres)
* Lawrence Wang
* Mark Olson (markolson)
* Matthew Gatland (mgatland)
* Matthias Mailänder (Mailaender)
* Maarten Meuris (Nyerguds)
* Max Ugrumov (katzsmile)
* Max621
* Nukem
* Paolo Chiodi (paolochiodi)
* Paul Dovydaitis (pdovy)
* Psydev
* Raymond Martineau (mart0258)
* Riderr3
* Tim Mylemans (gecko)

View File

@@ -129,8 +129,9 @@ namespace OpenRA.Graphics
}
var clipRect = Game.viewport.WorldBounds(wr.world);
DrawShroud(wr, clipRect, fogSprites, fogPalette);
DrawShroud(wr, clipRect, sprites, shroudPalette);
if (wr.world.WorldActor.HasTrait<Fog>())
DrawShroud(wr, clipRect, fogSprites, fogPalette);
}
void DrawShroud(WorldRenderer wr, Rectangle clip, Sprite[,] s, PaletteReference pal)

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -178,6 +178,7 @@
<Compile Include="Traits\ValidateOrder.cs" />
<Compile Include="Traits\Waypoint.cs" />
<Compile Include="Traits\World\Country.cs" />
<Compile Include="Traits\World\Fog.cs" />
<Compile Include="Traits\World\PlayerColorPalette.cs" />
<Compile Include="Traits\World\ResourceLayer.cs" />
<Compile Include="Traits\World\ResourceType.cs" />
@@ -194,7 +195,7 @@
<Compile Include="Widgets\DropDownButtonWidget.cs" />
<Compile Include="Widgets\GridLayout.cs" />
<Compile Include="Widgets\ImageWidget.cs" />
<Compile Include="Widgets\LabelWidget.cs" />
<Compile Include="Widgets\LabelWidget.cs" />
<Compile Include="Widgets\LineGraphWidget.cs" />
<Compile Include="Widgets\ListLayout.cs" />
<Compile Include="Widgets\MapPreviewWidget.cs" />

View File

@@ -66,7 +66,7 @@ namespace OpenRA.Traits
public interface INotifyOwnerChanged { void OnOwnerChanged(Actor self, Player oldOwner, Player newOwner); }
public interface INotifyCapture { void OnCapture(Actor self, Actor captor, Player oldOwner, Player newOwner); }
public interface INotifyOtherCaptured { void OnActorCaptured(Actor self, Actor captured, Actor captor, Player oldOwner, Player newOwner); }
public interface IAcceptSpy { void OnInfiltrate(Actor self, Actor spy); }
public interface IAcceptInfiltrator { void OnInfiltrate(Actor self, Actor infiltrator); }
public interface IStoreOre { int Capacity { get; } }
public interface IToolTip
{

View File

@@ -0,0 +1,22 @@
#region Copyright & License Information
/*
* Copyright 2007-2013 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
namespace OpenRA.Traits
{
public class FogInfo : TraitInfo<Fog>
{
/*
* This tag trait will enable fog of war in ShroudRenderer.
* Don't forget about HiddenUnderFog and FrozenUnderFog.
*/
}
public class Fog { }
}

View File

@@ -17,10 +17,11 @@ using OpenRA.Mods.RA.Activities;
using OpenRA.Mods.RA.Move;
using OpenRA.Traits;
using OpenRA.Widgets;
using OpenRA.Scripting;
namespace OpenRA.Mods.Cnc
namespace OpenRA.Mods.Cnc.Missions
{
class Gdi01ScriptInfo : TraitInfo<Gdi01Script>, Requires<LoadWidgetAtGameStartInfo> { }
class Gdi01ScriptInfo : TraitInfo<Gdi01Script> { }
class Gdi01Script: IWorldLoaded, ITick
{
@@ -34,44 +35,37 @@ namespace OpenRA.Mods.Cnc
var b = w.Map.Bounds;
Game.MoveViewport(new CPos(b.Left + b.Width/2, b.Top + b.Height/2).ToFloat2());
Scripting.Media.PlayFMVFullscreen(w, "gdi1.vqa",
() => Scripting.Media.PlayFMVFullscreen(w, "landing.vqa", () =>
{
Sound.PlayMusic(Rules.Music["aoi"]);
started = true;
}));
Action afterFMV = () =>
{
Sound.PlayMusic(Rules.Music["aoi"]);
started = true;
};
Game.RunAfterDelay(0, () => Media.PlayFMVFullscreen(w, "gdi1.vqa", () =>
Media.PlayFMVFullscreen(w, "landing.vqa", afterFMV)));
}
public void OnVictory(World w)
{
started = false;
Sound.PlayToPlayer(Players["GoodGuy"], "accom1.aud");
Players["GoodGuy"].WinState = WinState.Won;
Action afterFMV = () =>
{
Players["GoodGuy"].WinState = WinState.Won;
started = false;
Sound.StopMusic();
Game.Disconnect();
Ui.ResetAll();
Game.LoadShellMap();
Sound.PlayToPlayer(Players["GoodGuy"], "accom1.aud");
};
Game.RunAfterDelay(5000, () => Scripting.Media.PlayFMVFullscreen(w, "consyard.vqa", afterFMV));
Game.RunAfterDelay(0, () => Media.PlayFMVFullscreen(w, "consyard.vqa", afterFMV));
}
public void OnLose(World w)
{
started = false;
Sound.PlayToPlayer(Players["GoodGuy"], "fail1.aud");
Players["GoodGuy"].WinState = WinState.Lost;
Action afterFMV = () =>
{
Players["GoodGuy"].WinState = WinState.Lost;
started = false;
Sound.StopMusic();
Game.Disconnect();
Ui.ResetAll();
Game.LoadShellMap();
Sound.PlayToPlayer(Players["GoodGuy"], "fail1.aud");
};
Game.RunAfterDelay(5000, () => Scripting.Media.PlayFMVFullscreen(w, "gameover.vqa", afterFMV));
Game.RunAfterDelay(0, () => Media.PlayFMVFullscreen(w, "gameover.vqa", afterFMV));
}
int ticks = 0;
@@ -93,14 +87,14 @@ namespace OpenRA.Mods.Cnc
{
var a = self.World.CreateActor(i.ToLowerInvariant(), new TypeDictionary
{
new OwnerInit( Players["BadGuy"] ),
new FacingInit( 0 ),
new LocationInit ( Actors["nod0"].Location ),
new OwnerInit(Players["BadGuy"]),
new FacingInit(0),
new LocationInit(Actors["nod0"].Location),
});
var mobile = a.Trait<Mobile>();
a.QueueActivity( mobile.MoveTo( Actors["nod1"].Location, 2 ) );
a.QueueActivity( mobile.MoveTo( Actors["nod2"].Location, 2 ) );
a.QueueActivity( mobile.MoveTo( Actors["nod3"].Location, 2 ) );
a.QueueActivity(mobile.MoveTo(Actors["nod1"].Location, 2 ));
a.QueueActivity(mobile.MoveTo(Actors["nod2"].Location, 2 ));
a.QueueActivity(mobile.MoveTo(Actors["nod3"].Location, 2 ));
// Todo: Queue hunt order
}
});
@@ -172,8 +166,9 @@ namespace OpenRA.Mods.Cnc
{
var self = Actors[ "Gunboat" ];
var mobile = self.Trait<Mobile>();
self.QueueActivity(mobile.ScriptedMove( Actors["gunboatLeft"].Location ));
self.QueueActivity(mobile.ScriptedMove( Actors["gunboatRight"].Location ));
self.Trait<AutoTarget>().stance = UnitStance.AttackAnything; //TODO: this is ignored
self.QueueActivity(mobile.ScriptedMove(Actors["gunboatLeft"].Location));
self.QueueActivity(mobile.ScriptedMove(Actors["gunboatRight"].Location));
self.QueueActivity(new CallFunc(() => SetGunboatPath()));
}

View File

@@ -0,0 +1,216 @@
#region Copyright & License Information
/*
* Copyright 2007-2012 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.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.FileFormats;
using OpenRA.Mods.Cnc;
using OpenRA.Mods.RA;
using OpenRA.Mods.RA.Move;
using OpenRA.Mods.RA.Activities;
using OpenRA.Network;
using OpenRA.Scripting;
using OpenRA.Traits;
namespace OpenRA.Mods.Cnc.Missions
{
class Nod01ScriptInfo : TraitInfo<Nod01Script>, Requires<SpawnMapActorsInfo> { }
class Nod01Script : IWorldLoaded, ITick
{
static readonly string[] Objectives =
{
"Assasinate Nikoomba.",
"Level the village."
};
int currentObjective;
Player gdi;
Player nod;
//actors and the likes go here
Actor nikoomba;
Actor vil01;
Actor vil02;
Actor vil03;
Actor vil04;
Actor vil05;
Actor vil06;
Actor vil07;
Actor vil08;
Actor vil09;
Actor vil10;
Actor vil11;
Actor vil12;
Actor vil13;
Actor civ01;
Actor civ02;
Actor civ03;
Actor civ04;
Actor civ05;
Actor civ06;
Actor civ07;
//waypoints
Actor nr1;
Actor nr2;
Actor gr1;
World world;
//in the allies01 script stuff was here not needed for me so far
const string NRName = "E1";
const string GRName = "E2";
const string GRName2 = "JEEP";
void DisplayObjective()
{
Game.AddChatLine(Color.LimeGreen, "Objective", Objectives[currentObjective]);
}
void MissionFailed(string text)
{
if (nod.WinState != WinState.Undefined)
{
return;
}
nod.WinState = WinState.Lost;
foreach (var actor in world.Actors.Where(a => a.IsInWorld && a.Owner == nod && !a.IsDead()))
{
actor.Kill(actor);
}
Game.AddChatLine(Color.Red, "Mission failed", text);
Sound.Play("fail1.aud");
}
void MissionAccomplished(string text)
{
if (nod.WinState != WinState.Undefined)
{
return;
}
nod.WinState = WinState.Won;
Game.AddChatLine(Color.Green, "Mission accomplished", text);
Sound.Play("accom1.aud");
}
public void Tick(Actor self)
{
if (nod.WinState != WinState.Undefined)
{
return;
}
// display current objective every so often
if (world.FrameNumber % 1500 == 1)
{
DisplayObjective();
}
//spawns nod reinf
if (world.FrameNumber == 700)
{
NODReinforceNthA();
Sound.Play("reinfor1.aud");
}
if (world.FrameNumber == 1400)
{
NODReinforceNthB();
Sound.Play("reinfor1.aud");
}
// objectives
if (currentObjective == 0)
{
if (nikoomba.Destroyed)
{
currentObjective++;
DisplayObjective();
GDIReinforceNth();
}
}
else if (currentObjective == 1)
{
if (vil01.Destroyed && vil02.Destroyed && vil03.Destroyed && vil04.Destroyed && vil05.Destroyed && vil06.Destroyed &&
vil07.Destroyed && vil08.Destroyed && vil09.Destroyed && vil10.Destroyed && vil11.Destroyed && vil12.Destroyed &&
vil13.Destroyed && civ01.Destroyed && civ02.Destroyed && civ03.Destroyed && civ04.Destroyed && civ05.Destroyed &&
civ06.Destroyed && civ07.Destroyed)
{
MissionAccomplished("Nikoomba was killed and the Village was Destroyed.");
}
}
}
IEnumerable<Actor> UnitsNearActor(Actor actor, int range)
{
return world.FindUnitsInCircle(actor.CenterLocation, Game.CellSize * range)
.Where(a => a.IsInWorld && a != world.WorldActor && !a.Destroyed && a.HasTrait<IMove>() && !a.Owner.NonCombatant);
}
void NODReinforceNthA()
{
nr1 = world.CreateActor(true, NRName, new TypeDictionary { new OwnerInit(nod), new LocationInit(nr1.Location) });
nr1 = world.CreateActor(true, NRName, new TypeDictionary { new OwnerInit(nod), new LocationInit(nr1.Location) });
//nr1.QueueActivity(new Move.Move(nr1.Location - new CVec(0, 2)));
}
void NODReinforceNthB()
{
nr2 = world.CreateActor(true, NRName, new TypeDictionary { new OwnerInit(nod), new LocationInit(nr2.Location) });
nr2 = world.CreateActor(true, NRName, new TypeDictionary { new OwnerInit(nod), new LocationInit(nr2.Location) });
//nr1.QueueActivity(new Move.Move(nr1.Location - new CVec(0, 2)));
}
void GDIReinforceNth()
{
gr1 = world.CreateActor(true, GRName, new TypeDictionary { new OwnerInit(gdi), new LocationInit(gr1.Location) });
gr1 = world.CreateActor(true, GRName, new TypeDictionary { new OwnerInit(gdi), new LocationInit(gr1.Location) });
gr1 = world.CreateActor(true, GRName2, new TypeDictionary { new OwnerInit(gdi), new LocationInit(gr1.Location) });
//nr1.QueueActivity(new Move.Move(nr1.Location - new CVec(0, 2)));
}
public void WorldLoaded(World w)
{
world = w;
gdi = w.Players.Single(p => p.InternalName == "GDI");
nod = w.Players.Single(p => p.InternalName == "NOD");
var actors = w.WorldActor.Trait<SpawnMapActors>().Actors;
nikoomba = actors["Nikoomba"];
vil01 = actors["Vil01"];
vil02 = actors["Vil02"];
vil03 = actors["Vil03"];
vil04 = actors["Vil04"];
vil05 = actors["Vil05"];
vil06 = actors["Vil06"];
vil07 = actors["Vil07"];
vil08 = actors["Vil08"];
vil09 = actors["Vil09"];
vil10 = actors["Vil10"];
vil11 = actors["Vil11"];
vil12 = actors["Vil12"];
vil13 = actors["Vil13"];
civ01 = actors["Civ01"];
civ02 = actors["Civ02"];
civ03 = actors["Civ03"];
civ04 = actors["Civ04"];
civ05 = actors["Civ05"];
civ06 = actors["Civ06"];
civ07 = actors["Civ07"];
nr1 = actors["NODReinforceNthA"];
nr2 = actors["NODReinforceNthB"];
gr1 = actors["GDIReinforceNth"];
Game.MoveViewport(nr1.Location.ToFloat2());
Action afterFMV = () =>
{
Sound.PlayMusic(Rules.Music["aoi"]);
};
Game.RunAfterDelay(0, () => Media.PlayFMVFullscreen(w, "nod1pre.vqa", () =>
Media.PlayFMVFullscreen(w, "nod1.vqa", afterFMV)));
}
}
}

View File

@@ -81,6 +81,7 @@
<Compile Include="IonCannonPower.cs" />
<Compile Include="Missions\CncShellmapScript.cs" />
<Compile Include="Missions\Gdi01Script.cs" />
<Compile Include="Missions\Nod01Script.cs" />
<Compile Include="PoisonedByTiberium.cs" />
<Compile Include="ProductionAirdrop.cs" />
<Compile Include="ProductionQueueFromSelection.cs" />

View File

@@ -22,9 +22,16 @@ namespace OpenRA.Mods.RA.Activities
public override Activity Tick(Actor self)
{
if (IsCanceled) return NextActivity;
if (target == null || !target.IsInWorld || target.IsDead()) return NextActivity;
if (target.Owner == self.Owner) return NextActivity;
var capturesInfo = self.Info.Traits.Get<CapturesInfo>();
var health = target.Trait<Health>();
int damage = (int)(0.25 * health.MaxHP);
if (IsCanceled)
return NextActivity;
if (target == null || !target.IsInWorld || target.IsDead())
return NextActivity;
if (target.Owner == self.Owner)
return NextActivity;
// Need to be next to building, TODO: stop capture when going away
var mobile = self.Trait<Mobile>();
@@ -32,10 +39,14 @@ namespace OpenRA.Mods.RA.Activities
if ((nearest - mobile.toCell).LengthSquared > 2)
return Util.SequenceActivities(new MoveAdjacentTo(Target.FromActor(target)), this);
if (!target.Trait<Capturable>().BeginCapture(target, self))
return NextActivity;
if (!capturesInfo.Sabotage || (capturesInfo.Sabotage && health.DamageState == DamageState.Heavy))
{
if (!target.Trait<Capturable>().BeginCapture(target, self))
return NextActivity;
}
else
target.InflictDamage(self, damage, null);
var capturesInfo = self.Info.Traits.Get<CapturesInfo>();
if (capturesInfo != null && capturesInfo.WastedAfterwards)
self.World.AddFrameEndTask(w => self.Destroy());

View File

@@ -28,7 +28,7 @@ namespace OpenRA.Mods.RA.Activities
if( !target.OccupiesSpace.OccupiedCells().Any( x => x.First == self.Location ) )
return NextActivity;
foreach (var t in target.TraitsImplementing<IAcceptSpy>())
foreach (var t in target.TraitsImplementing<IAcceptInfiltrator>())
t.OnInfiltrate(target, self);
if (self.HasTrait<DontDestroyWhenInfiltrating>())

View File

@@ -16,8 +16,25 @@ namespace OpenRA.Mods.RA.Buildings
public class CustomBuildTimeValueInfo : TraitInfo<CustomBuildTimeValue>
{
public readonly int Value = 0; //in milisecons
public readonly int Value = 0;
}
public class CustomBuildTimeValue { }
public static class CustomBuildTimeValueExts
{
public static int GetBuildTime(this ActorInfo a)
{
var csv = a.Traits.GetOrDefault<CustomBuildTimeValueInfo>();
if (csv != null)
return csv.Value;
var cost = a.Traits.Contains<ValuedInfo>() ? a.Traits.Get<ValuedInfo>().Cost : 0;
var time = cost
* (25 * 60) /* frames per min */
/ 1000;
return
time;
}
}
}

View File

@@ -23,6 +23,7 @@ namespace OpenRA.Mods.RA
{
public string[] CaptureTypes = {"building"};
public bool WastedAfterwards = true;
public bool Sabotage = false;
public object Create(ActorInitializer init) { return new Captures(init.self, this); }
}

View File

@@ -25,16 +25,16 @@ namespace OpenRA.Mods.RA
public object Create(ActorInitializer init) { return new InfiltrateForCash(this); }
}
class InfiltrateForCash : IAcceptSpy
class InfiltrateForCash : IAcceptInfiltrator
{
InfiltrateForCashInfo info;
public InfiltrateForCash(InfiltrateForCashInfo info) { this.info = info; }
public void OnInfiltrate(Actor self, Actor spy)
public void OnInfiltrate(Actor self, Actor infiltrator)
{
var targetResources = self.Owner.PlayerActor.Trait<PlayerResources>();
var spyResources = spy.Owner.PlayerActor.Trait<PlayerResources>();
var spyResources = infiltrator.Owner.PlayerActor.Trait<PlayerResources>();
var toTake = (targetResources.Cash + targetResources.Ore) * info.Percentage / 100;
var toGive = Math.Max(toTake, info.Minimum);
@@ -45,7 +45,7 @@ namespace OpenRA.Mods.RA
Sound.PlayToPlayer(self.Owner, info.SoundToVictim);
self.World.AddFrameEndTask(w => w.Add(new CashTick(toGive, 30, 2, self.CenterLocation,
spy.Owner.ColorRamp.GetColor(0))));
infiltrator.Owner.ColorRamp.GetColor(0))));
}
}
}

View File

@@ -16,11 +16,11 @@ namespace OpenRA.Mods.RA
{
class InfiltrateForExplorationInfo : TraitInfo<InfiltrateForExploration> {}
class InfiltrateForExploration : IAcceptSpy
class InfiltrateForExploration : IAcceptInfiltrator
{
public void OnInfiltrate(Actor self, Actor spy)
public void OnInfiltrate(Actor self, Actor infiltrator)
{
spy.Owner.Shroud.MergeShroud(self.Owner.Shroud);
infiltrator.Owner.Shroud.MergeShroud(self.Owner.Shroud);
if (!self.Owner.HasFogVisibility())
self.Owner.Shroud.ResetExploration();
}

View File

@@ -20,7 +20,7 @@ namespace OpenRA.Mods.RA
public object Create(ActorInitializer init) { return new InfiltrateForSupportPower(this); }
}
class InfiltrateForSupportPower : IAcceptSpy
class InfiltrateForSupportPower : IAcceptInfiltrator
{
InfiltrateForSupportPowerInfo Info;
@@ -29,11 +29,11 @@ namespace OpenRA.Mods.RA
Info = info;
}
public void OnInfiltrate(Actor self, Actor spy)
public void OnInfiltrate(Actor self, Actor infiltrator)
{
spy.World.AddFrameEndTask(w => w.CreateActor(Info.Proxy, new TypeDictionary
infiltrator.World.AddFrameEndTask(w => w.CreateActor(Info.Proxy, new TypeDictionary
{
new OwnerInit( spy.Owner )
new OwnerInit(infiltrator.Owner)
}));
}
}

View File

@@ -0,0 +1,114 @@
#region Copyright & License Information
/*
* Copyright 2007-2012 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.Collections.Generic;
using System.Drawing;
using System.Linq;
using OpenRA.Mods.RA.Activities;
using OpenRA.Mods.RA.Buildings;
using OpenRA.Mods.RA.Orders;
using OpenRA.Traits;
using OpenRA.Mods.RA.Missions;
namespace OpenRA.Mods.RA
{
class InfiltratesInfo : ITraitInfo
{
public string[] InfiltrateTypes = {"Cash", "SupportPower", "Exploration"};
public object Create(ActorInitializer init) { return new Infiltrates(this); }
}
class Infiltrates : IIssueOrder, IResolveOrder, IOrderVoice
{
public readonly InfiltratesInfo Info;
public Infiltrates(InfiltratesInfo info)
{
Info = info;
}
public IEnumerable<IOrderTargeter> Orders
{
get
{
yield return new InfiltratorOrderTargeter(target => CanInfiltrate(target));
}
}
public Order IssueOrder(Actor self, IOrderTargeter order, Target target, bool queued)
{
if (order.OrderID == "Infiltrate")
return new Order(order.OrderID, self, queued) { TargetActor = target.Actor };
return null;
}
public string VoicePhraseForOrder(Actor self, Order order)
{
return (order.OrderString == "Infiltrate" && CanInfiltrate(order.TargetActor)) ? "Attack" : null;
}
public void ResolveOrder(Actor self, Order order)
{
if (order.OrderString == "Infiltrate")
{
if (!CanInfiltrate(order.TargetActor))
return;
self.SetTargetLine(Target.FromOrder(order), Color.Red);
self.CancelActivity();
self.QueueActivity(new Enter(order.TargetActor));
self.QueueActivity(new Infiltrate(order.TargetActor));
}
}
bool CanInfiltrate(Actor target)
{
if (Info.InfiltrateTypes.Contains("Cash") && target.HasTrait<InfiltrateForCash>())
return true;
if (Info.InfiltrateTypes.Contains("SupportPower") && target.HasTrait<InfiltrateForSupportPower>())
return true;
if (Info.InfiltrateTypes.Contains("Exploration") && target.HasTrait<InfiltrateForExploration>())
return true;
if (Info.InfiltrateTypes.Contains("MissionObjective") && target.HasTrait<InfiltrateForMissionObjective>())
return true;
return false;
}
class InfiltratorOrderTargeter : UnitTraitOrderTargeter<IAcceptInfiltrator>
{
readonly Func<Actor, bool> useEnterCursor;
public InfiltratorOrderTargeter(Func<Actor, bool> useEnterCursor) : base("Infiltrate", 7, "enter", true, false)
{
ForceAttack=false;
this.useEnterCursor = useEnterCursor;
}
public override bool CanTargetActor(Actor self, Actor target, bool forceAttack, bool forceQueued, ref string cursor)
{
if (!base.CanTargetActor(self, target, forceAttack, forceQueued, ref cursor))
return false;
if (!useEnterCursor(target))
cursor = "enter-blocked";
return true;
}
}
}
}

View File

@@ -410,7 +410,7 @@ namespace OpenRA.Mods.RA.Missions
};
lab = actors["Lab"];
lab.AddTrait(new InfiltrateAction(OnLabInfiltrated));
lab.AddTrait(new InfiltrateForMissionObjective(OnLabInfiltrated));
lab.AddTrait(new TransformedAction(self => lab = self));
reinforcementsEntryPoint = actors["ReinforcementsEntryPoint"];
@@ -456,13 +456,17 @@ namespace OpenRA.Mods.RA.Missions
public object Create(ActorInitializer init) { return new Allies04Hijackable(init.self); }
}
class Allies04Hijackable : IAcceptSpy, INotifyPassengerExited
class Allies04Hijackable : IAcceptInfiltrator, INotifyPassengerExited
{
public Player OldOwner;
void OnTruckHijacked(Actor spy) { }
public Allies04Hijackable(Actor self)
{
OldOwner = self.Owner;
self.AddTrait(new InfiltrateForMissionObjective(OnTruckHijacked));
}
public void OnInfiltrate(Actor self, Actor spy)

View File

@@ -230,11 +230,11 @@ namespace OpenRA.Mods.RA.Missions
}
}
class InfiltrateAction : IAcceptSpy
class InfiltrateForMissionObjective : IAcceptInfiltrator
{
Action<Actor> a;
public InfiltrateAction(Action<Actor> a)
public InfiltrateForMissionObjective(Action<Actor> a)
{
this.a = a;
}

View File

@@ -329,7 +329,7 @@ namespace OpenRA.Mods.RA.Missions
world.CreateActor("camera", greece, provingGroundsCameraPoint.Location, null);
superTankDome = actors["SuperTankDome"];
superTankDome.AddTrait(new InfiltrateAction(OnSuperTankDomeInfiltrated));
superTankDome.AddTrait(new InfiltrateForMissionObjective(OnSuperTankDomeInfiltrated));
superTankDome.AddTrait(new TransformedAction(self => superTankDome = self));
Game.MoveViewport(startEntryPoint.Location.ToFloat2());

View File

@@ -409,6 +409,7 @@
<Compile Include="CloakPaletteEffect.cs" />
<Compile Include="Widgets\ColorPreviewManagerWidget.cs" />
<Compile Include="FogPalette.cs" />
<Compile Include="Infiltrates.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj">

View File

@@ -8,6 +8,7 @@
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Mods.RA.Buildings;
@@ -17,13 +18,21 @@ namespace OpenRA.Mods.RA
{
public class ClassicProductionQueueInfo : ProductionQueueInfo, Requires<TechTreeInfo>, Requires<PowerManagerInfo>, Requires<PlayerResourcesInfo>
{
public readonly float SpeedUp = 0;
public readonly float MaxSpeedUp = 0;
public override object Create(ActorInitializer init) { return new ClassicProductionQueue(init.self, this); }
}
public class ClassicProductionQueue : ProductionQueue, ISync
{
public ClassicProductionQueue( Actor self, ClassicProductionQueueInfo info )
: base(self, self, info) {}
public new ClassicProductionQueueInfo Info;
public ClassicProductionQueue(Actor self, ClassicProductionQueueInfo info)
: base(self, self, info)
{
this.Info = info;
}
[Sync] bool isActive = false;
@@ -71,5 +80,29 @@ namespace OpenRA.Mods.RA
}
return false;
}
public override int GetBuildTime(String unitString)
{
var unit = Rules.Info[unitString];
if (unit == null || ! unit.Traits.Contains<BuildableInfo>())
return 0;
if (self.World.LobbyInfo.GlobalSettings.AllowCheats && self.Owner.PlayerActor.Trait<DeveloperMode>().FastBuild)
return 0;
var selfsameBuildings = self.World.ActorsWithTrait<Production>()
.Where(p => p.Trait.Info.Produces.Contains(unit.Traits.Get<BuildableInfo>().Queue))
.Where(p => p.Actor.Owner == self.Owner).ToArray();
var selfsameQueue = Rules.Info["player"].Traits.WithInterface<ClassicProductionQueueInfo>()
.First(p => selfsameBuildings.First().Trait.Info.Produces.Contains(p.Type));
var speedUp = 1 - (selfsameQueue.SpeedUp * (selfsameBuildings.Count() - 1)).Clamp(0, selfsameQueue.MaxSpeedUp);
var time = unit.GetBuildTime() * Info.BuildSpeed * speedUp;
return (int) time;
}
}
}

View File

@@ -253,21 +253,16 @@ namespace OpenRA.Mods.RA
}
}
public int GetBuildTime(String unitString)
virtual public int GetBuildTime(String unitString)
{
var unit = Rules.Info[unitString];
if (unit == null || ! unit.Traits.Contains<BuildableInfo>())
return 0;
if (self.World.LobbyInfo.GlobalSettings.AllowCheats && self.Owner.PlayerActor.Trait<DeveloperMode>().FastBuild) return 0;
var cost = unit.Traits.Contains<ValuedInfo>() ? unit.Traits.Get<ValuedInfo>().Cost : 0;
var time = cost
* Info.BuildSpeed
* (25 * 60) /* frames per min */ /* todo: build acceleration, if we do that */
/ 1000;
if (self.World.LobbyInfo.GlobalSettings.AllowCheats && self.Owner.PlayerActor.Trait<DeveloperMode>().FastBuild)
return 0;
if (unit.Traits.Contains<CustomBuildTimeValueInfo>())
time = unit.Traits.Get<CustomBuildTimeValueInfo>().Value * (1 / Info.BuildSpeed);
var time = unit.GetBuildTime() * Info.BuildSpeed;
return (int) time;
}

View File

@@ -41,7 +41,7 @@ namespace OpenRA.Mods.RA
r = Game.Renderer;
if (r == null) return;
var s = new Sheet("mods/ra/uibits/loadscreen.png");
var s = new Sheet(Info["LoadScreenImage"]);
Logo = new Sprite(s, new Rectangle(0,0,256,256), TextureChannel.Alpha);
Stripe = new Sprite(s, new Rectangle(256,0,256,256), TextureChannel.Alpha);
StripeRect = new Rectangle(0, Renderer.Resolution.Height/2 - 128, Renderer.Resolution.Width, 256);

View File

@@ -84,15 +84,12 @@ namespace OpenRA.Mods.RA
{
get
{
yield return new UnitTraitOrderTargeter<IAcceptSpy>( "SpyInfiltrate", 7, "enter", true, false ) { ForceAttack=false };
yield return new UnitTraitOrderTargeter<RenderInfantry>( "Disguise", 7, "ability", true, true ) { ForceAttack=false };
yield return new UnitTraitOrderTargeter<RenderInfantry>("Disguise", 7, "ability", true, true) { ForceAttack=false };
}
}
public Order IssueOrder( Actor self, IOrderTargeter order, Target target, bool queued )
{
if( order.OrderID == "SpyInfiltrate" )
return new Order(order.OrderID, self, queued) { TargetActor = target.Actor };
if( order.OrderID == "Disguise" )
return new Order(order.OrderID, self, queued) { TargetActor = target.Actor };
return null;
@@ -100,14 +97,6 @@ namespace OpenRA.Mods.RA
public void ResolveOrder(Actor self, Order order)
{
if (order.OrderString == "SpyInfiltrate")
{
self.SetTargetLine(Target.FromOrder(order), Color.Red);
self.CancelActivity();
self.QueueActivity(new Enter(order.TargetActor));
self.QueueActivity(new Infiltrate(order.TargetActor));
}
if (order.OrderString == "Disguise")
{
var target = order.TargetActor == self ? null : order.TargetActor;
@@ -121,8 +110,7 @@ namespace OpenRA.Mods.RA
public string VoicePhraseForOrder(Actor self, Order order)
{
return (order.OrderString == "Disguise"
|| order.OrderString == "SpyInfiltrate") ? "Attack" : null;
return (order.OrderString == "Disguise") ? "Attack" : null;
}
public Color RadarColorOverride(Actor self)

View File

@@ -0,0 +1,528 @@
chrome-gdi: chrome-gdi.png
specialbin-top: 0,0,30,51
specialbin-middle: 0,51,30,51
specialbin-bottom: 0,153,30,39
moneybin: 192,0,320,32
tooltip-bg: 0,288,272,136
radar-gdi: chrome-gdi.png
left: 297,31,9,192
right: 498,31,9,192
bottom: 297,223,210,30
bg: 306,31,192,192
power-gdi: chrome-gdi.png
power-indicator: 187,4,4,7
palette-gdi: chrome-gdi.png
top: 297,288,201,9
dock-top: 498,274,14,23
bottom: 297,489,201,9
dock-bottom: 498,489,14,23
bg-0: 297,297,201,48
dock-0: 498,297,14,48
bg-1: 297,345,201,48
dock-1: 498,345,14,48
bg-2: 297,393,201,48
dock-2: 498,393,14,48
bg-3: 297,441,201,48
dock-3: 498,441,14,48
digits-gdi: chrome-gdi.png
0: 32,0,13,17
1: 45,0,13,17
2: 58,0,13,17
3: 71,0,13,17
4: 84,0,13,17
5: 97,0,13,17
6: 110,0,13,17
7: 123,0,13,17
8: 136,0,13,17
9: 149,0,13,17
chrome-nod: chrome-nod.png
specialbin-top: 0,0,30,51
specialbin-middle: 0,51,30,51
specialbin-bottom: 0,153,30,39
moneybin: 192,0,320,32
tooltip-bg: 0,288,272,136
radar-nod: chrome-nod.png
left: 297,31,9,192
right: 498,31,9,192
bottom: 297,223,210,30
bg: 306,31,192,192
power-indicator: 187,4,4,7
power-nod: chrome-nod.png
power-indicator: 187,4,4,7
palette-nod: chrome-nod.png
top: 297,288,201,9
dock-top: 498,274,14,23
bottom: 297,489,201,9
dock-bottom: 498,489,14,23
bg-0: 297,297,201,48
dock-0: 498,297,14,48
bg-1: 297,345,201,48
dock-1: 498,345,14,48
bg-2: 297,393,201,48
dock-2: 498,393,14,48
bg-3: 297,441,201,48
dock-3: 498,441,14,48
digits-nod: chrome-nod.png
0: 32,0,13,17
1: 45,0,13,17
2: 58,0,13,17
3: 71,0,13,17
4: 84,0,13,17
5: 97,0,13,17
6: 110,0,13,17
7: 123,0,13,17
8: 136,0,13,17
9: 149,0,13,17
tabs-selected: tabs.png
gdi-Building: 0,0,27,41
gdi-Defense: 0,40,27,41
gdi-Infantry: 0,80,27,41
gdi-Vehicle: 0,120,27,41
gdi-Aircraft: 0,160,27,41
gdi-Ship: 0,200,27,41
nod-Building: 80,0,27,41
nod-Defense: 80,40,27,41
nod-Infantry: 80,80,27,41
nod-Vehicle: 80,120,27,41
nod-Aircraft: 80,160,27,41
nod-Ship: 80,200,27,41
tabs-ready: tabs.png
gdi-Building: 27,0,27,41
gdi-Defense: 27,40,27,41
gdi-Infantry: 27,80,27,41
gdi-Vehicle: 27,120,27,41
gdi-Aircraft: 27,160,27,41
gdi-Ship: 27,200,27,41
nod-Building: 107,0,27,41
nod-Defense: 107,40,27,41
nod-Infantry: 107,80,27,41
nod-Vehicle: 107,120,27,41
nod-Aircraft: 107,160,27,41
nod-Ship: 107,200,27,41
tabs-normal: tabs.png
gdi-Building: 54,0,27,41
gdi-Defense: 54,40,27,41
gdi-Infantry: 54,80,27,41
gdi-Vehicle: 54,120,27,41
gdi-Aircraft: 54,160,27,41
gdi-Ship: 54,200,27,41
nod-Building: 134,0,27,41
nod-Defense: 134,40,27,41
nod-Infantry: 134,80,27,41
nod-Vehicle: 134,120,27,41
nod-Aircraft: 134,160,27,41
nod-Ship: 134,200,27,41
dialog2: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 594,0,1,1
corner-bl: 512,82,1,1
corner-br: 594,82,1,1
dialog3: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
dialog4: dialog.png
border-t: 773,0,52,6
border-b: 773,58,52,6
border-l: 768,5,6,54
border-r: 826,5,6,54
corner-tl: 768,0,6,6
corner-tr: 826,0,6,6
corner-bl: 768,58,6,6
corner-br: 826,58,6,6
background: 773,5,52,52
dialog: dialog.png
background: 0,0,480,480
border-r: 489,0,9,192
border-l: 480,0,9,192
border-b: 0,489,191,9
border-t: 0,480,191,9
corner-tl: 191,480,9,9
corner-tr: 200,480,9,9
corner-bl: 191,489,9,9
corner-br: 200,489,9,9
spawnpoints: spawnpoints.png
unowned: 528,128,16,16
owned: 512,128,16,16
strategic: strategic.png
unowned: 0,0,32,32
critical_unowned: 0,32,32,32
enemy_owned: 32,32,32,32
player_owned: 96,0,32,32
sell-button: buttons.png
normal: 0,0,34,28
pressed: 34,0,34,28
disabled: 68,0,34,28
repair-button: buttons.png
normal: 0,28,34,28
pressed: 34,28,34,28
disabled: 68,28,34,28
power-button: buttons.png
normal: 0,56,34,28
pressed: 34,56,34,28
disabled: 68,56,34,28
flags: buttons.png
gdi: 30,84,30,15
nod: 0,84,30,15
random: 60,84,30,15
spectator: 60,84,30,15
music: musicplayer.png
pause: 0,0,25,25
stop: 28,0,25,25
play: 56,0,25,25
next: 84,0,25,25
prev: 112,0,25,25
scrollbar: buttons.png
down_arrow: 16,112,16,16
down_pressed: 16,112,16,16
up_arrow: 32,112,16,16
up_pressed: 32,112,16,16
# A copy of dialog3
progressbar-bg: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
# A copy of dialog2
progressbar-thumb: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 594,0,1,1
corner-bl: 512,82,1,1
corner-br: 594,82,1,1
# A copy of dialog2
button: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 594,0,1,1
corner-bl: 512,82,1,1
corner-br: 594,82,1,1
button-highlighted: dialog.png
background: 513,145,126,126
border-r: 639,145,1,126
border-l: 512,145,1,126
border-b: 513,271,126,1
border-t: 513,144,126,1
corner-tl: 512,144,1,1
corner-tr: 594,144,1,1
corner-bl: 512,271,1,1
corner-br: 594,271,1,1
# A copy of dialog2
button-hover: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 594,0,1,1
corner-bl: 512,82,1,1
corner-br: 594,82,1,1
button-hover-highlighted: dialog.png
background: 513,145,126,126
border-r: 639,145,1,126
border-l: 512,145,1,126
border-b: 513,271,126,1
border-t: 513,144,126,1
corner-tl: 512,144,1,1
corner-tr: 594,144,1,1
corner-bl: 512,271,1,1
corner-br: 594,271,1,1
# A copy of dialog2
button-disabled: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 594,0,1,1
corner-bl: 512,82,1,1
corner-br: 594,82,1,1
button-disabled-highlighted: dialog.png
background: 513,145,126,126
border-r: 639,145,1,126
border-l: 512,145,1,126
border-b: 513,271,126,1
border-t: 513,144,126,1
corner-tl: 512,144,1,1
corner-tr: 594,144,1,1
corner-bl: 512,271,1,1
corner-br: 594,271,1,1
# A copy of dialog3
button-pressed: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
button-pressed-highlighted: dialog.png
background: 641,145,126,126
border-r: 767,145,1,126
border-l: 640,145,1,126
border-b: 641,271,126,1
border-t: 641,144,126,1
corner-tl: 640,144,1,1
corner-tr: 722,144,1,1
corner-bl: 640,271,1,1
corner-br: 722,271,1,1
scrollthumb: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 594,0,1,1
corner-bl: 512,82,1,1
corner-br: 594,82,1,1
# A copy of dialog2
scrollthumb-hover: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 594,0,1,1
corner-bl: 512,82,1,1
corner-br: 594,82,1,1
# A copy of dialog2
scrollthumb-disabled: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 594,0,1,1
corner-bl: 512,82,1,1
corner-br: 594,82,1,1
# A copy of dialog3
scrollthumb-pressed: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 594,0,1,1
corner-bl: 512,82,1,1
corner-br: 594,82,1,1
# A copy of dialog3
textfield: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
# A copy of dialog3
textfield-hover: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
# A copy of dialog3
textfield-disabled: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
# A copy of dialog3
textfield-focused: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
# A copy of dialog3
scrollpanel-bg: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
# A copy of dialog2
slider-tick: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 594,0,1,1
corner-bl: 512,82,1,1
corner-br: 594,82,1,1
# A copy of dialog3
slider-track: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
# A copy of dialog3
checkbox: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
checkbox-bits: buttons.png
checked: 0,112,16,16
# A copy of dialog3
checkbox-hover: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
# A copy of dialog3
checkbox-disabled: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
# A copy of dialog3
scrollitem-selected: dialog.png
background: 641,1,126,126
border-r: 767,1,1,126
border-l: 640,1,1,126
border-b: 641,127,126,1
border-t: 641,0,126,1
corner-tl: 640,0,1,1
corner-tr: 722,0,1,1
corner-bl: 640,82,1,1
corner-br: 722,82,1,1
# A copy of dialog2
scrollitem-hover: dialog.png
background: 513,1,126,126
border-r: 639,1,1,126
border-l: 512,1,1,126
border-b: 513,127,126,1
border-t: 513,0,126,1
corner-tl: 512,0,1,1
corner-tr: 594,0,1,1
corner-bl: 512,82,1,1
corner-br: 594,82,1,1
misc: misc.png
isadmin: 0,0,10,15

View File

@@ -0,0 +1,94 @@
UnitExplodeSmall:
Warhead:
# Damage: 40
# Spread: 10
# Versus:
# None: 90%
# Wood: 75%
# Light: 60%
# Heavy: 25%
Explosion: 4
InfDeath: 4
ImpactSound: xplobig4
UnitExplode:
Warhead:
Damage: 500
Spread: 10
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
Explosion: 8
InfDeath: 4
ImpactSound: xplobig6
NapalmExplode:
Warhead:
Spread: 8
Versus:
None: 90%
Wood: 100%
Light: 60%
Heavy: 25%
Concrete: 50%
InfDeath: 5
Explosion: 3
# Explosion: big_napalm
ImpactSound: xplobig6
SmudgeType: Scorch
Damage: 50
BigNapalmExplode: # For Flame tank, etc.
Warhead:
Damage: 50
Spread: 18
Versus:
None: 90%
Wood: 100%
Light: 60%
Heavy: 25%
Concrete: 50%
InfDeath: 5
Explosion: big_napalm
ImpactSound: xplobig6
SmudgeType: Scorch
GrenadierExplode:
Warhead:
Damage: 25
Spread: 10
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
Explosion: 5
InfDeath: 3
ImpactSound: xplosml2
MammothExplode: #Big artillery explosion, without as much damage
Warhead:
Damage: 50
Spread: 18
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
Explosion: 8
InfDeath: 4
ImpactSound: xplobig6
McvExplode:
Warhead:
Explosion: building
InfDeath: 4
ImpactSound: xplobig6
HeliExplode:
Warhead:
Explosion: veh1
InfDeath: 4
ImpactSound: xplos

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,12 +1,12 @@
Selectable: False
Selectable: True
MapFormat: 5
RequiresMod: cnc
RequiresMod: cnc-classic
Title: Storm the Beachhead
Description: Remake of the first GDI Mission
Description: Conversion of the first GDI Mission
Author: Westwood Studios
@@ -18,7 +18,7 @@ Bounds: 35,39,27,23
UseAsShellmap: False
Type: Conquest
Type: Campaign
Players:
PlayerReference@BadGuy:
@@ -450,6 +450,8 @@ Rules:
Gdi01Script:
Player:
-ConquestVictoryConditions:
PROC:
-Buildable:
SILO:
-Buildable:
WEAP:
@@ -460,13 +462,11 @@ Rules:
-Buildable:
FIX:
-Buildable:
HPAD:
HPAD.GDI:
-Buildable:
EYE:
-Buildable:
SBAG:
-Buildable:
BRIK:
GUN:
-Buildable:
GTWR:
-Buildable:
@@ -480,6 +480,9 @@ Rules:
-Buildable:
RMBO:
-Buildable:
BOAT:
Mobile:
OnRails: false # workaround a crash
Sequences:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,299 @@
Selectable: True
MapFormat: 5
Title: Nikoomba's Demise
Description: Conversion of first Nod mission from Cnc
Author: Dan9550
Tileset: DESERT
MapSize: 64,64
Bounds: 21,14,37,24
UseAsShellmap: False
Type: Campaign
Players:
PlayerReference@Neutral:
Name: Neutral
OwnsWorld: True
NonCombatant: True
Race: gdi
PlayerReference@Creeps:
Name: Creeps
NonCombatant: True
Race: gdi
PlayerReference@GDI:
Name: GDI
Race: gdi
ColorRamp: 31,222,183,24
Allies: Creeps
Enemies: NOD
PlayerReference@NOD:
Name: NOD
Playable: True
AllowBots: False
LockRace: True
Race: nod
LockColor: True
ColorRamp: 3,255,127,28
LockSpawn: True
LockTeam: True
Enemies: GDI,Neutral
Actors:
Actor0: rock2
Location: 54,14
Owner: Neutral
Actor1: t08
Location: 47,15
Owner: Neutral
Actor2: t18
Location: 32,16
Owner: Neutral
Actor3: t08
Location: 47,16
Owner: Neutral
Actor4: t08
Location: 21,18
Owner: Neutral
Actor5: t18
Location: 32,21
Owner: Neutral
Actor6: t08
Location: 27,22
Owner: Neutral
Actor7: t08
Location: 23,24
Owner: Neutral
Actor8: rock1
Location: 21,25
Owner: Neutral
Actor9: t08
Location: 56,25
Owner: Neutral
Actor10: t08
Location: 23,26
Owner: Neutral
Actor11: t08
Location: 24,26
Owner: Neutral
Actor12: t08
Location: 28,30
Owner: Neutral
Actor13: t08
Location: 50,30
Owner: Neutral
Actor14: t08
Location: 39,31
Owner: Neutral
Actor15: rock1
Location: 31,34
Owner: Neutral
Actor16: t08
Location: 55,37
Owner: Neutral
Actor17: t08
Location: 30,51
Owner: Neutral
Actor18: t08
Location: 58,53
Owner: Neutral
Actor19: t08
Location: 43,56
Owner: Neutral
Actor20: rock1
Location: 24,58
Owner: Neutral
Actor21: t08
Location: 52,58
Owner: Neutral
Actor22: rock1
Location: 55,58
Owner: Neutral
Actor23: t08
Location: 29,59
Owner: Neutral
Actor24: rock2
Location: 31,61
Owner: Neutral
Vil01: v21
Location: 29,23
Owner: Neutral
Vil02: v24
Location: 22,24
Owner: Neutral
Vil03: v24
Location: 21,16
Owner: Neutral
Vil04: v32
Location: 21,20
Owner: Neutral
Vil05: v27
Location: 22,21
Owner: Neutral
Vil06: v20
Location: 21,21
Owner: Neutral
Vil07: v26
Location: 22,23
Owner: Neutral
Vil08: v20
Location: 27,23
Owner: Neutral
Vil09: v22
Location: 26,23
Owner: Neutral
Vil10: v23
Location: 26,22
Owner: Neutral
Vil11: v26
Location: 26,21
Owner: Neutral
Vil12: v25
Location: 29,21
Owner: Neutral
Vil13: v30
Location: 32,18
Owner: Neutral
Civ01: c9
Location: 28,20
Owner: Neutral
Civ02: c6
Location: 28,19
Owner: Neutral
Civ03: c8
Location: 27,19
Owner: Neutral
Civ04: c7
Location: 29,20
Owner: Neutral
Civ05: c4
Location: 31,19
Owner: Neutral
Civ06: c2
Location: 30,19
Owner: Neutral
Civ07: c5
Location: 29,19
Owner: Neutral
Nikoomba: c10
Location: 29,16
Owner: Neutral
Actor46: e1
Location: 28,28
Owner: GDI
Actor47: e1
Location: 29,28
Owner: GDI
Actor48: e1
Location: 29,30
Owner: GDI
Actor49: e1
Location: 33,35
Owner: GDI
Actor50: e1
Location: 34,36
Owner: GDI
Actor51: e1
Location: 41,19
Owner: GDI
Actor52: e1
Location: 40,19
Owner: GDI
Actor53: e1
Location: 40,18
Owner: GDI
Actor54: e1
Location: 40,31
Owner: GDI
Actor55: e1
Location: 43,34
Owner: GDI
Actor56: e1
Location: 46,22
Owner: GDI
Actor57: e1
Location: 51,25
Owner: GDI
Actor58: e1
Location: 51,30
Owner: GDI
Actor59: e1
Location: 55,33
Owner: GDI
Actor60: e1
Location: 56,32
Owner: GDI
Actor61: e1
Location: 52,17
Owner: NOD
Actor62: e1
Location: 51,17
Owner: NOD
Actor63: e1
Location: 51,16
Owner: NOD
Actor64: e1
Location: 52,16
Owner: NOD
Actor65: e1
Location: 55,17
Owner: NOD
Actor66: e1
Location: 56,17
Owner: NOD
Actor67: e1
Location: 56,16
Owner: NOD
Actor68: e1
Location: 55,16
Owner: NOD
Actor69: bggy
Location: 53,16
Owner: NOD
Actor70: bggy
Location: 54,16
Owner: NOD
NODReinforceNthA: waypoint
Location: 52,18
Owner: NOD
GDIReinforceNth: waypoint
Location: 24,15
Owner: GDI
NODReinforceNthB: waypoint
Location: 55,18
Owner: NOD
Actor27: jeep
Location: 31,28
Owner: GDI
Actor28: jeep
Location: 28,29
Owner: GDI
Smudges:
Rules:
Player:
-ConquestVictoryConditions:
World:
-CrateSpawner:
-SpawnMPUnits:
-MPStartLocations:
Nod01Script:
C10:
Tooltip:
Name: Nikoomba
Sequences:
Weapons:
Voices:
Notifications:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

138
mods/cnc-classic/mod.yaml Normal file
View File

@@ -0,0 +1,138 @@
Metadata:
Title: C&C: TD Classic (WIP)
Description: An emulation of the Original Tiberian Dawn
Version: {DEV_VERSION}
Author: The OpenRA Developers
Folders:
.
./mods/cnc
./mods/cnc/bits
./mods/cnc-classic/uibits
./mods/cnc/uibits
./mods/ra/uibits
~^/Content/cnc
Packages:
overrides.mix
bluetib.mix
speech.mix
conquer.mix
sounds.mix
tempicnh.mix
temperat.mix
winter.mix
desert.mix
snow.mix
~movies-gdi.mix
~movies-nod.mix
~movies.mix
~scores.mix
~transit.mix
Rules:
mods/cnc-classic/rules/defaults.yaml
mods/cnc-classic/rules/system.yaml
mods/cnc-classic/rules/structures.yaml
mods/cnc-classic/rules/infantry.yaml
mods/cnc-classic/rules/vehicles.yaml
mods/cnc-classic/rules/trees.yaml
mods/cnc-classic/rules/civilian.yaml
mods/cnc-classic/rules/civilian-desert.yaml
mods/cnc-classic/rules/tech.yaml
mods/cnc-classic/rules/ships.yaml
mods/cnc-classic/rules/aircraft.yaml
Sequences:
mods/cnc/sequences/structures.yaml
mods/cnc/sequences/vehicles.yaml
mods/cnc/sequences/infantry.yaml
mods/cnc/sequences/map.yaml
mods/cnc/sequences/misc.yaml
# Low priority sequences that break the batch when used
mods/cnc/sequences/civilian.yaml
mods/cnc-classic/sequences/campaign.yaml
Cursors:
mods/cnc/cursors.yaml
Chrome:
mods/cnc-classic/chrome.yaml
Assemblies:
mods/ra/OpenRA.Mods.RA.dll
mods/cnc/OpenRA.Mods.Cnc.dll
ChromeLayout:
mods/ra/chrome/gameinit.yaml
mods/ra/chrome/ingame.yaml
mods/ra/chrome/mainmenu.yaml
mods/ra/chrome/settings.yaml
mods/ra/chrome/lobby.yaml
mods/ra/chrome/map-chooser.yaml
mods/ra/chrome/create-server.yaml
mods/ra/chrome/serverbrowser.yaml
mods/ra/chrome/replaybrowser.yaml
mods/ra/chrome/dropdowns.yaml
mods/ra/chrome/modchooser.yaml
mods/ra/chrome/cheats.yaml
mods/ra/chrome/objectives.yaml
Weapons:
mods/cnc-classic/weapons.yaml
mods/cnc-classic/explosions.yaml
Movies:
mods/cnc/movies-gdi.yaml
mods/cnc/movies-nod.yaml
Voices:
mods/cnc/voices.yaml
Notifications:
mods/cnc-classic/notifications.yaml
Music:
mods/cnc/music.yaml
TileSets:
mods/cnc/tilesets/desert.yaml
mods/cnc/tilesets/winter.yaml
mods/cnc/tilesets/snow.yaml
mods/cnc/tilesets/temperat.yaml
LoadScreen: RALoadScreen
InstallerMenuWidget: INSTALL_PANEL
TestFile: conquer.mix
LoadScreenImage: mods/cnc-classic/uibits/loadscreen.png
PackageURL: http://open-ra.org/get-dependency.php?file=cnc-packages
ServerTraits:
LobbyCommands
MasterServerPinger
ChromeMetrics:
mods/ra/metrics.yaml
Fonts:
Regular:
Font:FreeSans.ttf
Size:14
Bold:
Font:FreeSansBold.ttf
Size:14
Title:
Font:titles.ttf
Size:48
MediumBold:
Font:FreeSansBold.ttf
Size:18
BigBold:
Font:FreeSansBold.ttf
Size:24
Tiny:
Font:FreeSans.ttf
Size:10
TinyBold:
Font:FreeSansBold.ttf
Size:10

View File

@@ -0,0 +1,38 @@
Speech:
Notifications:
Repairing: repair1
LowPower: lopower1
SilosNeeded: silos1
PrimaryBuildingSelected: pribldg1
BuildingCannotPlaceAudio: deploy1
NewOptions: newopt1
AbilityInsufficientPower: nopower1
Win: accom1
Lose: fail1
BaseAttack: baseatk1
HarvesterAttack:
Leave: batlcon1
UnitReady: unitredy
NoBuild: nobuild1
Training: bldging1
OnHold: onhold1
Cancelled: cancel1
Building: bldging1
ConstructionComplete: constru1
Reinforce: reinfor1
Sounds:
Notifications:
RadarUp: comcntr1
RadarDown: powrdn1
CashTickUp:
CashTickDown:
LevelUp: text2
DisablePower: button
EnablePower: button
ChatLine: scold1
BuildPaletteOpen: button
BuildPaletteClose: button
TabClick: button
ClickSound: button
ClickDisabledSound: scold2

View File

@@ -0,0 +1,169 @@
TRAN:
Inherits: ^Helicopter
Valued:
Cost: 1500
Tooltip:
Name: Chinook Transport
Icon:tranicnh
Description: Fast Infantry Transport Helicopter.\n Unarmed
Buildable:
BuildPaletteOrder: 10
Prerequisites: hpad
BuiltAt: hpad
Owner: gdi,nod
Selectable:
Bounds: 41,41
Helicopter:
LandWhenIdle: true
ROT: 5
Speed: 15
InitialFacing: 0
LandableTerrainTypes: Clear,Rough,Road,Ore,Beach
Health:
HP: 90
Armor:
Type: Light
RevealsShroud:
Range: 8
RenderUnit:
WithRotor@PRIMARY:
Offset: 0,14,0,-4
WithRotor@SECONDARY:
Id: rotor_2
Offset: 0,-14,0,-2
WithShadow:
Cargo:
Types: Infantry
MaxWeight: 10
PipCount: 10
FallsToEarth:
HELI:
Inherits: ^Helicopter
Valued:
Cost: 1200
Tooltip:
Name: Apache Longbow
Icon: heliicnh
Description: Helicopter Gunship with Chainguns.\n Strong vs Infantry, Light Vehicles\n Weak vs Tanks
Buildable:
BuildPaletteOrder: 20
Prerequisites: hpad, hq
BuiltAt: hpad
Owner: nod
Selectable:
Bounds: 30,24
Helicopter:
ROT: 4
Speed: 20
RearmBuildings: hpad.nod
Health:
HP: 125
Armor:
Type: Light
RevealsShroud:
Range: 8
AttackHeli:
PrimaryWeapon: HeliAGGun
PrimaryOffset: 0,-3,0,2
PrimaryLocalOffset: -5,0,0,0,0, 5,0,0,0,0
FacingTolerance: 20
LimitedAmmo:
Ammo: 10
PipCount: 5
ReloadTicks: 10
RenderUnit:
WithRotor:
Offset: 0,0,0,-2
WithMuzzleFlash:
WithShadow:
FallsToEarth:
AutoTarget:
ORCA:
Inherits: ^Helicopter
Valued:
Cost: 1200
Tooltip:
Name: Orca
Icon: orcaicnh
Description: Helicopter Gunship with AG Missiles.\n Strong vs Buildings, Tanks\n Weak vs Infantry
Buildable:
BuildPaletteOrder: 20
Prerequisites: hpad, hq
BuiltAt: hpad
Owner: gdi
Selectable:
Bounds: 30,24
Helicopter:
ROT: 4
Speed: 20
RearmBuildings: hpad.gdi
Health:
HP: 100
Armor:
Type: Light
RevealsShroud:
Range: 8
AttackHeli:
PrimaryWeapon: OrcaAGMissiles
PrimaryOffset: 0,-10,0,5
PrimaryLocalOffset: -4,0,0,0,0, 4,0,0,0,0
FacingTolerance: 20
LimitedAmmo:
Ammo: 10
PipCount: 5
ReloadTicks: 10
RenderUnit:
WithShadow:
FallsToEarth:
AutoTarget:
C17:
ParaDrop:
LZRange: 1
Inherits: ^Plane
Tooltip:
Name: Supply Aircraft
Plane:
ROT: 5
Speed: 35
Health:
HP: 25
Armor:
Type: Heavy
RenderUnit:
WithShadow:
Cargo:
# Types: Infantry, Vehicle
MaxWeight: 10
PipCount: 10
Invulnerable:
-Selectable:
-TargetableUnit:
FlyAwayOnIdle:
A10:
Inherits: ^Plane
Tooltip:
Name: A10 Bomber
Icon: a10icnh
Plane:
ROT: 4
Speed: 40
Health:
HP: 60
Armor:
Type: Heavy
RevealsShroud:
Range: 8
RenderUnit:
WithShadow:
LimitedAmmo:
Ammo: 10
CarpetBomb:
Weapon: Napalm
Range: 3
-Selectable:
FlyAwayOnIdle:

View File

@@ -0,0 +1,124 @@
V20:
Inherits: ^CivBuilding
Building:
Footprint: xx xx
Dimensions: 2,2
EditorTilesetFilter:
RequireTilesets: DESERT
V21:
Inherits: ^CivBuilding
Building:
Footprint: xx xx
Dimensions: 2,2
EditorTilesetFilter:
RequireTilesets: DESERT
V22:
Inherits: ^CivBuilding
Building:
Footprint: xx
Dimensions: 2,1
EditorTilesetFilter:
RequireTilesets: DESERT
V23:
Inherits: ^CivBuilding
EditorTilesetFilter:
RequireTilesets: DESERT
V24:
Inherits: ^CivBuilding
Building:
Footprint: xx xx
Dimensions: 2,2
EditorTilesetFilter:
RequireTilesets: DESERT
V25:
Inherits: ^CivBuilding
Building:
Footprint: xx xx
Dimensions: 2,2
Tooltip:
Name: Church
EditorTilesetFilter:
RequireTilesets: DESERT
V26:
Inherits: ^CivBuilding
Building:
Footprint: xx
Dimensions: 2,1
EditorTilesetFilter:
RequireTilesets: DESERT
V27:
Inherits: ^CivBuilding
EditorTilesetFilter:
RequireTilesets: DESERT
V28:
Inherits: ^CivBuilding
EditorTilesetFilter:
RequireTilesets: DESERT
V29:
Inherits: ^CivBuilding
EditorTilesetFilter:
RequireTilesets: DESERT
V30:
Inherits: ^CivBuilding
Building:
Footprint: xx
Dimensions: 2,1
EditorTilesetFilter:
RequireTilesets: DESERT
V31:
Inherits: ^CivBuilding
Building:
Footprint: xx
Dimensions: 2,1
EditorTilesetFilter:
RequireTilesets: DESERT
V32:
Inherits: ^CivBuilding
Building:
Footprint: xx
Dimensions: 2,1
EditorTilesetFilter:
RequireTilesets: DESERT
V33:
Inherits: ^CivBuilding
Building:
Footprint: xx
Dimensions: 2,1
EditorTilesetFilter:
RequireTilesets: DESERT
V34:
Inherits: ^CivBuilding
EditorTilesetFilter:
RequireTilesets: DESERT
V35:
Inherits: ^CivBuilding
EditorTilesetFilter:
RequireTilesets: DESERT
V36:
Inherits: ^CivBuilding
EditorTilesetFilter:
RequireTilesets: DESERT
V37:
Inherits: ^CivBuilding
Building:
Footprint: __xx_ ___xx
Dimensions: 5,2
EditorTilesetFilter:
RequireTilesets: DESERT

View File

@@ -0,0 +1,254 @@
V01:
Inherits: ^CivBuilding
Building:
Footprint: xx xx
Dimensions: 2,2
Tooltip:
Name: Church
EditorTilesetFilter:
ExcludeTilesets: DESERT
V02:
Inherits: ^CivBuilding
Building:
Footprint: xx xx
Dimensions: 2,2
EditorTilesetFilter:
ExcludeTilesets: DESERT
V03:
Inherits: ^CivBuilding
Building:
Footprint: xx xx
Dimensions: 2,2
EditorTilesetFilter:
ExcludeTilesets: DESERT
V04:
Inherits: ^CivBuilding
Building:
Footprint: xx xx
Dimensions: 2,2
EditorTilesetFilter:
ExcludeTilesets: DESERT
V05:
Inherits: ^CivBuilding
Building:
Footprint: xx
Dimensions: 2,1
EditorTilesetFilter:
ExcludeTilesets: DESERT
V06:
Inherits: ^CivBuilding
Building:
Footprint: xx
Dimensions: 2,1
EditorTilesetFilter:
ExcludeTilesets: DESERT
V07:
Inherits: ^CivBuilding
Building:
Footprint: xx
Dimensions: 2,1
EditorTilesetFilter:
ExcludeTilesets: DESERT
V08:
Inherits: ^CivBuilding
EditorTilesetFilter:
ExcludeTilesets: DESERT
V09:
Inherits: ^CivBuilding
EditorTilesetFilter:
ExcludeTilesets: DESERT
V10:
Inherits: ^CivBuilding
EditorTilesetFilter:
ExcludeTilesets: DESERT
V11:
Inherits: ^CivBuilding
EditorTilesetFilter:
ExcludeTilesets: DESERT
V12:
Inherits: ^CivBuilding
EditorTilesetFilter:
ExcludeTilesets: DESERT
V13:
Inherits: ^CivBuilding
EditorTilesetFilter:
ExcludeTilesets: DESERT
V14:
Inherits: ^CivField
EditorTilesetFilter:
ExcludeTilesets: DESERT
V15:
Inherits: ^CivField
EditorTilesetFilter:
ExcludeTilesets: DESERT
V16:
Inherits: ^CivField
EditorTilesetFilter:
ExcludeTilesets: DESERT
V17:
Inherits: ^CivField
EditorTilesetFilter:
ExcludeTilesets: DESERT
V18:
Inherits: ^CivField
EditorTilesetFilter:
ExcludeTilesets: DESERT
ARCO:
Inherits: ^CivBuilding
Building:
Footprint: xx
Dimensions: 2,1
BARB:
Inherits: ^Wall
Health:
HP: 100
Armor:
Type: Light
Tooltip:
Name: Wire Fence
Icon: barbicnh
WOOD:
Inherits: ^Wall
Health:
HP: 100
Armor:
Type: Wood
Tooltip:
Name: Wooden Fence
Icon: woodicnh
BRIDGE1:
Inherits: ^Bridge
Bridge:
Template: 165
DestroyedTemplate: 166
Building:
Footprint: ____ ____ ____ ____
Dimensions: 4,4
BRIDGE2:
Inherits: ^Bridge
Bridge:
Template: 167
DestroyedTemplate: 168
Building:
Footprint: _____ _____ _____ _____ _____
Dimensions: 5,5
BRIDGE3:
Inherits: ^Bridge
Bridge:
Template: 169
DestroyedTemplate: 170
Building:
Footprint: ______ ______ ______ ______ ______
Dimensions: 6,5
BRIDGE4:
Inherits: ^Bridge
Bridge:
Template: 171
DestroyedTemplate: 172
Building:
Footprint: ______ ______ ______ ______
Dimensions: 6,4
C1:
Inherits: ^CivInfantry
Selectable:
Voice: CivilianMaleVoice
C2:
Inherits: ^CivInfantry
Selectable:
Voice: CivilianFemaleVoice
C3:
Inherits: ^CivInfantry
C4:
Inherits: ^CivInfantry
Selectable:
Voice: CivilianFemaleVoice
C5:
Inherits: ^CivInfantry
C6:
Inherits: ^CivInfantry
Selectable:
Voice: CivilianFemaleVoice
C7:
Inherits: ^CivInfantry
C8:
Inherits: ^CivInfantry
Selectable:
Voice: CivilianFemaleVoice
C9:
Inherits: ^CivInfantry
C10:
Inherits: ^CivInfantry
Selectable:
Voice: CivilianFemaleVoice
VICE:
AppearsOnRadar:
Health:
Radius: 3
HP: 400
Armor:
Type: Wood
RevealsShroud:
Range: 4
Mobile:
Speed: 5
TerrainSpeeds:
Clear: 90
Rough: 80
Road: 100
Tiberium: 70
BlueTiberium: 70
Beach: 80
Selectable:
Voice: GenericVoice
TargetableUnit:
TargetTypes: Ground
AutoTarget:
ScanRadius: 4
AttackMove:
HiddenUnderFog:
GainsExperience:
GivesExperience:
Valued:
Cost: 1000
Tooltip:
Name: Viceroid
AttackFrontal:
PrimaryWeapon: Chemspray
AttackWander:
RenderUnit:
WithMuzzleFlash:

View File

@@ -0,0 +1,389 @@
^Vehicle:
AppearsOnRadar:
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Mobile:
Crushes: crate
TerrainSpeeds:
Clear: 25
Rough: 25
Road: 25
Tiberium: 25
BlueTiberium: 25
Beach: 25
ROT: 5
SelectionDecorations:
Selectable:
Voice: VehicleVoice
TargetableUnit:
TargetTypes: Ground
Buildable:
Queue: Vehicle
Repairable:
Passenger:
CargoType: Vehicle
ActorLostNotification:
Notification: unitlost.aud
AttackMove:
AcceptsCloakCrate:
WithSmoke:
Explodes:
Weapon: UnitExplodeSmall
^Tank:
AppearsOnRadar:
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Mobile:
Crushes: wall, crate, infantry
TerrainSpeeds:
Clear: 25
Rough: 25
Road: 25
Tiberium: 25
BlueTiberium: 25
Beach: 25
ROT: 5
SelectionDecorations:
Selectable:
Voice: VehicleVoice
TargetableUnit:
TargetTypes: Ground
Buildable:
Queue: Vehicle
Passenger:
CargoType: Vehicle
ActorLostNotification:
Notification: unitlost.aud
AttackMove:
AcceptsCloakCrate:
WithSmoke:
Explodes:
Weapon: UnitExplodeSmall
^Helicopter:
AppearsOnRadar:
UseLocation: yes
TargetableUnit:
TargetTypes: Air
SelectionDecorations:
Selectable:
Voice: VehicleVoice
Helicopter:
RepairBuildings: fix
RearmBuildings: hpad
LandWhenIdle: false
Buildable:
Queue: Aircraft
ActorLostNotification:
Notification: unitlost.aud
^Infantry:
AppearsOnRadar:
Health:
Radius: 3
Armor:
Type: None
RevealsShroud:
# Range: 4
Range: 3
# default range value for infantry is 1 in C&C, but OpenRA renders vision slightly differently.
AutoTarget:
ScanRadius: 4
Mobile:
Crushes: crate
SharesCell: true
TerrainSpeeds:
Clear: 90
Rough: 90
Road: 90
Tiberium: 90
PathingCost: 1000
BlueTiberium: 90
PathingCost: 1000
Beach: 90
SelectionDecorations:
Selectable:
Voice: GenericVoice
TargetableUnit:
TargetTypes: Ground
Buildable:
Queue: Infantry
TakeCover:
BarrelOffset: 0,-2,0,4
RenderInfantryProne:
AttackMove:
Passenger:
CargoType: Infantry
PoisonedByTiberium:
ActorLostNotification:
Notification: unitlost.aud
SpawnViceroid:
Probability: 2
CrushableInfantry:
DetectCloaked:
Range: 1
^CivInfantry:
Inherits: ^Infantry
-Buildable:
-AutoTarget:
-TakeCover:
-RenderInfantryProne:
AppearsOnRadar:
SelectionDecorations:
Selectable:
Voice: CivilianMaleVoice
Bounds: 12,17,0,-9
Valued:
Cost: 10
Tooltip:
Name: Civilian
Mobile:
Speed: 4
Health:
# HP: 25
HP: 5
RevealsShroud:
Range: 3 #arbitrary. Assuming it should be 1, like infantry.
# In practice, it seems that OpenRA renders vision range differently. Assuming it should be 1 for this unit.
AttackFrontal:
PrimaryWeapon: Pistol
ActorLostNotification:
Notification: civdead1.aud
NotifyAll: true
ScaredyCat:
RenderInfantryPanic:
AttackMove:
JustMove: yes
CrushableInfantry:
^Plane:
AppearsOnRadar:
UseLocation: yes
SelectionDecorations:
Selectable:
Voice: GenericVoice
TargetableUnit:
TargetTypes: Air
ActorLostNotification:
Notification: unitlost.aud
^Ship:
AppearsOnRadar:
Mobile:
Crushes: crate
TerrainSpeeds:
Water: 100
SelectionDecorations:
Selectable:
Voice: GenericVoice
TargetableUnit:
TargetTypes: Ground, Water
ActorLostNotification:
Notification: unitlost.aud
AttackMove:
^Building:
AppearsOnRadar:
SelectionDecorations:
Selectable:
Priority: 3
TargetableBuilding:
TargetTypes: Ground
Armor:
Type: Wood
RepairableBuilding:
RepairPercent: 40
RepairStep: 14
Building:
Dimensions: 1,1
Footprint: x
BuildSounds: constru2.aud, hvydoor1.aud
SellSounds: cashturn.aud
TerrainTypes: Clear,Road
SoundOnDamageTransition:
DamagedSound: xplos.aud
DestroyedSound: crumble.aud
Buildable:
Queue: Building
GivesBuildableArea:
RenderBuilding:
WithBuildingExplosion:
DeadBuildingState:
EmitInfantryOnSell:
ValuePercent: 40
ActorTypes: e6,e1
MustBeDestroyed:
CaptureNotification@GDI:
Race: gdi
Notification: gdicapt1.aud
CaptureNotification@NOD:
Race: nod
Notification: nodcapt1.aud
ActorLostNotification:
Notification: strclost.aud
EditorAppearance:
RelativeToTopLeft: yes
AutoTargetIgnore:
ShakeOnDeath:
Sellable:
Capturable:
CaptureCompleteTime: 0
CapturableBar:
^CivBuilding:
Inherits: ^Building
-DeadBuildingState:
-Buildable:
-GivesBuildableArea:
Health:
HP: 400
Armor:
Type: Wood
Building:
RenderBuilding:
WithBuildingExplosion:
-RepairableBuilding:
-Capturable:
-CapturableBar:
-Sellable:
Tooltip:
Name: Civilian Building
^CivBuildingHusk:
AppearsOnRadar:
Building:
Dimensions: 1,1
Footprint: x
RenderBuilding:
EditorAppearance:
RelativeToTopLeft: yes
Tooltip:
Name: Civilian Building (Destroyed)
^TechBuilding:
Inherits: ^CivBuilding
Capturable:
CaptureCompleteTime: 0
CapturableBar:
RepairableBuilding:
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
^CivField:
Inherits: ^CivBuilding
-Selectable:
Tooltip:
Name: Field
-WithBuildingExplosion:
^CivFieldHusk:
AppearsOnRadar:
Building:
Dimensions: 1,1
Footprint: _
EditorAppearance:
RelativeToTopLeft: yes
Tooltip:
Name: Field (Destroyed)
BelowUnits:
^Wall:
AppearsOnRadar:
Building:
Dimensions: 1,1
Footprint: x
BuildSounds: hvydoor1.aud
Adjacent: 7
TerrainTypes: Clear,Road
TargetableBuilding:
TargetTypes: Ground, Wall
Wall:
CrushClasses: wall
CrushSound: sandbag2.aud
SelectionDecorations:
Selectable:
Priority: 1
RenderBuildingWall:
HasMakeAnimation: false
Palette: staticterrain
EditorAppearance:
RelativeToTopLeft: yes
AutoTargetIgnore:
Sellable:
^HeavyWall:
AppearsOnRadar:
Building:
Dimensions: 1,1
Footprint: x
BuildSounds: hvydoor1.aud
Adjacent: 7
TerrainTypes: Clear,Road
TargetableBuilding:
TargetTypes: Ground, Wall
Wall:
CrushClasses: wall
CrushSound: sandbag2.aud
LineBuild:
Range: 8
SelectionDecorations:
Selectable:
Priority: 1
RenderBuildingWall:
HasMakeAnimation: false
Palette: staticterrain
EditorAppearance:
RelativeToTopLeft: yes
AutoTargetIgnore:
Sellable:
^Tree:
Tooltip:
Name: Tree
RenderBuilding:
Palette: staticterrain
Building:
Footprint: __ x_
Dimensions: 2,2
AppearsOnRadar:
RadarColorFromTerrain:
Terrain: Tree
EditorAppearance:
RelativeToTopLeft: yes
^Rock:
Tooltip:
Name: Rock
RenderBuilding:
Palette: staticterrain
Building:
Footprint: __ x_
Dimensions: 2,2
AppearsOnRadar:
RadarColorFromTerrain:
Terrain: Tree
EditorAppearance:
RelativeToTopLeft: yes
^Bridge:
Tooltip:
Name: Bridge
TargetableBuilding:
TargetTypes: Ground, Water
BelowUnits:
Health:
HP: 500
SoundOnDamageTransition:
DamagedSound: xplos.aud
DestroyedSound: xplobig4.aud
Building:
Footprint: ______ ______ ______ ______
Dimensions: 6,4

View File

@@ -0,0 +1,210 @@
E1:
Inherits: ^Infantry
Valued:
Cost: 100
Tooltip:
Name: Minigunner
Description: General-purpose infantry.\n Strong vs Infantry\n Weak vs Vehicles
Icon: e1icnh
Buildable:
BuildPaletteOrder: 10
Owner: gdi, nod
Selectable:
Bounds: 12,17,0,-6
Mobile:
Speed: 4
Health:
HP: 50
AttackFrontal:
PrimaryWeapon: M16
RenderInfantryProne:
IdleAnimations: idle1,idle2,idle3,idle4
E2:
Inherits: ^Infantry
Valued:
Cost: 160
Tooltip:
Name: Grenadier
Description: Infantry armed with grenades. \n Strong vs Buildings, Infantry\n Weak vs Vehicles
Icon: e2icnh
Buildable:
BuildPaletteOrder: 40
Prerequisites: pyle
Owner: gdi
Selectable:
Bounds: 12,17,0,-6
Mobile:
Speed: 5
Health:
HP: 50
AttackFrontal:
PrimaryWeapon: Grenade
PrimaryOffset: 0,0,0,-10
FireDelay: 15
RenderInfantryProne:
IdleAnimations: idle1,idle2
Explodes:
Weapon: GrenadierExplode
Chance: 50
E3:
Inherits: ^Infantry
Valued:
Cost: 300
Tooltip:
Name: Rocket Soldier
Description: Anti-tank/Anti-aircraft infantry. \n Strong vs Tanks, Aircraft\n Weak vs Infantry
Icon: e3icnh
Buildable:
BuildPaletteOrder: 20
Owner: nod, gdi
Selectable:
Bounds: 12,17,0,-6
Mobile:
Speed: 3
TerrainSpeeds:
Clear: 100
Rough: 100
Road: 100
Tiberium: 100
PathingCost: 1000
BlueTiberium: 100
PathingCost: 1000
Beach: 100
Health:
HP: 25
RevealsShroud:
Range: 3
# range value is 1 in C&C, but OpenRA renders vision slightly differently
AttackFrontal:
PrimaryWeapon: Rockets
PrimaryOffset: 1,-6,0,-8
FireDelay: 5
RenderInfantryProne:
IdleAnimations: idle1,idle2
E4:
Inherits: ^Infantry
Valued:
Cost: 200
Tooltip:
Name: Flamethrower
Description: Advanced Anti-infantry unit.\n Strong vs Infantry, Buildings\n Weak vs Vehicles
Icon: e4icnh
Buildable:
BuildPaletteOrder: 40
Owner: nod
Prerequisites: hand
Selectable:
Bounds: 12,17,0,-6
Mobile:
Speed: 5
Health:
HP: 70
AttackFrontal:
PrimaryWeapon: Flamethrower
PrimaryOffset: 0,-2,2,-4
FireDelay: 3
WithMuzzleFlash:
RenderInfantryProne:
IdleAnimations: idle1,idle2
#explodes somehow
E5:
Inherits: ^Infantry
Valued:
Cost: 300
Tooltip:
Name: Chem Warrior
Description: Advanced Anti-infantry unit.\n Strong vs Infantry\n Weak vs Vehicles
Icon: e5icnh
Buildable:
BuildPaletteOrder: 50
Owner: nod
Prerequisites: tmpl
Selectable:
Bounds: 12,17,0,-6
Mobile:
Speed: 4
TerrainSpeeds:
Tiberium: 100
PathingCost: 100
BlueTiberium: 100
PathingCost: 100
Health:
HP: 70
AttackFrontal:
PrimaryWeapon: Chemspray
PrimaryOffset: 0,-2,2,-9
FireDelay: 3
WithMuzzleFlash:
-PoisonedByTiberium:
RenderInfantryProne:
IdleAnimations: idle1,idle2
E6:
Inherits: ^Infantry
Valued:
Cost: 500
Tooltip:
Name: Engineer
Description: Infiltrates and captures enemy structures.\n Strong vs Nothing\n Weak vs Everything
Icon: e6icnh
Buildable:
BuildPaletteOrder: 30
Owner: gdi,nod
Selectable:
Bounds: 12,17,0,-6
Mobile:
Speed: 4
Health:
HP: 25
RevealsShroud:
Range: 4
# range value is 2 in C&C, but OpenRA renders vision slightly differently
Passenger:
PipType: Yellow
EngineerRepair:
Captures:
CaptureTypes: building, husk
-AutoTarget:
AttackMove:
JustMove: true
RenderInfantryProne:
IdleAnimations: idle1,idle2
RMBO:
Inherits: ^Infantry
Valued:
Cost: 1000
Tooltip:
Icon: rmboicnh
Name: Commando
Description: Elite sniper infantry unit.\n Strong vs Infantry, Buildings\n Weak vs Vehicles
Buildable:
BuildPaletteOrder: 50
Owner: gdi, nod
Prerequisites: techbuilding
Selectable:
Bounds: 12,17,0,-6
Voice: CommandoVoice
Mobile:
Speed: 5
Health:
HP: 100
Passenger:
PipType: Red
RevealsShroud:
Range: 7
# range value is 5 in C&C, but OpenRA renders vision slightly differently
AutoTarget:
ScanRadius: 5
C4Demolition:
C4Delay: 45
AttackFrontal:
PrimaryWeapon: Sniper
RenderInfantryProne:
IdleAnimations: idle1,idle2,idle3
AnnounceOnBuild:
AnnounceOnKill:

View File

@@ -0,0 +1,65 @@
BOAT:
Inherits: ^Ship
Valued:
Cost: 300
Tooltip:
Name: Gunboat
Icon: boaticnh
Health:
HP: 700
Armor:
Type: Heavy
Mobile:
InitialFacing:64
ROT: 4
Speed: 2
OnRails: true
RevealsShroud:
Range: 7
Turreted:
ROT: 7
AttackTurreted:
PrimaryWeapon: BoatMissile
PrimaryOffset: 0,-15,0,-4
PrimaryLocalOffset: -3,-5,0,0,0, 3,-5,0,0,0, 0,-5,0,0,0
RenderGunboat:
AutoTarget:
AllowMovement: false
WithSmoke:
LST:
Inherits: ^Ship
Valued:
Cost: 300
Tooltip:
Name: Landing Craft
Mobile:
Crushes: crate
TerrainSpeeds:
Clear: 100
Rough: 100
Road: 100
Water: 100
Tiberium: 100
BlueTiberium: 100
Beach: 100
River: 100
InitialFacing:0
ROT: 4
Speed: 10
Health:
HP: 400
Armor:
Type: Heavy
RevealsShroud:
Range: 7
RenderUnit:
RenderCargo:
-Selectable:
Cargo:
Types: Infantry, Vehicle
MaxWeight: 5
PipCount: 5
AttackMove:
JustMove: true

View File

@@ -0,0 +1,810 @@
FACT:
Inherits: ^Building
-Buildable:
Valued:
Cost: 5000
Tooltip:
Name: Construction Yard
Icon: mcvicnh
Description: Builds structures
Building:
Power: 15
Footprint: xxx xxx
Dimensions: 3,2
Health:
HP: 800
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Production:
Produces: Building,Defense
Transforms:
IntoActor: mcv
Offset:1,1
Facing: 108
BaseBuilding:
ProductionBar:
Bib:
NUKE:
Inherits: ^Building
Valued:
Cost: 300
Tooltip:
Name: Power Plant
Icon: nukeicnh
Description: Provides power for other structures
ProvidesCustomPrerequisite:
Prerequisite: anypower
Buildable:
BuildPaletteOrder: 10
Owner: gdi,nod
Building:
Power: 100
Footprint: x_ xx
Dimensions: 2,2
Health:
HP: 400
RevealsShroud:
Range: 4
# Range: 2
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Bib:
PROC:
Inherits: ^Building
Valued:
Cost: 2000
Tooltip:
Name: Tiberium Refinery
Icon: procicnh
Description: Processes raw Tiberium to sell it for cash.
Buildable:
BuildPaletteOrder: 20
Prerequisites: anypower
Owner: gdi,nod
Building:
Power: -30
Footprint: _x_ xxx ===
Dimensions: 3,3
Health:
HP: 900
RevealsShroud:
Range: 6
# Range: 4
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Bib:
TiberiumRefinery:
DockOffset: 0,2
TickLifetime: 30
TickVelocity: 1
TickRate: 125
StoresOre:
PipColor: Green
PipCount: 10
Capacity: 1000
Selectable:
Bounds: 73,72
CustomSellValue:
Value: 600
CustomBuildTimeValue:
Value: 900
FreeActor:
Actor: HARV
InitialActivity: FindResources
SpawnOffset: 1,2
Facing: 64
-RenderBuilding:
RenderBuildingRefinery:
NUK2:
Inherits: ^Building
Valued:
Cost: 700
Tooltip:
Name: Advanced Power Plant
Icon:nuk2icnh
Description: Provides more power, cheaper than the \nstandard Power Plant
ProvidesCustomPrerequisite:
Prerequisite: anypower
Buildable:
BuildPaletteOrder: 30
Prerequisites: nuke
Owner: gdi,nod
Building:
Power: 200
Footprint: x_ xx
Dimensions: 2,2
Health:
HP: 600
RevealsShroud:
Range: 4
# Range: 2
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Bib:
SILO:
Inherits: ^Building
Valued:
Cost: 150
Tooltip:
Name: Tiberium Silo
Icon: siloicnh
Description: Stores processed Tiberium
Buildable:
Queue: Defense
BuildPaletteOrder: 15
Prerequisites: proc
Owner: gdi,nod
Building:
Power: -10
Footprint: xx
Dimensions: 2,1
GivesBuildableArea:
Health:
HP: 300
RevealsShroud:
Range: 4
# Range: 2
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
RenderBuildingSilo:
StoresOre:
PipCount: 15
PipColor: Green
Capacity: 1500
Selectable:
Bounds: 49,24
-RenderBuilding:
-EmitInfantryOnSell:
Bib:
PYLE:
Inherits: ^Building
Valued:
Cost: 300
Tooltip:
Name: Barracks
Icon: pyleicnh
Description: Trains infantry
ProvidesCustomPrerequisite:
Prerequisite: barracks
Buildable:
BuildPaletteOrder: 40
Prerequisites: anypower
Owner: gdi
Building:
Power: -20
Footprint: xx xx
Dimensions: 2,2
Health:
HP: 800
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Bib:
RallyPoint:
Exit@1:
SpawnOffset: -10,2
ExitCell: 0,1
Exit@2:
SpawnOffset: 7,7
ExitCell: 1,1
Production:
Produces: Infantry
ProductionBar:
HAND:
Inherits: ^Building
Valued:
Cost: 300
Tooltip:
Name: Hand of Nod
Icon: handicnh
Description: Trains infantry
ProvidesCustomPrerequisite:
Prerequisite: barracks
Buildable:
BuildPaletteOrder: 40
Prerequisites: anypower
Owner: nod
Building:
Power: -20
Footprint: __ xx xx
Dimensions: 2,3
Health:
HP: 800
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Bib:
RallyPoint:
Exit@1:
SpawnOffset: 12,24
ExitCell: 1,2
Production:
Produces: Infantry
ProductionBar:
AFLD:
Inherits: ^Building
Valued:
Cost: 2000
Tooltip:
Name: Airstrip
Icon: afldicnh
Description: Provides a dropzone for vehicle reinforcements
ProvidesCustomPrerequisite:
Prerequisite: vehicleproduction
Buildable:
BuildPaletteOrder: 50
Prerequisites: proc
Owner: nod
Building:
Power: -30
Footprint: xxxx xxxx
Dimensions: 4,2
Health:
HP: 1000
Armor:
Type: Heavy
RevealsShroud:
Range: 7
# Range: 5
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Bib:
RallyPoint:
RallyPoint: 4,2
BelowUnits:
Exit@1:
SpawnOffset: -24,0
ExitCell: 3,1
ProductionAirdrop:
Produces: Vehicle
ProductionBar:
WEAP:
#light
Inherits: ^Building
Valued:
Cost: 2000
Tooltip:
Name: Weapons Factory
Icon: weapicnh
Description: Assembly point for vehicle reinforcements
ProvidesCustomPrerequisite:
Prerequisite: vehicleproduction
Buildable:
BuildPaletteOrder: 50
Prerequisites: proc
Owner: gdi
Building:
Power: -30
Footprint: ___ xxx ===
Dimensions: 3,3
Health:
HP: 400
Armor:
Type: Light
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Bib:
-RenderBuilding:
RenderBuildingWarFactory:
RallyPoint:
RallyPoint: 0,3
Exit@1:
SpawnOffset: -8,-8
ExitCell: 0,2
Production:
Produces: Vehicle
ProductionBar:
HPAD.GDI:
Inherits: ^Building
Valued:
Cost: 1500
CustomSellValue:
Value: 300
Tooltip:
Name: Helipad (GDI)
Icon:hpadicnh
Description: Produces and reloads helicopters
ProvidesCustomPrerequisite:
Prerequisite: hpad
RenderBuilding:
Image: hpad
Buildable:
BuildPaletteOrder: 60
Prerequisites: barracks
Owner: gdi
Building:
Power: -10
Footprint: xx xx
Dimensions: 2,2
Health:
HP: 800
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
FreeActor:
Actor: ORCA
Facing: 3
SpawnOffset: 1,2
Exit@1:
# SpawnOffset: 0,0
SpawnOffset: 0,-6
Production:
Produces: Aircraft
BelowUnits:
Reservable:
RepairsUnits:
RallyPoint:
ProductionBar:
Bib:
HPAD.NOD:
Inherits: ^Building
Valued:
Cost: 1500
CustomSellValue:
Value: 300
Tooltip:
Name: Helipad (Nod)
Icon:hpadicnh
Description: Produces and reloads helicopters
ProvidesCustomPrerequisite:
Prerequisite: hpad
RenderBuilding:
Image: hpad
Buildable:
BuildPaletteOrder: 60
Prerequisites: barracks
Owner: nod
Building:
Power: -10
Footprint: xx xx
Dimensions: 2,2
Health:
HP: 800
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
FreeActor:
Actor: HELI
SpawnOffset: 1,1
Exit@1:
SpawnOffset: 0,0
# SpawnOffset: 0,-6
Production:
Produces: Aircraft
BelowUnits:
Reservable:
RepairsUnits:
RallyPoint:
ProductionBar:
Bib:
HQ:
RequiresPower:
CanPowerDown:
Inherits: ^Building
Valued:
Cost: 1000
Tooltip:
Name: Communications Center
Icon: hqicnh
Description: Provides an overview of the battlefield.\n Requires power to operate.
Buildable:
BuildPaletteOrder: 70
Prerequisites: proc
Owner: gdi,nod
Building:
Power: -40
Footprint: x_ xx
Dimensions: 2,2
Health:
HP: 1000
RevealsShroud:
Range: 12
# Range: 10
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Bib:
ProvidesRadar:
FIX:
Inherits: ^Building
Valued:
Cost: 1200
Tooltip:
Name: Repair Facility
Icon: fixicnh
Description: Repairs vehicles and allows the\nconstruction of additional bases.
Buildable:
BuildPaletteOrder: 80
Prerequisites: vehicleproduction
Owner: gdi,nod
Building:
Power: -30
Footprint: _x_ xxx _x_
Dimensions: 3,3
Health:
HP: 800
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
BelowUnits:
Reservable:
RepairsUnits:
RallyPoint:
EYE:
#wood
RequiresPower:
CanPowerDown:
Inherits: ^Building
Valued:
Cost: 2800
Tooltip:
Name: Advanced Communications Center
Icon: eyeicnh
Description: Provides access to the Ion Cannon.\n Requires power to operate.
ProvidesCustomPrerequisite:
Prerequisite: techbuilding
Buildable:
BuildPaletteOrder: 100
Prerequisites: hq
Owner: gdi
Building:
Power: -200
Footprint: x_ xx
Dimensions: 2,2
Health:
HP: 1000
RevealsShroud:
Range: 12
# Range: 10
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Bib:
ProvidesRadar:
IonCannonPower:
Image: ionicnh
ChargeTime: 280
Description: Ion Cannon
LongDesc: Initiate an Ion Cannon strike.\nApplies instant damage to a small area.
BeginChargeSound: ionchrg1.aud
EndChargeSound: ionredy1.aud
LaunchSound: ion1.aud
SelectTargetSound: select1.aud
SupportPowerChargeBar:
TMPL:
RequiresPower:
CanPowerDown:
Inherits: ^Building
Valued:
Cost: 3000
Tooltip:
Name: Temple of Nod
Icon: tmplicnh
Description: Place of worship and secret missile silo.\nRequires power to operate.
ProvidesCustomPrerequisite:
Prerequisite: techbuilding
Buildable:
BuildPaletteOrder: 100
Prerequisites: hq
Owner: nod
Building:
Power: -150
Footprint: ___ xxx xxx
Dimensions: 3,3
Health:
HP: 2000
Armor:
Type: Light
RevealsShroud:
Range: 6
# Range: 4
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from what we want for now, to properly emulate
Bib:
NukePower:
Image: atomicnh
ChargeTime: 405
Description: Nuclear Strike
LongDesc: Launch a tactical nuke.\nApplies heavy damage over a large area.
BeginChargeSound:
EndChargeSound: nukavail.aud
SelectTargetSound: select1.aud
LaunchSound: nukemisl.aud
MissileWeapon: atomic
SupportPowerChargeBar:
OBLI:
RequiresPower:
Inherits: ^Building
Valued:
Cost: 1500
Tooltip:
Name: Obelisk of Light
Icon:obliicnh
Description: Advanced base defense. Requires power\nto operate.\n Strong vs Tanks, Infantry\n Weak vs Aircraft
Buildable:
Queue: Defense
BuildPaletteOrder: 60
Prerequisites: hq
Owner: nod
Building:
Power: -150
Footprint: _ x
Dimensions: 1,2
-GivesBuildableArea:
Health:
HP: 400
Armor:
Type: Light
RevealsShroud:
Range: 9
# Range: 5
# RevealShroud range was set to equal 1 + its weapon range (due to possible rendering issues with shroud for OpenRA).
# (Range of Obelisk laser is 7.5)
RenderBuildingCharge:
ChargeAudio: obelpowr.aud
AttackTurreted:
PrimaryWeapon: Laser
PrimaryOffset: 0,0,-2,-17
FireDelay: 8
Turreted:
ROT:255
AutoTarget:
-RenderBuilding:
RenderRangeCircle:
-EmitInfantryOnSell:
# RenderDetectionCircle:
DetectCloaked:
Range: 5
CYCL:
Inherits: ^Wall
Valued:
Cost: 75
# CustomSellValue:
# Value: 0
Tooltip:
Name: Chain Link Barrier
Icon:cyclicnh
Description: Stops infantry and blocks enemy fire.\nCan be crushed by tanks.
Buildable:
Queue: Defense
BuildPaletteOrder: 20
Prerequisites: fact
Owner: gdi, nod
Health:
HP: 50
Armor:
Type: Wall
SBAG:
Inherits: ^Wall
Valued:
Cost: 50
# CustomSellValue:
# Value: 0
Tooltip:
Name: Sandbag Barrier
Icon:sbagicnh
Description: Stops infantry and blocks enemy fire.\nCan be crushed by tanks.
Buildable:
Queue: Defense
BuildPaletteOrder: 20
Prerequisites: fact
Owner: gdi, nod
Health:
HP: 25
Armor:
Type: Wall
BRIK:
Inherits: ^HeavyWall
Valued:
Cost: 100
# CustomSellValue:
# Value: 0
Tooltip:
Name: Concrete Barrier
Icon:brikicnh
Description: Stop units and blocks enemy fire.
Buildable:
Queue: Defense
BuildPaletteOrder: 30
Prerequisites: vehicleproduction
Owner: gdi,nod
Health:
HP: 200
Armor:
Type: Concrete
Wall:
CrushClasses: heavywall
-CrushSound:
SoundOnDamageTransition:
DestroyedSound: crumble.aud
GUN:
Inherits: ^Building
Valued:
Cost: 600
Tooltip:
Name: Turret
Icon: gunicnh
Description: Anti-Armor base defense.\n Strong vs Tanks\n Weak vs Infantry, Aircraft
Buildable:
Queue: Defense
BuildPaletteOrder: 40
Prerequisites: barracks
Owner: nod
Building:
Power: -20
-GivesBuildableArea:
Health:
HP: 400
Armor:
Type: Heavy
RevealsShroud:
Range: 7
# Range: 5
# RevealShroud range was set to equal 1 + its weapon range (6) (due to possible rendering issues with shroud for OpenRA)
Turreted:
ROT: 12
InitialFacing: 50
RenderBuildingTurreted:
AttackTurreted:
PrimaryWeapon: TurretGun
PrimaryLocalOffset: 0,4,0,-2,0
AutoTarget:
-AutoTargetIgnore:
-RenderBuilding:
-DeadBuildingState:
RenderRangeCircle:
# RenderDetectionCircle:
DetectCloaked:
Range: 5
SAM:
Inherits: ^Building
RequiresPower:
Valued:
Cost: 750
Tooltip:
Name: SAM Site
Icon: samicnh
Description: Anti-Air base defense.\n Strong vs Aircraft\n Weak vs Infantry, Tanks
Buildable:
Queue: Defense
BuildPaletteOrder: 50
Prerequisites: hand
Owner: nod
Building:
Power: -20
Footprint: xx
Dimensions: 2,1
-GivesBuildableArea:
Health:
HP: 400
Armor:
Type: Heavy
RevealsShroud:
# Range: 3
Range: 5
# Range set to arbitrary length more in line with what you would expect from a guard tower. (SAM missile's range is 15)
Turreted:
ROT: 7
InitialFacing: 0
RenderBuildingTurreted:
AttackPopupTurreted:
PrimaryWeapon: SAMMissile
WithMuzzleFlash:
AutoTarget:
-RenderBuilding:
RenderRangeCircle:
GTWR:
#wood
Inherits: ^Building
Valued:
Cost: 500
Tooltip:
Name: Guard Tower
Icon: gtwricnh
Description: Basic defensive structure.\n Strong vs Infantry, Light Vehicles\n Weak vs Tanks, Aircraft
Buildable:
Queue: Defense
BuildPaletteOrder: 50
Prerequisites: barracks
Owner: gdi
Building:
Power: -10
-GivesBuildableArea:
Health:
HP: 400
RevealsShroud:
Range: 6
# Range: 3
# RevealShroud range was set to equal 1 + its weapon range (due to possible rendering issues with shroud for OpenRA)
AttackTurreted:
PrimaryWeapon: HighV
PrimaryOffset: 0,0,0,-6
PrimaryLocalOffset: 0,-6,0,0,0
AutoTarget:
-AutoTargetIgnore:
DetectCloaked:
Range: 3
# RenderDetectionCircle:
RenderRangeCircle:
WithMuzzleFlash:
Turreted:
ROT:255
ATWR:
Inherits: ^Building
RequiresPower:
Valued:
Cost: 1000
Tooltip:
Name: Advanced Guard Tower
Icon: atwricnh
Description: Anti-armor defensive structure.\n Strong vs Light Vehicles, Tanks\n Weak vs Infantry
Buildable:
Queue: Defense
BuildPaletteOrder: 60
Prerequisites: hq
Owner: gdi
Building:
Power: -20
Footprint: _ x
Dimensions: 1,2
-GivesBuildableArea:
Health:
HP: 600
Armor:
Type: Light
RevealsShroud:
Range: 7
# Range: 4
# RevealShroud range was set to equal its weapon range +1 (due to possible rendering issues with shroud for OpenRA)
AttackTurreted:
PrimaryWeapon: TowerMissle
PrimaryOffset: 0,0,5,2
PrimaryLocalOffset: 7,-7,0,0,-25, -7,-7,0,0,25
Turreted:
ROT:255
AutoTarget:
-AutoTargetIgnore:
DetectCloaked:
Range: 4
# custom prerequisites:
BARRACKS:
Tooltip:
Name: Infantry Production
Description: Infantry Production
VEHICLEPRODUCTION:
Tooltip:
Name: Vehicle Production
Description: Vehicle Production
ANYPOWER:
Tooltip:
Name: Power Plant
Description: Power Plant
HPAD:
Tooltip:
Name: Helipad
Description: Helipad

View File

@@ -0,0 +1,245 @@
Player:
TechTree:
ClassicProductionQueue@Building:
Type: Building
BuildSpeed: .4
LowPowerSlowdown: 3
QueuedAudio: Building
ReadyAudio: ConstructionComplete
SpeedUp: 0.25
MaxSpeedUp: 0.75
ClassicProductionQueue@Defense:
Type: Defense
BuildSpeed: .4
LowPowerSlowdown: 3
QueuedAudio: Building
ReadyAudio: ConstructionComplete
SpeedUp: 0.25
MaxSpeedUp: 0.75
ClassicProductionQueue@Vehicle:
Type: Vehicle
BuildSpeed: .4
LowPowerSlowdown: 3
SpeedUp: 0.25
MaxSpeedUp: 0.75
ClassicProductionQueue@Infantry:
Type: Infantry
BuildSpeed: .4
LowPowerSlowdown: 3
SpeedUp: 0.25
MaxSpeedUp: 0.75
ClassicProductionQueue@Aircraft:
Type: Aircraft
BuildSpeed: .4
LowPowerSlowdown: 3
SpeedUp: 0.25
MaxSpeedUp: 0.75
PlaceBuilding:
SupportPowerManager:
ConquestVictoryConditions:
PowerManager:
AllyRepair:
PlayerResources:
InitialCash: 5000
AdviceInterval: 500
ActorGroupProxy:
DeveloperMode:
HackyAI@Default:
Name:Easy AI
BuildingFractions:
proc: 20%
nuke: 9%
pyle: 5%
hand: 5%
hq: 4%
nuk2: 9%
weap: 9%
afld: 9%
gtwr: 5%
gun: 5%
atwr: 9%
obli: 7%
sam: 7%
eye: 1%
tmpl: 1%
silo: 4%
fix: 1%
hpad: 2%
UnitsToBuild:
e1: 14%
e3: 7%
e2: 10%
e4: 7%
e5: 5%
harv: 1%
bggy: 5%
bike: 40%
ltnk: 25%
ftnk: 10%
arty: 60%
stnk: 40%
jeep: 5%
mtnk: 20%
msam: 40%
htnk: 50%
heli: 5%
orca: 5%
PlayerColorPalette:
BasePalette: terrain
RemapIndex: 176, 178, 180, 182, 184, 186, 189, 191, 177, 179, 181, 183, 185, 187, 188, 190
DebugResourceCash:
DebugResourceOre:
DebugResourceOreCapacity:
Shroud:
BaseAttackNotifier:
PlayerStatistics:
World:
OpenWidgetAtGameStart:
Widget: INGAME_ROOT
ObserverWidget: OBSERVER_ROOT
CloakPaletteEffect:
ScreenShaker:
WaterPaletteRotation:
NukePaletteEffect:
BuildingInfluence:
ChooseBuildTabOnSelect:
BridgeLayer:
Bridges: bridge1, bridge2, bridge3, bridge4
CrateSpawner:
Minimum: 1
Maximum: 3
SpawnInterval: 120
WaterChance: 0
PaletteFromCurrentTileset@terrain:
Name: terrain
ShadowIndex: 4
PaletteFromCurrentTileset@static:
Name: staticterrain
ShadowIndex: 4
PaletteFromFile@chrome:
Name: chrome
Filename: temperat.pal
ShadowIndex: 3
PaletteFromFile@effect:
Name: effect
Filename: temperat.pal
ShadowIndex: 4
PaletteFromFile@colorpicker:
Name: colorpicker
Filename: temperat.pal
ShadowIndex: 4
AllowModifiers: false
PaletteFromRGBA@shadow:
Name: shadow
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@cloak:
Name: cloak
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@highlight:
Name: highlight
R: 255
G: 255
B: 255
A: 128
PaletteFromRGBA@disabled:
Name: disabled
R: 0
G: 0
B: 0
A: 180
ShroudPalette:
FogPalette:
Country@gdi:
Name: GDI
Race: gdi
Country@nod:
Name: Nod
Race: nod
BibLayer:
ResourceLayer:
ResourceClaimLayer:
ResourceType@green-tib:
ResourceType: 1
Palette: staticterrain
TerrainType: Tiberium
SpriteNames: ti1,ti2,ti3,ti4,ti5,ti6,ti7,ti8,ti9,ti10,ti11,ti12
ValuePerUnit: 35
Name: Tiberium
PipColor: Green
AllowedTerrainTypes: Clear,Road
AllowUnderActors: false
ResourceType@blue-tib:
ResourceType: 2
Palette: staticterrain
TerrainType: BlueTiberium
SpriteNames: bti1,bti2,bti3,bti4,bti5,bti6,bti7,bti8,bti9,bti10,bti11,bti12
ValuePerUnit: 75
Name: Blue Tiberium
PipColor: Blue
AllowedTerrainTypes: Clear,Road
AllowUnderActors: false
SmudgeLayer@SCORCH:
Type:Scorch
SmokePercentage:50
Types:sc1,sc2,sc3,sc4,sc5,sc6
Depths:1,1,1,1,1,1
SmudgeLayer@CRATER:
Type:Crater
Types:cr1,cr2,cr3,cr4,cr5,cr6
Depths:5,5,5,5,5,5
SpawnMapActors:
CreateMPPlayers:
MPStartLocations:
SpawnMPUnits:
SpatialBins:
BinSize: 4
Shroud:
PathFinder:
ValidateOrder:
CRATE:
Tooltip:
Name: Crate
Crate:
Lifetime: 120
TerrainTypes: Clear, Rough, Road, Tiberium, BlueTiberium, Beach
GiveCashCrateAction:
Amount: 2000
SelectionShares: 20
UseCashTick: yes
RevealMapCrateAction:
SelectionShares: 1
Effect: reveal-map
LevelUpCrateAction:
SelectionShares: 20
CloakCrateAction:
SelectionShares: 5
InitialDelay: 15
CloakDelay: 125
CloakSound: trans1.aud
UncloakSound: appear1.aud
Effect: cloak
GiveMcvCrateAction:
SelectionShares: 2
NoBaseSelectionShares: 9001
Unit: mcv
RenderSimple:
BelowUnits:
ProximityCaptor:
Types:Crate
Passenger:
mpspawn:
Waypoint:
RenderEditorOnly:
waypoint:
Waypoint:
RenderEditorOnly:

View File

@@ -0,0 +1,49 @@
# Oil Derrick
V19:
Inherits: ^TechBuilding
CashTrickler:
Building:
Footprint: x
Dimensions: 1,1
Tooltip:
Name: Oil Derrick
LeavesHusk:
HuskActor: V19.Husk
V19.Husk:
Inherits: ^CivBuildingHusk
WithFire:
Building:
Footprint: x
Dimensions: 1,1
Tooltip:
Name: Oil Derrick (Destroyed)
# Hospital
HOSP:
Inherits: ^CivBuilding
Building:
Footprint: xx xx
Dimensions: 2,2
Tooltip:
Name: Hospital
RepairsUnits:
# Bio Lab
BIO:
Inherits: ^TechBuilding
Building:
Footprint: xx xx
Dimensions: 2,2
Tooltip:
Name: Biological Lab
# Prison / Tech Center
MISS:
Inherits: ^CivBuilding
RenderBuilding:
Building:
Footprint: xxx xxx
Dimensions: 3,2
Tooltip:
Name: Tech Center

View File

@@ -0,0 +1,139 @@
SPLIT2:
Inherits: ^Tree
RenderBuilding:
Palette: staticterrain
SeedsResource:
ResourceType:Tiberium
Interval: 55
Tooltip:
Name: Blossom Tree
RadarColorFromTerrain:
Terrain: Tiberium
SPLIT3:
Inherits: ^Tree
RenderBuilding:
Palette: staticterrain
SeedsResource:
ResourceType:Tiberium
Interval: 55
Tooltip:
Name: Blossom Tree
RadarColorFromTerrain:
Terrain: Tiberium
ROCK1:
Inherits: ^Rock
ROCK2:
Inherits: ^Rock
ROCK3:
Inherits: ^Rock
ROCK4:
Inherits: ^Rock
ROCK5:
Inherits: ^Rock
ROCK6:
Inherits: ^Rock
ROCK7:
Inherits: ^Rock
T01:
Inherits: ^Tree
T02:
Inherits: ^Tree
T03:
Inherits: ^Tree
T04:
Inherits: ^Tree
T05:
Inherits: ^Tree
T06:
Inherits: ^Tree
T07:
Inherits: ^Tree
T08:
Inherits: ^Tree
Building:
Footprint: x_
Dimensions: 2,1
T09:
Inherits: ^Tree
Building:
Footprint: x_
Dimensions: 2,1
T10:
Inherits: ^Tree
Building:
Footprint: __ xx
T11:
Inherits: ^Tree
Building:
Footprint: __ xx
T12:
Inherits: ^Tree
T13:
Inherits: ^Tree
T14:
Inherits: ^Tree
Building:
Footprint: ___ xx_
Dimensions: 3,2
T15:
Inherits: ^Tree
Building:
Footprint: ___ xx_
Dimensions: 3,2
T16:
Inherits: ^Tree
T17:
Inherits: ^Tree
Building:
Footprint: ___ xx_
Dimensions: 3,2
T18:
Inherits: ^Tree
TC01:
Inherits: ^Tree
Building:
Footprint: ___ xx_
Dimensions: 3,2
TC02:
Inherits: ^Tree
Building:
Footprint: _x_ xx_
Dimensions: 3,2
TC03:
Inherits: ^Tree
Building:
Footprint: xx_ xx_
Dimensions: 3,2
TC04:
Inherits: ^Tree
Building:
Footprint: ____ xxx_ x___
Dimensions: 4,3
TC05:
Inherits: ^Tree
Building:
Footprint: __x_ xxx_ _xx_
Dimensions: 4,3

View File

@@ -0,0 +1,488 @@
MCV:
Inherits: ^Tank
Valued:
Cost: 5000
Tooltip:
Name: Mobile Construction Vehicle
Icon: mcvicnh
Description: Deploys into another Construction Yard.\n Unarmed
Buildable:
BuildPaletteOrder: 70
Prerequisites: fix
Owner: gdi,nod
Selectable:
Priority: 3
Mobile:
Speed: 12
Health:
HP: 600
Armor:
Type: Light
RevealsShroud:
Range: 4
# Range: 2
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Transforms:
IntoActor: fact
Offset:-1,-1
Facing: 108
TransformSounds: constru2.aud, hvydoor1.aud
NoTransformSounds: deploy1.aud
RenderUnit:
MustBeDestroyed:
AttackMove:
JustMove:true
BaseBuilding:
-AcceptsCloakCrate:
Explodes:
Weapon: McvExplode
HARV:
Inherits: ^Tank
Valued:
Cost: 1400
Tooltip:
Name: Harvester
Icon: harvicnh
Description: Collects Tiberium for processing.\n Unarmed
Buildable:
BuildPaletteOrder: 10
Prerequisites: proc
Owner: gdi,nod
Selectable:
Priority: 7
Bounds: 44,44
Harvester:
Resources: Tiberium, Blue Tiberium
PipCount: 7
Capacity: 28
UnloadTicksPerBale: 16
FullyLoadedSpeed: 100%
Mobile:
Speed: 12
Health:
HP: 600
Armor:
Type: Light
RevealsShroud:
Range: 4
# Range: 2
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
RenderUnit:
AttackMove:
JustMove:true
Explodes:
Weapon: McvExplode
JEEP:
Inherits: ^Vehicle
Valued:
Cost: 400
Tooltip:
Name: Hum-Vee
Icon: jeepicnh
Description: Fast scout & anti-infantry vehicle.\n Strong vs Infantry\n Weak vs Tanks, Aircraft
Buildable:
BuildPaletteOrder: 20
Prerequisites: weap
Owner: gdi
Mobile:
ROT: 10
Speed: 30
Health:
HP: 150
Armor:
Type: Light
RevealsShroud:
Range: 4
# Range: 2
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 10
AttackTurreted:
PrimaryWeapon: MachineGun
PrimaryOffset: 0,2,0,-4
WithMuzzleFlash:
RenderUnitTurreted:
AutoTarget:
APC:
Inherits: ^Tank
Valued:
Cost: 700
Tooltip:
Name: Armored Personnel Carrier
Icon: apcicnh
Description: Armored infantry transport and mobile AA\n Strong vs Aircraft\n Weak vs Tanks, Infantry
Buildable:
BuildPaletteOrder: 30
Prerequisites: pyle
Owner: gdi
Mobile:
ROT: 5
Speed: 26
Health:
HP: 200
Armor:
Type: Heavy
RevealsShroud:
Range: 6
# Range: 4
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 10
AttackTurreted:
PrimaryWeapon: MachineGun
PrimaryOffset: 0,0,0,0
WithMuzzleFlash:
RenderUnitTurreted:
AutoTarget:
Cargo:
Types: Infantry
MaxWeight: 5
PipCount: 5
UnloadFacing: 220
BGGY:
Inherits: ^Vehicle
Valued:
Cost: 300
Tooltip:
Name: Nod Buggy
Icon: bggyicnh
Description: Fast scout & anti-infantry vehicle.\n Strong vs Infantry\n Weak vs Tanks, Aircraft
Buildable:
BuildPaletteOrder: 20
Prerequisites: afld
Owner: nod
Mobile:
ROT: 10
Speed: 30
Health:
HP: 140
Armor:
Type: Light
RevealsShroud:
Range: 4
# Range: 2
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 10
AttackTurreted:
PrimaryWeapon: MachineGun
PrimaryOffset: 0,1,0,-3
WithMuzzleFlash:
RenderUnitTurreted:
AutoTarget:
BIKE:
Inherits: ^Vehicle
Valued:
Cost: 500
Tooltip:
Name: Recon Bike
Icon: bikeicnh
Description: Fast scout vehicle, armed with \nrockets.\n Strong vs Vehicles, Aircraft\n Weak vs Infantry
Buildable:
BuildPaletteOrder: 30
Prerequisites: afld
Owner: nod
Mobile:
ROT: 10
Speed: 40
Health:
HP: 160
Armor:
Type: Wood
RevealsShroud:
Range: 4
# Range: 2
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
AttackFrontal:
PrimaryWeapon: BikeRockets
PrimaryOffset: 0,0,0,-2
PrimaryLocalOffset: -4,0,0,0,25, 4,0,0,0,-25
RenderUnit:
AutoTarget:
ARTY:
Inherits: ^Tank
Valued:
Cost: 450
Tooltip:
Name: Artillery
Icon:artyicnh
Description: Long-range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft
Buildable:
BuildPaletteOrder: 40
Prerequisites: hq
Owner: nod
Mobile:
ROT: 2
Speed: 12
Health:
HP: 75
Armor:
Type: Light
RevealsShroud:
Range: 6
# Range: 4
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
AttackFrontal:
PrimaryWeapon: ArtilleryShell
PrimaryOffset: 0,-7,0,-3
RenderUnit:
AutoTarget:
Explodes:
Weapon: UnitExplode
EmptyWeapon: UnitExplode
FTNK:
Inherits: ^Tank
Valued:
Cost: 800
Tooltip:
Name: Flame Tank
Icon: ftnkicnh
Description: Heavily armored flame-throwing vehicle.\n Strong vs Infantry, Buildings\n Weak vs Aircraft
Buildable:
BuildPaletteOrder: 50
Prerequisites: hq
Owner: nod
Mobile:
ROT: 5
Speed: 18
Health:
HP: 300
Armor:
Type: Heavy
RevealsShroud:
Range: 6
# Range: 4
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
AttackFrontal:
PrimaryWeapon: BigFlamer
PrimaryOffset: 0,-5,3,2
PrimaryLocalOffset: 2,0,0,0,0, -2,0,0,0,0
RenderUnit:
AutoTarget:
WithMuzzleFlash:
Explodes:
Weapon: BigNapalmExplode
EmptyWeapon: BigNapalmExplode
LTNK:
Inherits: ^Tank
Valued:
Cost: 600
Tooltip:
Name: Light Tank
Icon: ltnkicnh
Description: Light Tank, good for scouting.\n Strong vs Light Vehicles\n Weak vs Tanks, Aircraft
Buildable:
BuildPaletteOrder: 30
Prerequisites: afld
Owner: nod
Mobile:
Speed: 18
Health:
HP: 300
Armor:
Type: Heavy
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 5
AttackTurreted:
PrimaryWeapon: 70mm
PrimaryRecoil: 2
PrimaryRecoilRecovery: 0.4
PrimaryLocalOffset: 0,3,0,-2,0
RenderUnitTurreted:
AutoTarget:
MTNK:
Inherits: ^Tank
Valued:
Cost: 800
Tooltip:
Name: Medium Tank
Icon: mtnkicnh
Description: General-Purpose GDI Tank.\n Strong vs Tanks, Light Vehicles\n Weak vs Infantry, Aircraft
Buildable:
BuildPaletteOrder: 30
Prerequisites: weap
Owner: gdi
Mobile:
Speed: 18
Health:
HP: 400
Armor:
Type: Heavy
RevealsShroud:
Range: 5
# Range: 3
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 5
AttackTurreted:
# PrimaryWeapon: 120mm
PrimaryWeapon: 105mm
PrimaryRecoil: 3
PrimaryRecoilRecovery: 0.6
PrimaryLocalOffset: 0,0,0,-1,0
RenderUnitTurreted:
AutoTarget:
Selectable:
Bounds: 34,34
HTNK:
Inherits: ^Tank
Valued:
Cost: 1500
Tooltip:
Name: Mammoth Tank
Icon: htnkicnh
Description: Heavily armored GDI Tank.\n Strong vs Everything
Buildable:
BuildPaletteOrder: 60
Prerequisites: fix
Owner: gdi
Mobile:
Crushes: wall, heavywall, crate, infantry
Speed: 12
Health:
HP: 600
Armor:
Type: Heavy
RevealsShroud:
Range: 6
# Range: 4
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 2
AttackTurreted:
PrimaryWeapon: 120mmDual
SecondaryWeapon: MammothMissiles
PrimaryLocalOffset: -5,-5,0,-10,0, 5,-5,0,-10,0
SecondaryLocalOffset: -9,2,0,0,25, 9,2,0,0,-25
PrimaryRecoil: 4
SecondaryRecoil: 1
PrimaryRecoilRecovery: 1
RenderUnitTurreted:
AutoTarget:
SelfHealing:
Ticks: 10
DamageCooldown: 200
Explodes:
Weapon: MammothExplode
Selectable:
Bounds: 40,38,0,-3
MSAM:
Inherits: ^Tank
Valued:
Cost: 800
Tooltip:
Name: Rocket Launcher
Icon: msamicnh
Description: Long range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft
Buildable:
BuildPaletteOrder: 50
Prerequisites: techbuilding
Owner: gdi, nod
Mobile:
Speed: 18
Health:
HP: 100
Armor:
Type: Light
RevealsShroud:
Range: 6
# Range: 4
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 255
AttackFrontal:
PrimaryWeapon: 227mm
PrimaryOffset: 0,6,0,-3
PrimaryLocalOffset: 3,-5,0,0,0, -3,-5,0,0,0
RenderUnitTurretedAim:
AutoTarget:
Explodes:
Weapon: MammothExplode
MLRS:
Inherits: ^Tank
Valued:
Cost: 750
Tooltip:
Name: SSM Launcher
Icon: mlrsicnh
Description: Long range artillery.\n Strong vs Infantry, Aircraft\n Weak vs Tanks, Aircraft
Buildable:
BuildPaletteOrder: 60
Prerequisites: obli
Owner: nod
Mobile:
Speed: 18
Health:
HP: 120
Armor:
Type: Light
RevealsShroud:
Range: 6
# Range: 4
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Turreted:
ROT: 5
AttackFrontal:
PrimaryWeapon: HonestJohn
SecondaryWeapon: HonestJohn
PrimaryOffset: 0,3,0,-3
PrimaryLocalOffset: -4,0,0,0,0
SecondaryLocalOffset: 4,0,0,0,0
# AlignIdleTurrets: true
RenderUnitTurretedAim:
AutoTarget:
Explodes:
Weapon: BigNapalmExplode
EmptyWeapon: BigNapalmExplode
STNK:
Inherits: ^Tank
Valued:
Cost: 900
Tooltip:
Name: Stealth Tank
Icon: stnkicnh
Description: Missile tank that can bend light around \nitself to become invisible\n Strong vs Infantry, Aircraft\n Weak vs Tanks
Buildable:
BuildPaletteOrder: 90
Prerequisites: hq
Owner: nod
Mobile:
Speed: 30
Health:
HP: 110
Armor:
Type: Light
RevealsShroud:
Range: 6
# Range: 4
# In practice, it seems that OpenRA renders vision range differently. Will set at +2 from C&C Gold values for now to properly emulate.
Cloak:
InitialDelay: 125
CloakDelay: 125
CloakSound: trans1.aud
UncloakSound: appear1.aud
AttackFrontal:
PrimaryWeapon: 227mm.stnk
PrimaryOffset: 0,-5,0,-3
PrimaryLocalOffset: 1,0,0,0,0, -1,0,0,0,0
RenderUnit:
AutoTarget:
InitialStance: HoldFire
TargetableUnit:

View File

@@ -0,0 +1,31 @@
lst:
idle:
Start: 0
Facings: 4
unload:
Start: 0
Facings: 4
boat:
left:
Start: 0
Facings: 32
left-damaged:
Start: 32
left-critical:
Start: 64
left-wake: wake
Start: 6
Length: 6
right:
Start: 96
Facings: 32
right-damaged:
Start: 128
Facings: 32
right-critical:
Start: 160
Facings: 32
right-wake: wake
Start: 0
Length: 6

View File

@@ -0,0 +1,251 @@
fire:
1: fire1
Start: 0
Length: *
2: fire2
Start: 0
Length: *
120mm:
idle:
Start: 0
smoke_m:
idle:
Start: 0
Length: *
loop:
Start: 49
Length: 42
end:
Start: 0
Length: 26
laserfire:
idle:veh-hit3
Start: 0
Length: *
dragon:
idle:
Start: 0
Facings: 32
smokey:
idle:
Start: 0
Length: *
bomb:
idle:
Start: 0
Length: *
missile:
idle:
Start: 0
Facings: 32
patriot:
idle:
Start: 0
Facings: 32
explosion:
1: piff
Start: 0
Length: *
2: piffpiff
Start: 0
Length: *
3: napalm2 #napalm explosion
Start: 0
Length: *
4: veh-hit3 #small vehicle explosion
Start: 0
Length: *
5: veh-hit2 #grenadier pop - like artillery explosion but smaller
Start: 0
Length: *
1w: piff
Start: 0
Length: *
2w: piffpiff
Start: 0
Length: *
3w: napalm2
Start: 0
Length: *
4w: veh-hit3
Start: 0
Length: *
5w: veh-hit2
Start: 0
Length: *
8: art-exp1 #artillery explosion
Start: 0
Length: *
big_napalm: napalm3 #biggest napalm explosion
Start: 0
Length: *
veh1: veh-hit1 # resembles building explosion, but smaller. For Orcas, etc.
Start: 0
Length: *
building: fball1
Start: 0
Length: *
6: atomsfx
Start: 0
Length: *
6w: atomsfx
Start: 0
Length: *
chemball: chemball
Start: 0
Length: *
rank:
rank:
Start: 0
Length: *
rallypoint:
flag:flagfly
Start: 0
Length: *
circles:fpls
Start: 0
Length: *
select:
repair:
Start: 2
allyrepair:
repair:
Start: 0
Length: *
Tick: 160
crate:
idle: wcrate
Start: 0
land: wcrate
Start: 0
crate-effects:
airstrike: deviator
Start: 0
Length: *
nuke: missile2
Start: 0
Length: *
dollar: dollar
Start: 0
Length: *
reveal-map: radarcrate
Start: 0
Length: *
hide-map: empulse
Start: 0
Length: *
heal: healcrate
Start: 0
Length: *
mine: mine
Start: 0
Length: *
redskull: rapid
Start: 0
Length: *
cloak: cloakcrate
Start: 0
Length: *
levelup: levelup
Start: 0
Length: *
Tick: 200
miss:
idle:
Start: 0
damaged-idle:
Start: 2
atomicup:
idle:
Start: 0
Length: *
atomicdn:
idle:
Start: 0
Length: *
atomic:
up: atomicup
Start: 0
Length: *
down: atomicdn
Start: 0
Length: *
ionsfx:
idle:
Start: 0
Length: *
bomblet:
idle:
Start: 0
Length: *
mpspawn:
idle:
Start: 0
Length: *
waypoint:
idle:
Start: 0
Length: *
clock:
idle: hclock
Start: 0
Length: *
pips:
pip-empty:
Start: 0
pip-green:
Start: 1
pip-yellow:
Start: 2
pip-gray:
Start: 3
pip-red:
Start: 4
pip-blue:
Start: 5
groups: pdigits
Start: 0
Length: *
tag-primary: hpips
Start: 2
overlay:
build-valid:
Start: 0
build-invalid:
Start: 1
target-select:
Start: 2
target-valid:
Start: 0
target-invalid:
Start: 1
moveflsh:
idle:
Start: 0
Length: *

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@@ -0,0 +1,755 @@
# cleaned up the file a bit.
# is in order from simple to advanced: infantry, vehicles, tanks, air, sea, buildings, superweapons, misc.
Pistol:
ROF: 7
Range: 1.75
Report: GUN18
Projectile: Bullet
Speed: 100
Warhead:
Spread: 3
Versus:
None: 100%
Wood: 50%
Light: 50%
Heavy: 25%
Concrete: 25%
InfDeath: 2
Explosion: 1
Damage: 1
M16:
ROF: 20
Range: 2
Report: MGUN2
ValidTargets: Ground, -Wall
Projectile: Bullet
Speed: 100
Warhead:
Spread: 3
Versus:
None: 100%
Wood: 50%
Light: 50%
Heavy: 25%
Conrete: 25%
Explosion: 1
InfDeath: 1
Damage: 15
Rockets:
ROF: 60
Range: 4
Report: BAZOOK1
ValidTargets: Ground, Air
Projectile: Missile
Arm: 0
High: yes
Shadow: no
Proximity: yes
Inaccuracy: 3
Image: DRAGON
ROT: 10
Trail: smokey
Speed: 25
# ^ 35 in 0504
RangeLimit: 40
Warhead:
Spread: 3
Versus:
None: 30%
Wood: 75%
Light: 75%
Heavy: 100%
Concrete: 50%
InfDeath: 4
Explosion: 4
ImpactSound: xplos
SmudgeType: Crater
Damage: 30
Grenade:
ROF: 50
Range: 3.5
Projectile: Bullet
Speed: 8
High: yes
Angle: .1
# weapon is "lobbed" in C&C. Looks close enough.
Inaccuracy: 5
# no information on inaccuracy in cncrules.ini
Image: BOMB
Warhead:
Spread: 6
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
Concrete: 100%
InfDeath: 3
Explosion: 5
ImpactSound: xplos
SmudgeType: Crater
Damage: 50
Flamethrower:
ROF: 50
Range: 2
Report: FLAMER2
Projectile: Bullet
Speed: 100
Warhead:
Spread: 8
Versus:
None: 90%
Wood: 100%
Light: 60%
Heavy: 25%
Concrete: 50%
InfDeath: 5
ImpactSound: flamer2
SmudgeType: Scorch
Damage: 35
Chemspray:
ROF: 70
Range: 2
Report: FLAMER2
Projectile: Bullet
Speed: 100
Warhead:
Damage: 80
Spread: 6
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
Concrete: 100%
InfDeath: 6
# ^InfDeath was 2 in original. Chemical death looks kind of cooler, though.
SmudgeType: Scorch
ImpactSound: xplos
Sniper:
Report: RAMGUN2
ROF: 40
Range: 5.5
Projectile: Bullet
Speed: 100
Warhead:
Damage: 100
Spread: 1
Versus:
None: 100%
Wood: 5%
Light: 5%
Heavy: 5%
Concrete: 5%
InfDeath: 1
MachineGun:
ROF: 30
Range: 4
Report: MGUN11
Projectile: Bullet
Speed: 100
Warhead:
Spread: 3
Versus:
None: 100%
Wood: 50%
Light: 50%
Heavy: 25%
Concrete: 25%
InfDeath: 2
Explosion: 1
Damage: 15
BikeRockets:
ROF: 60
Range: 4
Report: BAZOOK1
ValidTargets: Ground, Air
Projectile: Missile
Arm: 2
High: yes
Shadow: no
Proximity: yes
Inaccuracy: 3
Image: DRAGON
ROT: 5
Trail: smokey
Speed: 25
RangeLimit: 40
Warhead:
Spread: 3
Versus:
None: 30%
Wood: 75%
Light: 75%
Heavy: 100%
Concrete: 50%
InfDeath: 4
Explosion: 4
ImpactSound: xplos
SmudgeType: Crater
Damage: 30
BigFlamer:
ROF: 42
Range: 2
Report: FLAMER2
Projectile: Bullet
Speed: 100
Burst:2
BurstDelay: 8
Warhead:
Spread: 8
Versus:
None: 90%
Wood: 100%
Light: 60%
Heavy: 25%
Concrete: 50%
InfDeath: 5
# Explosion: 3
ImpactSound: flamer2
SmudgeType: Scorch
Damage: 50
ArtilleryShell:
ROF: 65
Range: 6
MinRange: 2
Report: TNKFIRE2
Projectile: Bullet
Speed: 12
High: yes
Angle: .09
Inaccuracy: 30
Image: 120MM
Warhead:
Damage: 150
Spread: 6
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
Concrete: 100%
InfDeath: 3
Explosion: 8
SmudgeType: Crater
ImpactSound: XPLOSML2
70mm:
ROF: 60
Range: 4
Report: TNKFIRE3
Projectile: Bullet
Image: 120MM
Speed: 40
Warhead:
Spread: 3
Versus:
None: 30%
Wood: 75%
Light: 75%
Heavy: 100%
Concrete: 50%
InfDeath: 4
Explosion: 4
ImpactSound: xplos
SmudgeType: Crater
Damage: 25
105mm:
ROF: 50
Range: 4.75
Report: TNKFIRE4
Projectile: Bullet
Image: 120MM
Speed: 40
Warhead:
Spread: 3
Versus:
None: 30%
Wood: 75%
Light: 75%
Heavy: 100%
Concrete: 50%
InfDeath: 4
Explosion: 4
ImpactSound: xplos
SmudgeType: Crater
Damage: 30
120mm:
ROF: 80
Range: 4.75
Report: TNKFIRE6
Projectile: Bullet
Image: 120MM
Speed: 40
Warhead:
Spread: 3
Versus:
None: 30%
Wood: 75%
Light: 75%
Heavy: 100%
Concrete: 50%
InfDeath: 4
Explosion: 4
ImpactSound: xplos
SmudgeType: Crater
Damage: 40
120mmDual:
ROF: 72
Range: 4.75
Report: TNKFIRE6
Burst: 2
BurstDelay: 8
Projectile: Bullet
Image: 120MM
Speed: 40
Warhead:
Spread: 3
Versus:
None: 30%
Wood: 75%
Light: 75%
Heavy: 100%
Concrete: 50%
InfDeath: 4
Explosion: 4
ImpactSound: xplos
SmudgeType: Crater
Damage: 40
MammothMissiles:
ROF: 72
Range: 5
Report: ROCKET1
ValidTargets: Ground, Air
Burst: 2
BurstDelay: 8
Projectile: Missile
Arm: 0
High: yes
Shadow: no
Proximity: yes
Inaccuracy: 3
Image: DRAGON
ROT: 10
Trail: smokey
Speed: 25
RangeLimit: 35
Warhead:
Spread: 3
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
Concrete: 100
InfDeath: 4
Explosion: 4
ImpactSound: xplos
SmudgeType: Crater
Damage: 75
227mm:
ROF: 72
Range: 6
# MinRange: 2
Burst: 2
BurstDelay: 8
Report: ROCKET1
ValidTargets: Ground, Air
Projectile: Missile
Arm: 2
High: yes
Shadow: no
Inaccuracy: 20
#inaccuracy only has "yes" for Heatseeker
Angle: 0.1
Image: DRAGON
ROT: 5
Trail: smokey
Speed: 20
Warhead:
Spread: 6
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
Concrete: 100%
#ora InfDeath: 4
InfDeath: 3
Explosion: 4
# Explosion: frag3
ImpactSound: xplobig4
SmudgeType: Crater
Damage: 75
227mm.stnk:
ROF: 52
Range: 4
# Report: ROCKET1
Report: BZAOOK1
Burst: 2
BurstDelay: 8
ValidTargets: Ground, Air
Projectile: Missile
Arm: 2
High: no
Shadow: yes
Proximity: yes
Inaccuracy: 5
#no hard value for inaccuracy given in cncrules.ini
Image: DRAGON
ROT: 5
Trail: smokey
Speed: 25
RangeLimit: 55
Warhead:
Spread: 3
Versus:
None: 30%
Wood: 75%
Light: 75%
Heavy: 100%
Concrete: 50%
InfDeath: 4
Explosion: 5
#cnc haven't confirmed what explosion it does
ImpactSound: xplos
SmudgeType: Crater
Damage: 30
HonestJohn:
ROF: 200
#fires every 14 seconds
# fires once, then 8 seconds later, then at 16 seconds, then at 30.
Range: 10
Report: ROCKET1
Projectile: Bullet
Arm: 10
High: yes
Shadow: yes
Proximity: yes
Inaccuracy: 5
#no inaccuracy info is provided in cncrules.ini
Image: patriot
Trail: smokey
Speed: 15
RangeLimit: 35
Angle: .15
Warhead:
Spread: 6
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
InfDeath: 5
Explosion: 3
# Explosion: big_napalm
ImpactSound: flamer2
SmudgeType: Crater
Damage: 100
OrcaAGMissiles:
ROF: 52
Burst: 2
BurstDelay: 8
Range: 4
Report: BAZOOK1
ValidTargets: Ground
Projectile: Missile
Arm: 0
High: yes
Shadow: no
Proximity: yes
Inaccuracy: 3
Image: DRAGON
ROT: 10
Trail: smokey
Speed: 25
RangeLimit: 30
Warhead:
Spread: 3
Versus:
None: 30%
Wood: 75%
Light: 75%
Heavy: 100%
Concrete: 50%
InfDeath: 4
# Explosion: 4
Explosion: 5
# ^ it looks like small arty explosion in C&C Gold
ImpactSound: xplos
SmudgeType: Crater
Damage: 30
HeliAGGun:
ROF: 50
# ROF: 20
# Burst: 2
# BurstDelay: 0
Range: 4
ValidTargets: Ground
Report: gun5
Projectile: Bullet
Speed: 100
Warhead:
Damage: 25
Spread: 6
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
Concrete: 100%
InfDeath: 2
Explosion: 2
Napalm:
ROF: 2
Projectile: GravityBomb
Image: BOMBLET
Warhead:
Spread: 8
Versus:
None: 90%
Wood: 100%
Light: 60%
Heavy: 25%
Concrete: 50%
InfDeath: 5
Explosion: 3
ImpactSound: flamer2
SmudgeType: Scorch
Damage: 100
BoatMissile:
ROF: 35
Range: 8
Burst: 2
BurstDelay: 7
Report: ROCKET2
Projectile: Missile
Arm: 0
High: yes
Shadow: no
Proximity: yes
Inaccuracy: 5
Image: DRAGON
ROT: 10
Trail: smokey
Speed: 20
RangeLimit: 60
Warhead:
Spread: 6
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
InfDeath: 3
Explosion: 4
# Explosion: frag3
ImpactSound: xplos
SmudgeType: Crater
Damage: 60
HighV:
ROF: 40
Range: 5
Report: GUN8
Projectile: Bullet
Speed: 100
Warhead:
Damage: 40
Spread: 3
Versus:
None: 100%
Wood: 50%
Light: 50%
Heavy: 25%
InfDeath: 2
Explosion: 1
TurretGun:
ROF: 50
Range: 6
Report: TNKFIRE6
Projectile: Bullet
Image: 120MM
Speed: 40
Warhead:
Spread: 3
Versus:
None: 30%
Wood: 75%
Light: 75%
Heavy: 100%
Concrete: 50%
InfDeath: 4
Explosion: 4
ImpactSound: xplos
SmudgeType: Crater
Damage: 40
SAMMissile:
ROF: 50
Range: 15
Report: ROCKET2
ValidTargets: Air
Projectile: Missile
Arm: 3
High: yes
Shadow: no
Proximity: yes
Image: MISSILE
ROT: 20
Speed: 40
RangeLimit: 50
Trail: smokey
Warhead: AP
Spread: 3
Versus:
None: 30%
Wood: 75%
Light: 75%
Heavy: 100%
InfDeath: 4
Explosion: 4
ImpactSound: xplos
SmudgeType: Crater
Damage: 50
TowerMissle:
ROF: 32
Range: 6
Report: ROCKET2
ValidTargets: Ground, Air
Burst: 2
BurstDelay: 8
Projectile: Missile
Arm: 2
High: yes
Shadow: no
Proximity: yes
Inaccuracy: 3
Image: DRAGON
ROT: 10
Trail: smokey
Speed: 25
RangeLimit: 40
Warhead:
Spread: 6
Versus:
None: 90%
Wood: 75%
Light: 60%
Heavy: 25%
Concrete: 100%
InfDeath: 3
Explosion: 4
# Explosion: frag3
ImpactSound: xplos
SmudgeType: Crater
Damage: 60
Laser:
ROF: 90
Range: 7.5
Charges: true
Report: OBELRAY1
Projectile: LaserZap
BeamRadius: 1
Warhead:
Spread: 1
InfDeath: 5
SmudgeType: Scorch
Damage: 200
IonCannon:
Warhead@impact:
Damage: 600
Spread: 6
Ore: true
Versus:
None: 90%
Wood: 60%
Light: 60%
Heavy: 25%
InfDeath: 5
Warhead@area:
DamageModel: PerCell
Damage: 200
SmudgeType: Scorch
Size: 2,1
Ore: true
Versus:
None: 90%
Wood: 60%
Light: 60%
Heavy: 25%
Delay: 3
InfDeath: 5
Atomic:
Warhead@impact:
Damage: 1000
Spread: 6
Ore: true
Versus:
None: 90%
Wood: 60%
Light: 60%
Heavy: 25%
Explosion: 6
InfDeath: 5
ImpactSound: nukexplo
Warhead@areanuke:
DamageModel: PerCell
Damage: 250
SmudgeType: Scorch
Size: 5
Ore: true
Versus:
None: 90%
Wood: 60%
Light: 60%
Heavy: 25%
Delay: 3
InfDeath: 5
ImpactSound: xplobig4
Tiberium:
ROF: 4
Warhead:
Spread: 1
InfDeath: 6
Damage: 1
PreventProne: yes
TiberiumHeal:
ROF: 4
Warhead:
Spread: 1
InfDeath: 6
Damage: -2
PreventProne: yes

View File

@@ -158,6 +158,7 @@ World:
SpatialBins:
BinSize: 4
Shroud:
Fog:
CrateSpawner:
Minimum: 1
Maximum: 6

View File

@@ -353,6 +353,7 @@ World:
SpatialBins:
BinSize: 4
Shroud:
Fog:
PathFinder:
ValidateOrder:

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More