Merge pull request #11771 from pchote/split-content-files

Rework mod enumeration and split content metadata into their own files.
This commit is contained in:
reaperrr
2016-08-18 14:59:51 +02:00
committed by GitHub
96 changed files with 5803 additions and 5630 deletions

View File

@@ -13,7 +13,6 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Reflection;
using OpenRA.Primitives;
namespace OpenRA.FileSystem
@@ -34,9 +33,15 @@ namespace OpenRA.FileSystem
// Mod packages that should not be disposed
readonly List<IReadOnlyPackage> modPackages = new List<IReadOnlyPackage>();
readonly IReadOnlyDictionary<string, Manifest> installedMods;
Cache<string, List<IReadOnlyPackage>> fileIndex = new Cache<string, List<IReadOnlyPackage>>(_ => new List<IReadOnlyPackage>());
public FileSystem(IReadOnlyDictionary<string, Manifest> installedMods)
{
this.installedMods = installedMods;
}
public IReadOnlyPackage OpenPackage(string filename)
{
if (filename.EndsWith(".mix", StringComparison.InvariantCultureIgnoreCase))
@@ -108,9 +113,9 @@ namespace OpenRA.FileSystem
{
name = name.Substring(1);
ModMetadata mod;
if (!ModMetadata.AllMods.TryGetValue(name, out mod))
throw new InvalidOperationException("Could not load mod '{0}'. Available mods: {1}".F(name, ModMetadata.AllMods.Keys.JoinWith(", ")));
Manifest mod;
if (!installedMods.TryGetValue(name, out mod))
throw new InvalidOperationException("Could not load mod '{0}'. Available mods: {1}".F(name, installedMods.Keys.JoinWith(", ")));
package = mod.Package;
modPackages.Add(package);

View File

@@ -21,6 +21,7 @@ using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using OpenRA.Chat;
using OpenRA.FileSystem;
using OpenRA.Graphics;
using OpenRA.Network;
using OpenRA.Primitives;
@@ -35,6 +36,8 @@ namespace OpenRA
public const int Timestep = 40;
public const int TimestepJankThreshold = 250; // Don't catch up for delays larger than 250ms
public static InstalledMods Mods { get; private set; }
public static ModData ModData;
public static Settings Settings;
public static ICursor Cursor;
@@ -243,6 +246,16 @@ namespace OpenRA
{
Console.WriteLine("Platform is {0}", Platform.CurrentPlatform);
// Special case handling of Game.Mod argument: if it matches a real filesystem path
// then we use this to override the mod search path, and replace it with the mod id
var modArgument = args.GetValue("Game.Mod", null);
string customModPath = null;
if (modArgument != null && (File.Exists(modArgument) || Directory.Exists(modArgument)))
{
customModPath = modArgument;
args.ReplaceValue("Game.Mod", Path.GetFileNameWithoutExtension(modArgument));
}
InitializeSettings(args);
Log.AddChannel("perf", "perf.log");
@@ -302,22 +315,23 @@ namespace OpenRA
GlobalChat = new GlobalChat();
Mods = new InstalledMods(customModPath);
Console.WriteLine("Available mods:");
foreach (var mod in ModMetadata.AllMods)
Console.WriteLine("\t{0}: {1} ({2})", mod.Key, mod.Value.Title, mod.Value.Version);
foreach (var mod in Mods)
Console.WriteLine("\t{0}: {1} ({2})", mod.Key, mod.Value.Metadata.Title, mod.Value.Metadata.Version);
InitializeMod(Settings.Game.Mod, args);
}
public static bool IsModInstalled(string modId)
{
return ModMetadata.AllMods[modId].RequiresMods.All(IsModInstalled);
return Mods.ContainsKey(modId) && Mods[modId].RequiresMods.All(IsModInstalled);
}
public static bool IsModInstalled(KeyValuePair<string, string> mod)
{
return ModMetadata.AllMods.ContainsKey(mod.Key)
&& ModMetadata.AllMods[mod.Key].Version == mod.Value
return Mods.ContainsKey(mod.Key)
&& Mods[mod.Key].Metadata.Version == mod.Value
&& IsModInstalled(mod.Key);
}
@@ -349,7 +363,7 @@ namespace OpenRA
ModData = null;
// Fall back to default if the mod doesn't exist or has missing prerequisites.
if (!ModMetadata.AllMods.ContainsKey(mod) || !IsModInstalled(mod))
if (!IsModInstalled(mod))
mod = new GameSettings().Mod;
Console.WriteLine("Loading mod: {0}", mod);
@@ -357,18 +371,13 @@ namespace OpenRA
Sound.StopVideo();
ModData = new ModData(mod, true);
ModData = new ModData(Mods[mod], Mods, true);
using (new PerfTimer("LoadMaps"))
ModData.MapCache.LoadMaps();
var content = ModData.Manifest.Get<ModContent>();
var isModContentInstalled = content.Packages
.Where(p => p.Value.Required)
.All(p => p.Value.TestFiles.All(f => File.Exists(Platform.ResolvePath(f))));
// Mod assets are missing!
if (!isModContentInstalled)
if (!ModData.LoadScreen.RequiredContentIsInstalled())
{
InitializeMod("modchooser", new Arguments());
return;
@@ -469,8 +478,8 @@ namespace OpenRA
ThreadPool.QueueUserWorkItem(_ =>
{
var mod = ModData.Manifest.Mod;
var directory = Platform.ResolvePath("^", "Screenshots", mod.Id, mod.Version);
var mod = ModData.Manifest.Metadata;
var directory = Platform.ResolvePath("^", "Screenshots", ModData.Manifest.Id, mod.Version);
Directory.CreateDirectory(directory);
var filename = TimestampedFilename(true);

View File

@@ -9,8 +9,23 @@
*/
#endregion
using OpenRA.Traits;
namespace OpenRA
{
public class Utility
{
public readonly ModData ModData;
public readonly InstalledMods Mods;
public Utility(ModData modData, InstalledMods mods)
{
ModData = modData;
Mods = mods;
}
}
[RequireExplicitImplementation]
public interface IUtilityCommand
{
/// <summary>
@@ -20,6 +35,6 @@ namespace OpenRA
bool ValidateArguments(string[] args);
void Run(ModData modData, string[] args);
void Run(Utility utility, string[] args);
}
}

View File

@@ -0,0 +1,121 @@
#region Copyright & License Information
/*
* Copyright 2007-2016 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using OpenRA.FileSystem;
using OpenRA.Primitives;
namespace OpenRA
{
public class InstalledMods : IReadOnlyDictionary<string, Manifest>
{
readonly Dictionary<string, Manifest> mods;
public InstalledMods(string customModPath)
{
mods = GetInstalledMods(customModPath);
}
static IEnumerable<Pair<string, string>> GetCandidateMods()
{
// Get mods that are in the game folder.
var basePath = Platform.ResolvePath(Path.Combine(".", "mods"));
var mods = Directory.GetDirectories(basePath)
.Select(x => Pair.New(x.Substring(basePath.Length + 1), x))
.ToList();
foreach (var m in Directory.GetFiles(basePath, "*.oramod"))
mods.Add(Pair.New(Path.GetFileNameWithoutExtension(m), m));
// Get mods that are in the support folder.
var supportPath = Platform.ResolvePath(Path.Combine("^", "mods"));
if (!Directory.Exists(supportPath))
return mods;
foreach (var pair in Directory.GetDirectories(supportPath).ToDictionary(x => x.Substring(supportPath.Length + 1)))
mods.Add(Pair.New(pair.Key, pair.Value));
foreach (var m in Directory.GetFiles(supportPath, "*.oramod"))
mods.Add(Pair.New(Path.GetFileNameWithoutExtension(m), m));
return mods;
}
static Manifest LoadMod(string id, string path)
{
IReadOnlyPackage package = null;
try
{
if (Directory.Exists(path))
package = new Folder(path);
else
{
try
{
using (var fileStream = File.OpenRead(path))
package = new ZipFile(fileStream, path);
}
catch
{
throw new InvalidDataException(path + " is not a valid mod package");
}
}
if (!package.Contains("mod.yaml"))
throw new InvalidDataException(path + " is not a valid mod package");
// Mods in the support directory and oramod packages (which are listed later
// in the CandidateMods list) override mods in the main install.
return new Manifest(id, package);
}
catch (Exception)
{
if (package != null)
package.Dispose();
return null;
}
}
static Dictionary<string, Manifest> GetInstalledMods(string customModPath)
{
var ret = new Dictionary<string, Manifest>();
var candidates = GetCandidateMods();
if (customModPath != null)
candidates = candidates.Append(Pair.New(Path.GetFileNameWithoutExtension(customModPath), customModPath));
foreach (var pair in candidates)
{
var mod = LoadMod(pair.First, pair.Second);
// Mods in the support directory and oramod packages (which are listed later
// in the CandidateMods list) override mods in the main install.
if (mod != null)
ret[pair.First] = mod;
}
return ret;
}
public Manifest this[string key] { get { return mods[key]; } }
public int Count { get { return mods.Count; } }
public ICollection<string> Keys { get { return mods.Keys; } }
public ICollection<Manifest> Values { get { return mods.Values; } }
public bool ContainsKey(string key) { return mods.ContainsKey(key); }
public IEnumerator<KeyValuePair<string, Manifest>> GetEnumerator() { return mods.GetEnumerator(); }
public bool TryGetValue(string key, out Manifest value) { return mods.TryGetValue(key, out value); }
IEnumerator IEnumerable.GetEnumerator() { return mods.GetEnumerator(); }
}
}

View File

@@ -31,10 +31,21 @@ namespace OpenRA
}
}
public class ModMetadata
{
public string Title;
public string Description;
public string Version;
public string Author;
public bool Hidden;
}
/// <summary> Describes what is to be loaded in order to run a mod. </summary>
public class Manifest
{
public readonly ModMetadata Mod;
public readonly string Id;
public readonly IReadOnlyPackage Package;
public readonly ModMetadata Metadata;
public readonly string[]
Rules, ServerTraits,
Sequences, VoxelSequences, Cursors, Chrome, Assemblies, ChromeLayout,
@@ -60,14 +71,15 @@ namespace OpenRA
readonly TypeDictionary modules = new TypeDictionary();
readonly Dictionary<string, MiniYaml> yaml;
public Manifest(string modId)
{
var package = ModMetadata.AllMods[modId].Package;
bool customDataLoaded;
public Manifest(string modId, IReadOnlyPackage package)
{
Id = modId;
Package = package;
yaml = new MiniYaml(null, MiniYaml.FromStream(package.GetStream("mod.yaml"), "mod.yaml")).ToDictionary();
Mod = FieldLoader.Load<ModMetadata>(yaml["Metadata"]);
Mod.Id = modId;
Metadata = FieldLoader.Load<ModMetadata>(yaml["Metadata"]);
// TODO: Use fieldloader
MapFolders = YamlDictionary(yaml, "MapFolders");
@@ -106,7 +118,7 @@ namespace OpenRA
RequiresMods = yaml["RequiresMods"].ToDictionary(my => my.Value);
// Allow inherited mods to import parent maps.
var compat = new List<string> { Mod.Id };
var compat = new List<string> { Id };
if (yaml.ContainsKey("SupportsMapsFrom"))
compat.AddRange(yaml["SupportsMapsFrom"].Value.Split(',').Select(c => c.Trim()));
@@ -147,6 +159,8 @@ namespace OpenRA
modules.Add(module);
}
customDataLoaded = true;
}
static string[] YamlList(Dictionary<string, MiniYaml> yaml, string key, bool parsePaths = false)
@@ -171,8 +185,12 @@ namespace OpenRA
return modules.Contains<T>();
}
/// <summary>Load a cached IGlobalModData instance.</summary>
public T Get<T>() where T : IGlobalModData
{
if (!customDataLoaded)
throw new InvalidOperationException("Attempted to call Manifest.Get() before loading custom data!");
var module = modules.GetOrDefault<T>();
// Lazily create the default values if not explicitly defined.
@@ -184,5 +202,36 @@ namespace OpenRA
return module;
}
/// <summary>
/// Load an uncached IGlobalModData instance directly from the manifest yaml.
/// This should only be used by external mods that want to query data from this mod.
/// </summary>
public T Get<T>(ObjectCreator oc) where T : IGlobalModData
{
MiniYaml data;
var t = typeof(T);
if (!yaml.TryGetValue(t.Name, out data))
{
// Lazily create the default values if not explicitly defined.
return (T)oc.CreateBasic(t);
}
IGlobalModData module;
var ctor = t.GetConstructor(new[] { typeof(MiniYaml) });
if (ctor != null)
{
// Class has opted-in to DIY initialization
module = (IGlobalModData)ctor.Invoke(new object[] { data.Value });
}
else
{
// Automatically load the child nodes using FieldLoader
module = oc.CreateObject<IGlobalModData>(t.Name);
FieldLoader.Load(module, data);
}
return (T)module;
}
}
}

View File

@@ -33,7 +33,7 @@ namespace OpenRA
public ILoadScreen LoadScreen { get; private set; }
public VoxelLoader VoxelLoader { get; private set; }
public CursorProvider CursorProvider { get; private set; }
public FS ModFiles = new FS();
public FS ModFiles;
public IReadOnlyFileSystem DefaultFileSystem { get { return ModFiles; } }
readonly Lazy<Ruleset> defaultRules;
@@ -45,10 +45,14 @@ namespace OpenRA
readonly Lazy<IReadOnlyDictionary<string, SequenceProvider>> defaultSequences;
public IReadOnlyDictionary<string, SequenceProvider> DefaultSequences { get { return defaultSequences.Value; } }
public ModData(string mod, bool useLoadScreen = false)
public ModData(Manifest mod, InstalledMods mods, bool useLoadScreen = false)
{
Languages = new string[0];
Manifest = new Manifest(mod);
ModFiles = new FS(mods);
// Take a local copy of the manifest
Manifest = new Manifest(mod.Id, mod.Package);
ModFiles.LoadFromManifest(Manifest);
ObjectCreator = new ObjectCreator(Manifest, ModFiles);
@@ -220,6 +224,7 @@ namespace OpenRA
{
void Init(ModData m, Dictionary<string, string> info);
void Display();
bool RequiredContentIsInstalled();
void StartGame(Arguments args);
}
}

View File

@@ -1,126 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2016 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using OpenRA.FileSystem;
using OpenRA.Primitives;
namespace OpenRA
{
public class ModMetadata
{
public static readonly Dictionary<string, ModMetadata> AllMods = ValidateMods();
public string Id;
public string Title;
public string Description;
public string Version;
public string Author;
public bool Hidden;
public Dictionary<string, string> RequiresMods;
public ModContent ModContent;
public IReadOnlyPackage Package;
static Dictionary<string, ModMetadata> ValidateMods()
{
var ret = new Dictionary<string, ModMetadata>();
foreach (var pair in GetCandidateMods())
{
IReadOnlyPackage package = null;
try
{
if (Directory.Exists(pair.Second))
package = new Folder(pair.Second);
else
{
try
{
using (var fileStream = File.OpenRead(pair.Second))
package = new ZipFile(fileStream, pair.Second);
}
catch
{
throw new InvalidDataException(pair.Second + " is not a valid mod package");
}
}
if (!package.Contains("mod.yaml"))
{
package.Dispose();
continue;
}
var yaml = new MiniYaml(null, MiniYaml.FromStream(package.GetStream("mod.yaml"), "mod.yaml"));
var nd = yaml.ToDictionary();
if (!nd.ContainsKey("Metadata"))
{
package.Dispose();
continue;
}
var metadata = FieldLoader.Load<ModMetadata>(nd["Metadata"]);
metadata.Id = pair.First;
metadata.Package = package;
if (nd.ContainsKey("RequiresMods"))
metadata.RequiresMods = nd["RequiresMods"].ToDictionary(my => my.Value);
else
metadata.RequiresMods = new Dictionary<string, string>();
if (nd.ContainsKey("ModContent"))
metadata.ModContent = FieldLoader.Load<ModContent>(nd["ModContent"]);
// Mods in the support directory and oramod packages (which are listed later
// in the CandidateMods list) override mods in the main install.
ret[pair.First] = metadata;
}
catch (Exception ex)
{
if (package != null)
package.Dispose();
Console.WriteLine("An exception occurred when trying to load ModMetadata for `{0}`:".F(pair.First));
Console.WriteLine(ex.Message);
}
}
return ret;
}
static IEnumerable<Pair<string, string>> GetCandidateMods()
{
// Get mods that are in the game folder.
var basePath = Platform.ResolvePath(Path.Combine(".", "mods"));
var mods = Directory.GetDirectories(basePath)
.Select(x => Pair.New(x.Substring(basePath.Length + 1), x))
.ToList();
foreach (var m in Directory.GetFiles(basePath, "*.oramod"))
mods.Add(Pair.New(Path.GetFileNameWithoutExtension(m), m));
// Get mods that are in the support folder.
var supportPath = Platform.ResolvePath(Path.Combine("^", "mods"));
if (!Directory.Exists(supportPath))
return mods;
foreach (var pair in Directory.GetDirectories(supportPath).ToDictionary(x => x.Substring(supportPath.Length + 1)))
mods.Add(Pair.New(pair.Key, pair.Value));
foreach (var m in Directory.GetFiles(supportPath, "*.oramod"))
mods.Add(Pair.New(Path.GetFileNameWithoutExtension(m), m));
return mods;
}
}
}

View File

@@ -38,14 +38,14 @@ namespace OpenRA.Network
{
FieldLoader.Load(this, yaml);
ModMetadata mod;
Manifest mod;
var modVersion = Mods.Split('@');
if (modVersion.Length == 2 && ModMetadata.AllMods.TryGetValue(modVersion[0], out mod))
if (modVersion.Length == 2 && Game.Mods.TryGetValue(modVersion[0], out mod))
{
ModId = modVersion[0];
ModVersion = modVersion[1];
ModLabel = "{0} ({1})".F(mod.Title, modVersion[1]);
IsCompatible = Game.Settings.Debug.IgnoreVersionMismatch || ModVersion == mod.Version;
ModLabel = "{0} ({1})".F(mod.Metadata.Title, modVersion[1]);
IsCompatible = Game.Settings.Debug.IgnoreVersionMismatch || ModVersion == mod.Metadata.Version;
}
else
ModLabel = "Unknown mod: {0}".F(Mods);

View File

@@ -44,8 +44,8 @@ namespace OpenRA.Network
void StartSavingReplay(byte[] initialContent)
{
var filename = chooseFilename();
var mod = Game.ModData.Manifest.Mod;
var dir = Platform.ResolvePath("^", "Replays", mod.Id, mod.Version);
var mod = Game.ModData.Manifest;
var dir = Platform.ResolvePath("^", "Replays", mod.Id, mod.Metadata.Version);
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);

View File

@@ -96,7 +96,7 @@ namespace OpenRA.Network
{
if (r.Frame == frame)
{
var mod = Game.ModData.Manifest.Mod;
var mod = Game.ModData.Manifest.Metadata;
Log.Write("sync", "Player: {0} ({1} {2} {3})", Game.Settings.Player.Name, Platform.CurrentPlatform, Environment.OSVersion, Platform.RuntimeVersion);
Log.Write("sync", "Game ID: {0} (Mod: {1} at Version {2})", orderManager.LobbyInfo.GlobalSettings.GameUid, mod.Title, mod.Version);
Log.Write("sync", "Sync for net frame {0} -------------", r.Frame);

View File

@@ -132,13 +132,13 @@ namespace OpenRA.Network
case "HandshakeRequest":
{
// Switch to the server's mod if we need and are able to
var mod = Game.ModData.Manifest.Mod;
var mod = Game.ModData.Manifest;
var request = HandshakeRequest.Deserialize(order.TargetString);
ModMetadata serverMod;
Manifest serverMod;
if (request.Mod != mod.Id &&
ModMetadata.AllMods.TryGetValue(request.Mod, out serverMod) &&
serverMod.Version == request.Version)
Game.Mods.TryGetValue(request.Mod, out serverMod) &&
serverMod.Metadata.Version == request.Version)
{
var replay = orderManager.Connection as ReplayConnection;
var launchCommand = replay != null ?
@@ -170,7 +170,7 @@ namespace OpenRA.Network
{
Client = info,
Mod = mod.Id,
Version = mod.Version,
Version = mod.Metadata.Version,
Password = orderManager.Password
};

View File

@@ -204,7 +204,6 @@
<Compile Include="Traits\Player\FixedColorPalette.cs" />
<Compile Include="Primitives\ReadOnlyDictionary.cs" />
<Compile Include="Primitives\ReadOnlyList.cs" />
<Compile Include="ModMetadata.cs" />
<Compile Include="GameRules\Ruleset.cs" />
<Compile Include="Support\MersenneTwister.cs" />
<Compile Include="GameInformation.cs" />
@@ -244,7 +243,7 @@
<Compile Include="Traits\ActivityUtils.cs" />
<Compile Include="FileSystem\ZipFolder.cs" />
<Compile Include="Primitives\float3.cs" />
<Compile Include="ModContent.cs" />
<Compile Include="InstalledMods.cs" />
</ItemGroup>
<ItemGroup>
<Compile Include="FileSystem\D2kSoundResources.cs" />

View File

@@ -158,7 +158,7 @@ namespace OpenRA.Server
foreach (var t in serverTraits.WithInterface<INotifyServerStart>())
t.ServerStarted(this);
Log.Write("server", "Initial mod: {0}", ModData.Manifest.Mod.Id);
Log.Write("server", "Initial mod: {0}", ModData.Manifest.Id);
Log.Write("server", "Initial map: {0}", LobbyInfo.GlobalSettings.Map);
var timeout = serverTraits.WithInterface<ITick>().Min(t => t.TickTimeout);
@@ -262,8 +262,8 @@ namespace OpenRA.Server
// Dispatch a handshake order
var request = new HandshakeRequest
{
Mod = ModData.Manifest.Mod.Id,
Version = ModData.Manifest.Mod.Version,
Mod = ModData.Manifest.Id,
Version = ModData.Manifest.Metadata.Version,
Map = LobbyInfo.GlobalSettings.Map
};
@@ -327,7 +327,7 @@ namespace OpenRA.Server
else
client.Color = HSLColor.FromRGB(255, 255, 255);
if (ModData.Manifest.Mod.Id != handshake.Mod)
if (ModData.Manifest.Id != handshake.Mod)
{
Log.Write("server", "Rejected connection from {0}; mods do not match.",
newConn.Socket.RemoteEndPoint);
@@ -337,7 +337,7 @@ namespace OpenRA.Server
return;
}
if (ModData.Manifest.Mod.Version != handshake.Version && !LobbyInfo.GlobalSettings.AllowVersionMismatch)
if (ModData.Manifest.Metadata.Version != handshake.Version && !LobbyInfo.GlobalSettings.AllowVersionMismatch)
{
Log.Write("server", "Rejected connection from {0}; Not running the same version.",
newConn.Socket.RemoteEndPoint);

View File

@@ -35,5 +35,6 @@ namespace OpenRA
public bool Contains(string key) { return args.ContainsKey(key); }
public string GetValue(string key, string defaultValue) { return Contains(key) ? args[key] : defaultValue; }
public void ReplaceValue(string key, string value) { args[key] = value; }
}
}

View File

@@ -52,7 +52,7 @@ namespace OpenRA
if (Game.ModData != null)
{
var mod = Game.ModData.Manifest.Mod;
var mod = Game.ModData.Manifest.Metadata;
Log.Write("exception", "{0} Mod at Version {1}", mod.Title, mod.Version);
}

View File

@@ -176,8 +176,8 @@ namespace OpenRA
gameInfo = new GameInformation
{
Mod = Game.ModData.Manifest.Mod.Id,
Version = Game.ModData.Manifest.Mod.Version,
Mod = Game.ModData.Manifest.Id,
Version = Game.ModData.Manifest.Metadata.Version,
MapUid = Map.Uid,
MapTitle = Map.Title

View File

@@ -36,6 +36,8 @@ namespace OpenRA.Mods.Cnc
public override void Init(ModData modData, Dictionary<string, string> info)
{
base.Init(modData, info);
loadInfo = info;
// Avoid standard loading mechanisms so we
@@ -68,7 +70,7 @@ namespace OpenRA.Mods.Cnc
brightBlock = new Sprite(sheet, new Rectangle(320, 0, 16, 35), TextureChannel.Alpha);
dimBlock = new Sprite(sheet, new Rectangle(336, 0, 16, 35), TextureChannel.Alpha);
versionText = modData.Manifest.Mod.Version;
versionText = modData.Manifest.Metadata.Version;
}
bool setup;

View File

@@ -24,13 +24,11 @@ namespace OpenRA.Mods.Cnc.UtilityCommands
// NOTE: 64x64 map size is a C&C95 engine limitation
public ImportTiberianDawnLegacyMapCommand() : base(64) { }
public string Name { get { return "--import-td-map"; } }
string IUtilityCommand.Name { get { return "--import-td-map"; } }
bool IUtilityCommand.ValidateArguments(string[] args) { return ValidateArguments(args); }
[Desc("FILENAME", "Convert a legacy Tiberian Dawn INI/MPR map to the OpenRA format.")]
public override void Run(ModData modData, string[] args)
{
base.Run(modData, args);
}
void IUtilityCommand.Run(Utility utility, string[] args) { Run(utility, args); }
public override void ValidateMapFormat(int format)
{

View File

@@ -12,6 +12,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using OpenRA.FileFormats;
using OpenRA.Mods.Common.Widgets.Logic;
using OpenRA.Widgets;
@@ -21,8 +22,12 @@ namespace OpenRA.Mods.Common.LoadScreens
public class BlankLoadScreen : ILoadScreen
{
public LaunchArguments Launch;
ModData modData;
public virtual void Init(ModData m, Dictionary<string, string> info) { }
public virtual void Init(ModData modData, Dictionary<string, string> info)
{
this.modData = modData;
}
public virtual void Display()
{
@@ -79,7 +84,7 @@ namespace OpenRA.Mods.Common.LoadScreens
if (replayMeta != null)
{
var mod = replayMeta.GameInfo.Mod;
if (mod != null && mod != Game.ModData.Manifest.Mod.Id && ModMetadata.AllMods.ContainsKey(mod))
if (mod != null && mod != Game.ModData.Manifest.Id && Game.Mods.ContainsKey(mod))
Game.InitializeMod(mod, args);
}
@@ -97,5 +102,13 @@ namespace OpenRA.Mods.Common.LoadScreens
Dispose(true);
GC.SuppressFinalize(this);
}
public bool RequiredContentIsInstalled()
{
var content = modData.Manifest.Get<ModContent>();
return content.Packages
.Where(p => p.Value.Required)
.All(p => p.Value.TestFiles.All(f => File.Exists(Platform.ResolvePath(f))));
}
}
}

View File

@@ -31,6 +31,8 @@ namespace OpenRA.Mods.Common.LoadScreens
public override void Init(ModData modData, Dictionary<string, string> info)
{
base.Init(modData, info);
// Avoid standard loading mechanisms so we
// can display the loadscreen as early as possible
r = Game.Renderer;

View File

@@ -11,7 +11,6 @@
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using OpenRA.Graphics;
using OpenRA.Widgets;
@@ -58,5 +57,10 @@ namespace OpenRA.Mods.Common.LoadScreens
if (sprite != null)
sprite.Sheet.Dispose();
}
public bool RequiredContentIsInstalled()
{
return true;
}
}
}

View File

@@ -95,31 +95,21 @@ namespace OpenRA
}
[FieldLoader.LoadUsing("LoadDownloads")]
public readonly Dictionary<string, ModDownload> Downloads;
public readonly string[] Downloads = { };
static object LoadDownloads(MiniYaml yaml)
{
var downloads = new Dictionary<string, ModDownload>();
var downloadNode = yaml.Nodes.FirstOrDefault(n => n.Key == "Downloads");
if (downloadNode != null)
foreach (var node in downloadNode.Value.Nodes)
downloads.Add(node.Key, new ModDownload(node.Value));
return downloads;
return downloadNode != null ? downloadNode.Value.Nodes.Select(n => n.Key).ToArray() : new string[0];
}
[FieldLoader.LoadUsing("LoadSources")]
public readonly Dictionary<string, ModSource> Sources;
public readonly string[] Sources = { };
static object LoadSources(MiniYaml yaml)
{
var sources = new Dictionary<string, ModSource>();
var sourceNode = yaml.Nodes.FirstOrDefault(n => n.Key == "Sources");
if (sourceNode != null)
foreach (var node in sourceNode.Value.Nodes)
sources.Add(node.Key, new ModSource(node.Value));
return sources;
return sourceNode != null ? sourceNode.Value.Nodes.Select(n => n.Key).ToArray() : new string[0];
}
}
}

View File

@@ -778,6 +778,7 @@
<Compile Include="Activities\Air\FlyCircleTimed.cs" />
<Compile Include="UtilityCommands\ListInstallShieldCabContentsCommand.cs" />
<Compile Include="FileFormats\InstallShieldCABCompression.cs" />
<Compile Include="ModContent.cs" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>

View File

@@ -52,7 +52,7 @@ namespace OpenRA.Mods.Common.Server
lastPing = Game.RunTime;
isBusy = true;
var mod = server.ModData.Manifest.Mod;
var mod = server.ModData.Manifest;
// important to grab these on the main server thread, not in the worker we're about to spawn -- they may be modified
// by the main thread as clients join and leave.
@@ -79,7 +79,7 @@ namespace OpenRA.Mods.Common.Server
(int)server.State,
numPlayers,
numBots,
"{0}@{1}".F(mod.Id, mod.Version),
"{0}@{1}".F(mod.Id, mod.Metadata.Version),
server.LobbyInfo.GlobalSettings.Map,
numSlots,
numSpectators,

View File

@@ -17,22 +17,22 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class CheckCodeStyle : IUtilityCommand
{
public string Name { get { return "--check-code-style"; } }
string IUtilityCommand.Name { get { return "--check-code-style"; } }
int violationCount;
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 2;
}
[Desc("DIRECTORY", "Check the *.cs source code files in a directory for code style violations.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
var relativePath = args[1];
var projectPath = Path.GetFullPath(relativePath);
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
Game.ModData = utility.ModData;
var console = new StyleCopConsole(null, false, null, null, true);
var project = new CodeProject(0, projectPath, new Configuration(null));

View File

@@ -28,9 +28,9 @@ namespace OpenRA.Mods.Common.UtilityCommands
int violationCount;
[Desc("Check for explicit interface implementation violations in all assemblies referenced by the specified mod.")]
void IUtilityCommand.Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
var types = modData.ObjectCreator.GetTypes();
var types = utility.ModData.ObjectCreator.GetTypes();
foreach (var implementingType in types.Where(t => !t.IsInterface))
{

View File

@@ -17,18 +17,18 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class CheckSquenceSprites : IUtilityCommand
{
public string Name { get { return "--check-sequence-sprites"; } }
string IUtilityCommand.Name { get { return "--check-sequence-sprites"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return true;
}
[Desc("Check the sequence definitions for missing sprite files.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
var modData = Game.ModData = utility.ModData;
var failed = false;
modData.SpriteSequenceLoader.OnMissingSpriteError = s => { Console.WriteLine("\t" + s); failed = true; };

View File

@@ -18,7 +18,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class CheckYaml : IUtilityCommand
{
public string Name { get { return "--check-yaml"; } }
string IUtilityCommand.Name { get { return "--check-yaml"; } }
static int errors = 0;
@@ -34,16 +34,16 @@ namespace OpenRA.Mods.Common.UtilityCommands
Console.WriteLine("OpenRA.Utility(1,1): Warning: {0}", e);
}
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return true;
}
[Desc("[MAPFILE]", "Check a mod or map for certain yaml errors.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
var modData = Game.ModData = utility.ModData;
try
{
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
var maps = new List<Map>();
if (args.Length < 2)
{
Console.WriteLine("Testing mod: {0}".F(modData.Manifest.Mod.Title));
Console.WriteLine("Testing mod: {0}".F(modData.Manifest.Metadata.Title));
// Run all rule checks on the default mod rules.
CheckRules(modData, modData.DefaultRules);

View File

@@ -23,15 +23,15 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class ConvertPngToShpCommand : IUtilityCommand
{
public string Name { get { return "--shp"; } }
string IUtilityCommand.Name { get { return "--shp"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 2;
}
[Desc("PNGFILE [PNGFILE ...]", "Combine a list of PNG images into a SHP")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
var inputFiles = GlobArgs(args).OrderBy(a => a).ToList();
var dest = inputFiles[0].Split('-').First() + ".shp";

View File

@@ -21,19 +21,19 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class ConvertSpriteToPngCommand : IUtilityCommand
{
public string Name { get { return "--png"; } }
string IUtilityCommand.Name { get { return "--png"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 3;
}
[Desc("SPRITEFILE PALETTE [--noshadow] [--nopadding]",
"Convert a shp/tmp/R8 to a series of PNGs, optionally removing shadow")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
var modData = Game.ModData = utility.ModData;
var src = args[1];
var shadowIndex = new int[] { };

View File

@@ -16,15 +16,15 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class CreateManPage : IUtilityCommand
{
public string Name { get { return "--man-page"; } }
string IUtilityCommand.Name { get { return "--man-page"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return true;
}
[Desc("Create a man page in troff format.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
Console.WriteLine(".TH OPENRA 6");
Console.WriteLine(".SH NAME");

View File

@@ -17,21 +17,21 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class ExtractFilesCommand : IUtilityCommand
{
public string Name { get { return "--extract"; } }
string IUtilityCommand.Name { get { return "--extract"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 2;
}
[Desc("Extract files from mod packages to the current directory")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
var files = args.Skip(1);
foreach (var f in files)
{
var src = modData.DefaultFileSystem.Open(f);
var src = utility.ModData.DefaultFileSystem.Open(f);
if (src == null)
throw new InvalidOperationException("File not found: {0}".F(f));
var data = src.ReadAllBytes();

View File

@@ -18,20 +18,20 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class ExtractLanguageStringsCommand : IUtilityCommand
{
public string Name { get { return "--extract-language-strings"; } }
string IUtilityCommand.Name { get { return "--extract-language-strings"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return true;
}
[Desc("Extract translatable strings that are not yet localized and update chrome layout.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
var modData = Game.ModData = utility.ModData;
var types = Game.ModData.ObjectCreator.GetTypes();
var types = modData.ObjectCreator.GetTypes();
var translatableFields = types.SelectMany(t => t.GetFields())
.Where(f => f.HasAttribute<TranslateAttribute>()).Distinct();

View File

@@ -18,20 +18,20 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class ExtractLuaDocsCommand : IUtilityCommand
{
public string Name { get { return "--lua-docs"; } }
string IUtilityCommand.Name { get { return "--lua-docs"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return true;
}
[Desc("Generate Lua API documentation in MarkDown format.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
Game.ModData = utility.ModData;
Console.WriteLine("This is an automatically generated listing of the new Lua map scripting API, generated for {0} of OpenRA.", Game.ModData.Manifest.Mod.Version);
Console.WriteLine("This is an automatically generated listing of the new Lua map scripting API, generated for {0} of OpenRA.", Game.ModData.Manifest.Metadata.Version);
Console.WriteLine();
Console.WriteLine("OpenRA allows custom maps and missions to be scripted using Lua 5.1.\n" +
"These scripts run in a sandbox that prevents access to unsafe functions (e.g. OS or file access), " +
@@ -55,7 +55,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
Console.WriteLine("For a basic guide about map scripts see the [`Map Scripting` wiki page](https://github.com/OpenRA/OpenRA/wiki/Map-scripting).");
Console.WriteLine();
var tables = Game.ModData.ObjectCreator.GetTypesImplementing<ScriptGlobal>()
var tables = utility.ModData.ObjectCreator.GetTypesImplementing<ScriptGlobal>()
.OrderBy(t => t.Name);
Console.WriteLine("<h3>Global Tables</h3>");
@@ -77,7 +77,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
Console.WriteLine("<h3>Actor Properties / Commands</h3>");
var actorCategories = Game.ModData.ObjectCreator.GetTypesImplementing<ScriptActorProperties>().SelectMany(cg =>
var actorCategories = utility.ModData.ObjectCreator.GetTypesImplementing<ScriptActorProperties>().SelectMany(cg =>
{
var catAttr = cg.GetCustomAttributes<ScriptPropertyGroupAttribute>(false).FirstOrDefault();
var category = catAttr != null ? catAttr.Category : "Unsorted";
@@ -122,7 +122,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
Console.WriteLine("<h3>Player Properties / Commands</h3>");
var playerCategories = Game.ModData.ObjectCreator.GetTypesImplementing<ScriptPlayerProperties>().SelectMany(cg =>
var playerCategories = utility.ModData.ObjectCreator.GetTypesImplementing<ScriptPlayerProperties>().SelectMany(cg =>
{
var catAttr = cg.GetCustomAttributes<ScriptPropertyGroupAttribute>(false).FirstOrDefault();
var category = catAttr != null ? catAttr.Category : "Unsorted";

View File

@@ -50,9 +50,9 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
[Desc("MAPFILE", "Merge custom map rules into a form suitable for including in map.yaml.")]
void IUtilityCommand.Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
Game.ModData = modData;
var modData = Game.ModData = utility.ModData;
var map = new Map(modData, modData.ModFiles.OpenPackage(args[1], new Folder(".")));
MergeAndPrint(map, "Rules", map.RuleDefinitions);

View File

@@ -16,21 +16,21 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class ExtractSettingsDocsCommand : IUtilityCommand
{
public string Name { get { return "--settings-docs"; } }
string IUtilityCommand.Name { get { return "--settings-docs"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return true;
}
[Desc("Generate settings documentation in markdown format.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
Game.ModData = modData;
Game.ModData = utility.ModData;
Console.WriteLine(
"This documentation is aimed at server administrators. It displays all settings with default values and description. " +
"Please do not edit it directly, but add new `[Desc(\"String\")]` tags to the source code. This file has been " +
"automatically generated for version {0} of OpenRA.", Game.ModData.Manifest.Mod.Version);
"automatically generated for version {0} of OpenRA.", utility.ModData.Manifest.Metadata.Version);
Console.WriteLine();
Console.WriteLine("All settings can be changed by starting the game via a command-line parameter like `Game.Mod=ra`.");
Console.WriteLine();

View File

@@ -20,23 +20,23 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class ExtractTraitDocsCommand : IUtilityCommand
{
public string Name { get { return "--docs"; } }
string IUtilityCommand.Name { get { return "--docs"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return true;
}
[Desc("Generate trait documentation in MarkDown format.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
Game.ModData = utility.ModData;
Console.WriteLine(
"This documentation is aimed at modders. It displays all traits with default values and developer commentary. " +
"Please do not edit it directly, but add new `[Desc(\"String\")]` tags to the source code. This file has been " +
"automatically generated for version {0} of OpenRA.", Game.ModData.Manifest.Mod.Version);
"automatically generated for version {0} of OpenRA.", utility.ModData.Manifest.Metadata.Version);
Console.WriteLine();
var toc = new StringBuilder();

View File

@@ -20,18 +20,18 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class FixClassicTilesets : IUtilityCommand
{
public string Name { get { return "--fix-classic-tilesets"; } }
string IUtilityCommand.Name { get { return "--fix-classic-tilesets"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 2;
}
[Desc("EXTENSIONS", "Fixes missing template tile definitions and adds filename extensions.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
var modData = Game.ModData = utility.ModData;
var imageField = typeof(TerrainTemplateInfo).GetField("Image");
var pickAnyField = typeof(TerrainTemplateInfo).GetField("PickAny");

View File

@@ -16,17 +16,17 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class GetMapHashCommand : IUtilityCommand
{
public string Name { get { return "--map-hash"; } }
string IUtilityCommand.Name { get { return "--map-hash"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 2;
}
[Desc("MAPFILE", "Generate hash of specified oramap file.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
using (var package = modData.ModFiles.OpenPackage(args[1], new Folder(".")))
using (var package = utility.ModData.ModFiles.OpenPackage(args[1], new Folder(".")))
Console.WriteLine(Map.ComputeUID(package));
}
}

View File

@@ -38,18 +38,15 @@ namespace OpenRA.Mods.Common.UtilityCommands
bool singlePlayer;
int spawnCount;
public bool ValidateArguments(string[] args)
protected bool ValidateArguments(string[] args)
{
return args.Length >= 2;
}
[Desc("FILENAME", "Convert a legacy INI/MPR map to the OpenRA format.")]
public virtual void Run(ModData modData, string[] args)
protected void Run(Utility utility, string[] args)
{
ModData = modData;
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
Game.ModData = ModData = utility.ModData;
var filename = args[1];
using (var stream = File.OpenRead(filename))
@@ -68,16 +65,16 @@ namespace OpenRA.Mods.Common.UtilityCommands
// The original game isn't case sensitive, but we are.
var tileset = GetTileset(mapSection).ToUpperInvariant();
if (!modData.DefaultTileSets.ContainsKey(tileset))
if (!ModData.DefaultTileSets.ContainsKey(tileset))
throw new InvalidDataException("Unknown tileset {0}".F(tileset));
Map = new Map(modData, modData.DefaultTileSets[tileset], MapSize, MapSize)
Map = new Map(ModData, ModData.DefaultTileSets[tileset], MapSize, MapSize)
{
Title = basic.GetValue("Name", Path.GetFileNameWithoutExtension(filename)),
Author = "Westwood Studios",
};
Map.RequiresMod = modData.Manifest.Mod.Id;
Map.RequiresMod = ModData.Manifest.Id;
SetBounds(Map, mapSection);

View File

@@ -19,15 +19,15 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class ListInstallShieldCabContentsCommand : IUtilityCommand
{
public string Name { get { return "--list-installshield-cab"; } }
string IUtilityCommand.Name { get { return "--list-installshield-cab"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length == 2;
}
[Desc("DATA.HDR", "Lists the filenames contained within an Installshield CAB volume set")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
using (var file = File.OpenRead(args[1]))
{

View File

@@ -11,27 +11,26 @@
using System;
using System.IO;
using System.Linq;
using OpenRA.FileSystem;
namespace OpenRA.Mods.Common.UtilityCommands
{
class ListInstallShieldContents : IUtilityCommand
{
public string Name { get { return "--list-installshield"; } }
string IUtilityCommand.Name { get { return "--list-installshield"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length == 2;
}
[Desc("ARCHIVE.Z", "Lists the content ranges for a InstallShield V3 file")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
var filename = Path.GetFileName(args[1]);
var path = Path.GetDirectoryName(args[1]);
var fs = new OpenRA.FileSystem.FileSystem();
var fs = new FileSystem.FileSystem(utility.Mods);
fs.Mount(path, "parent");
var package = new InstallShieldPackage(fs, "parent|" + filename);

View File

@@ -17,15 +17,15 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class ListMSCabContentsCommand : IUtilityCommand
{
public string Name { get { return "--list-mscab"; } }
string IUtilityCommand.Name { get { return "--list-mscab"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length == 2;
}
[Desc("ARCHIVE.CAB", "Lists the filenames contained within a MSCAB file")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
var package = new MSCabCompression(File.OpenRead(args[1]));
foreach (var file in package.Contents)

View File

@@ -18,23 +18,23 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class ListMixContents : IUtilityCommand
{
public string Name { get { return "--list-mix"; } }
string IUtilityCommand.Name { get { return "--list-mix"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length == 2;
}
[Desc("ARCHIVE.MIX", "Lists the content ranges for a mix file")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
var filename = Path.GetFileName(args[1]);
var path = Path.GetDirectoryName(args[1]);
var fs = new OpenRA.FileSystem.FileSystem();
var fs = new FileSystem.FileSystem(utility.Mods);
// Needed to access the global mix database
fs.LoadFromManifest(modData.Manifest);
fs.LoadFromManifest(utility.ModData.Manifest);
fs.Mount(path, "parent");
var package = new MixFile(fs, "parent|" + filename);

View File

@@ -15,16 +15,17 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
[Desc("ACTOR-TYPE [PATH/TO/MAP]", "Display the finalized, merged MiniYaml tree for the given actor type. Input values are case-sensitive.")]
void IUtilityCommand.Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
var modData = Game.ModData = utility.ModData;
var actorType = args[1];
string mapPath = null;
Map map = null;
if (args.Length == 3)
{
try
{
mapPath = args[2];
@@ -35,6 +36,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
Console.WriteLine("Could not load map '{0}'.", mapPath);
Environment.Exit(2);
}
}
var fs = map ?? modData.DefaultFileSystem;
var topLevelNodes = MiniYaml.Load(fs, modData.Manifest.Rules, map == null ? null : map.RuleDefinitions);

View File

@@ -22,15 +22,15 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class RemapShpCommand : IUtilityCommand
{
public string Name { get { return "--remap"; } }
string IUtilityCommand.Name { get { return "--remap"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 5;
}
[Desc("SRCMOD:PAL DESTMOD:PAL SRCSHP DESTSHP", "Remap SHPs to another palette")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
var remap = new Dictionary<int, int>();
@@ -39,14 +39,14 @@ namespace OpenRA.Mods.Common.UtilityCommands
remap[i] = i;
var srcMod = args[1].Split(':')[0];
var srcModData = new ModData(srcMod);
var srcModData = new ModData(utility.Mods[srcMod], utility.Mods);
Game.ModData = srcModData;
var srcPaletteInfo = srcModData.DefaultRules.Actors["player"].TraitInfo<PlayerColorPaletteInfo>();
var srcRemapIndex = srcPaletteInfo.RemapIndex;
var destMod = args[2].Split(':')[0];
var destModData = new ModData(destMod);
var destModData = new ModData(utility.Mods[destMod], utility.Mods);
Game.ModData = destModData;
var destPaletteInfo = destModData.DefaultRules.Actors["player"].TraitInfo<PlayerColorPaletteInfo>();
var destRemapIndex = destPaletteInfo.RemapIndex;

View File

@@ -17,15 +17,15 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class ReplayMetadataCommand : IUtilityCommand
{
public string Name { get { return "--replay-metadata"; } }
string IUtilityCommand.Name { get { return "--replay-metadata"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 2;
}
[Desc("REPLAYFILE", "Print the game metadata from a replay file.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
var replay = ReplayMetadata.Read(args[1]);
if (replay == null)

View File

@@ -18,14 +18,14 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
public class ResizeMapCommand : IUtilityCommand
{
public string Name { get { return "--resize-map"; } }
string IUtilityCommand.Name { get { return "--resize-map"; } }
int width;
int height;
Map map;
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
if (args.Length < 4)
return false;
@@ -46,9 +46,9 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
[Desc("MAPFILE", "WIDTH", "HEIGHT", "Resize the map at the bottom corners.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
Game.ModData = modData;
var modData = Game.ModData = utility.ModData;
map = new Map(modData, modData.ModFiles.OpenPackage(args[1], new Folder(".")));
Console.WriteLine("Resizing map {0} from {1} to {2},{3}", map.Title, map.MapSize, width, height);
map.Resize(width, height);

View File

@@ -15,11 +15,11 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class Rgba2Hex : IUtilityCommand
{
public string Name { get { return "--rgba2hex"; } }
string IUtilityCommand.Name { get { return "--rgba2hex"; } }
static readonly char[] Comma = new char[] { ',' };
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
if (args.Length <= 1)
return PrintUsage();
@@ -74,7 +74,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
[Desc("Convert r,g,b[,a] triples/quads into hex colors")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
for (int i = 1; i < args.Length;)
{
@@ -104,11 +104,11 @@ namespace OpenRA.Mods.Common.UtilityCommands
class Argb2Hex : IUtilityCommand
{
public string Name { get { return "--argb2hex"; } }
string IUtilityCommand.Name { get { return "--argb2hex"; } }
static readonly char[] Comma = new char[] { ',' };
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
if (args.Length <= 1)
return PrintUsage();
@@ -180,7 +180,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
[Desc("Convert a,r,g,b legacy colors into hex colors")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
for (int i = 1; i < args.Length;)
{

View File

@@ -19,9 +19,9 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class UpgradeMapCommand : IUtilityCommand
{
public string Name { get { return "--upgrade-map"; } }
string IUtilityCommand.Name { get { return "--upgrade-map"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 3;
}
@@ -75,10 +75,10 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
[Desc("MAP", "CURRENTENGINE", "Upgrade map rules to the latest engine version.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
var modData = Game.ModData = utility.ModData;
// HACK: We know that maps can only be oramap or folders, which are ReadWrite
var package = modData.ModFiles.OpenPackage(args[1], new Folder(".")) as IReadWritePackage;

View File

@@ -19,9 +19,9 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
class UpgradeModCommand : IUtilityCommand
{
public string Name { get { return "--upgrade-mod"; } }
string IUtilityCommand.Name { get { return "--upgrade-mod"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 2;
}
@@ -53,10 +53,10 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
[Desc("CURRENTENGINE", "Upgrade mod rules to the latest engine version.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
var modData = Game.ModData = utility.ModData;
modData.MapCache.LoadMaps();
var engineDate = Exts.ParseIntegerInvariant(args[1]);

View File

@@ -346,7 +346,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
{
foreach (var node in nodes)
{
if (engineVersion < 20160730 && modData.Manifest.Mod.Id == "d2k" && depth == 2)
if (engineVersion < 20160730 && modData.Manifest.Id == "d2k" && depth == 2)
{
if (node.Key == "Start")
node.Value.Value = RemapD2k106Sequence(FieldLoader.GetValue<int>("", node.Value.Value)).ToString();
@@ -416,7 +416,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
foreach (var node in nodes)
{
// Fix RA building footprints to not use _ when it's not necessary
if (engineVersion < 20160619 && modData.Manifest.Mod.Id == "ra" && depth == 1)
if (engineVersion < 20160619 && modData.Manifest.Id == "ra" && depth == 1)
{
var buildings = new List<string>() { "tsla", "gap", "agun", "apwr", "fapw" };
if (buildings.Contains(parent.Value.Value) && node.Key == "Location")
@@ -424,7 +424,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
// Fix TD building footprints to not use _ when it's not necessary
if (engineVersion < 20160619 && modData.Manifest.Mod.Id == "cnc" && depth == 1)
if (engineVersion < 20160619 && modData.Manifest.Id == "cnc" && depth == 1)
{
var buildings = new List<string>() { "atwr", "obli", "tmpl", "weap", "hand" };
if (buildings.Contains(parent.Value.Value) && node.Key == "Location")

View File

@@ -170,7 +170,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (playerDefinitions != null)
map.PlayerDefinitions = playerDefinitions;
map.RequiresMod = modData.Manifest.Mod.Id;
map.RequiresMod = modData.Manifest.Id;
var combinedPath = Platform.ResolvePath(Path.Combine(selectedDirectory.Folder.Name, filename.Text + fileTypes[fileType].Extension));

View File

@@ -32,7 +32,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (mpe != null)
mpe.Fade(mpe.Info.MenuEffect);
menu.Get<LabelWidget>("VERSION_LABEL").Text = modData.Manifest.Mod.Version;
menu.Get<LabelWidget>("VERSION_LABEL").Text = modData.Manifest.Metadata.Version;
var hideMenu = false;
menu.Get("MENU_BUTTONS").IsVisible = () => !hideMenu;

View File

@@ -29,6 +29,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
enum Mode { Progress, Message, List }
readonly ModContent content;
readonly Dictionary<string, ModContent.ModSource> sources;
readonly Widget panel;
readonly LabelWidget titleLabel;
@@ -54,9 +55,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
Mode visible = Mode.Progress;
[ObjectCreator.UseCtor]
public InstallFromDiscLogic(Widget widget, ModContent content, Action afterInstall)
public InstallFromDiscLogic(Widget widget, ModContent content, Dictionary<string, ModContent.ModSource> sources, Action afterInstall)
{
this.content = content;
this.sources = sources;
Log.AddChannel("install", "install.log");
@@ -106,7 +108,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
.Where(v => v.DriveType == DriveType.CDRom && v.IsReady)
.Select(v => v.RootDirectory.FullName);
foreach (var kv in content.Sources)
foreach (var kv in sources)
{
message = "Searching for " + kv.Value.Title;
@@ -131,12 +133,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic
}
}
var sources = content.Packages.Values
var missingSources = content.Packages.Values
.Where(p => !p.IsInstalled())
.SelectMany(p => p.Sources)
.Select(d => content.Sources[d]);
.Select(d => sources[d]);
var discs = sources
var discs = missingSources
.Where(s => s.Type == ModContent.SourceType.Disc)
.Select(s => s.Title)
.Distinct();
@@ -148,7 +150,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (Platform.CurrentPlatform == PlatformType.Windows)
{
var installations = sources
var installations = missingSources
.Where(s => s.Type == ModContent.SourceType.Install)
.Select(s => s.Title)
.Distinct();

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
var panel = widget.Get("INSTALL_MOD_PANEL");
var mods = ModMetadata.AllMods[modId].RequiresMods.Where(m => !Game.IsModInstalled(m)).Select(m => "{0} ({1})".F(m.Key, m.Value));
var mods = Game.Mods[modId].RequiresMods.Where(m => !Game.IsModInstalled(m)).Select(m => "{0} ({1})".F(m.Key, m.Value));
var text = string.Join(", ", mods);
panel.Get<LabelWidget>("MOD_LIST").Text = text;

View File

@@ -10,7 +10,7 @@
#endregion
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Widgets;
@@ -21,14 +21,32 @@ namespace OpenRA.Mods.Common.Widgets.Logic
readonly ModContent content;
readonly ScrollPanelWidget scrollPanel;
readonly Widget template;
readonly Dictionary<string, ModContent.ModSource> sources = new Dictionary<string, ModContent.ModSource>();
readonly Dictionary<string, ModContent.ModDownload> downloads = new Dictionary<string, ModContent.ModDownload>();
bool discAvailable;
[ObjectCreator.UseCtor]
public ModContentLogic(Widget widget, string modId, Action onCancel)
public ModContentLogic(Widget widget, Manifest mod, ModContent content, Action onCancel)
{
this.content = content;
var panel = widget.Get("CONTENT_PANEL");
content = ModMetadata.AllMods[modId].ModContent;
var modFileSystem = new FileSystem.FileSystem(Game.Mods);
modFileSystem.LoadFromManifest(mod);
var sourceYaml = MiniYaml.Load(modFileSystem, content.Sources, null);
foreach (var s in sourceYaml)
sources.Add(s.Key, new ModContent.ModSource(s.Value));
var downloadYaml = MiniYaml.Load(modFileSystem, content.Downloads, null);
foreach (var d in downloadYaml)
downloads.Add(d.Key, new ModContent.ModDownload(d.Value));
modFileSystem.UnmountAll();
scrollPanel = panel.Get<ScrollPanelWidget>("PACKAGES");
template = scrollPanel.Get<ContainerWidget>("PACKAGE_TEMPLATE");
@@ -56,6 +74,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
discButton.OnClick = () => Ui.OpenWindow("DISC_INSTALL_PANEL", new WidgetArgs
{
{ "afterInstall", () => { } },
{ "sources", sources },
{ "content", content }
});
@@ -87,9 +106,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
requiredWidget.IsVisible = () => p.Value.Required;
var sourceWidget = container.Get<ImageWidget>("DISC");
var sources = p.Value.Sources.Select(s => content.Sources[s].Title).Distinct();
var sourceList = sources.JoinWith("\n");
var isSourceAvailable = sources.Any();
var sourceTitles = p.Value.Sources.Select(s => sources[s].Title).Distinct();
var sourceList = sourceTitles.JoinWith("\n");
var isSourceAvailable = sourceTitles.Any();
sourceWidget.GetTooltipText = () => sourceList;
sourceWidget.IsVisible = () => isSourceAvailable;
@@ -100,10 +119,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (downloadEnabled)
{
var download = content.Downloads[p.Value.Download];
var widgetArgs = new WidgetArgs
{
{ "download", download },
{ "download", downloads[p.Value.Download] },
{ "onSuccess", () => { } }
};

View File

@@ -10,6 +10,7 @@
#endregion
using System;
using System.Linq;
using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets.Logic
@@ -17,13 +18,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
public class ModContentPromptLogic : ChromeLogic
{
[ObjectCreator.UseCtor]
public ModContentPromptLogic(Widget widget, string modId, Action continueLoading)
public ModContentPromptLogic(Widget widget, Manifest mod, ModContent content, Action continueLoading)
{
var panel = widget.Get("CONTENT_PROMPT_PANEL");
var mod = ModMetadata.AllMods[modId];
var content = ModMetadata.AllMods[modId].ModContent;
var headerTemplate = panel.Get<LabelWidget>("HEADER_TEMPLATE");
var headerLines = !string.IsNullOrEmpty(content.InstallPromptMessage) ? content.InstallPromptMessage.Replace("\\n", "\n").Split('\n') : new string[0];
var headerHeight = 0;
@@ -46,7 +44,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
Ui.OpenWindow("CONTENT_PANEL", new WidgetArgs
{
{ "modId", modId },
{ "mod", mod },
{ "content", content },
{ "onCancel", Ui.CloseWindow }
});
};
@@ -56,9 +55,18 @@ namespace OpenRA.Mods.Common.Widgets.Logic
quickButton.Bounds.Y += headerHeight;
quickButton.OnClick = () =>
{
var modFileSystem = new FileSystem.FileSystem(Game.Mods);
modFileSystem.LoadFromManifest(mod);
var downloadYaml = MiniYaml.Load(modFileSystem, content.Downloads, null);
modFileSystem.UnmountAll();
var download = downloadYaml.FirstOrDefault(n => n.Key == content.QuickDownload);
if (download == null)
throw new InvalidOperationException("Mod QuickDownload `{0}` definition not found.".F(content.QuickDownload));
Ui.OpenWindow("PACKAGE_DOWNLOAD_PANEL", new WidgetArgs
{
{ "download", content.Downloads[content.QuickDownload] },
{ "download", new ModContent.ModDownload(download.Value) },
{ "onSuccess", continueLoading }
});
};

View File

@@ -64,7 +64,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
public MainMenuLogic(Widget widget, World world, ModData modData)
{
rootMenu = widget;
rootMenu.Get<LabelWidget>("VERSION_LABEL").Text = modData.Manifest.Mod.Version;
rootMenu.Get<LabelWidget>("VERSION_LABEL").Text = modData.Manifest.Metadata.Version;
// Menu buttons
var mainMenu = widget.Get("MAIN_MENU");
@@ -90,7 +90,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
// so we can't do this inside the input handler.
Game.RunAfterTick(() =>
{
Game.Settings.Game.PreviousMod = modData.Manifest.Mod.Id;
Game.Settings.Game.PreviousMod = modData.Manifest.Id;
Game.InitializeMod("modchooser", null);
});
};
@@ -283,9 +283,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
// Send the mod and engine version to support version-filtered news (update prompts)
var newsURL = Game.Settings.Game.NewsUrl + "?version={0}&mod={1}&modversion={2}".F(
Uri.EscapeUriString(ModMetadata.AllMods["modchooser"].Version),
Uri.EscapeUriString(Game.ModData.Manifest.Mod.Id),
Uri.EscapeUriString(Game.ModData.Manifest.Mod.Version));
Uri.EscapeUriString(Game.Mods["modchooser"].Metadata.Version),
Uri.EscapeUriString(Game.ModData.Manifest.Id),
Uri.EscapeUriString(Game.ModData.Manifest.Metadata.Version));
// Append system profile data if the player has opted in
if (Game.Settings.Debug.SendSystemInformation)

View File

@@ -24,32 +24,39 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
readonly Widget modList;
readonly ButtonWidget modTemplate;
readonly ModMetadata[] allMods;
readonly Manifest[] allMods;
readonly Dictionary<string, Sprite> previews = new Dictionary<string, Sprite>();
readonly Dictionary<string, Sprite> logos = new Dictionary<string, Sprite>();
readonly Cache<Manifest, ModContent> content = new Cache<Manifest, ModContent>(LoadModContent);
readonly Widget modChooserPanel;
readonly ButtonWidget loadButton;
readonly SheetBuilder sheetBuilder;
ModMetadata selectedMod;
Manifest selectedMod;
string selectedAuthor;
string selectedDescription;
int modOffset = 0;
static ModContent LoadModContent(Manifest mod)
{
return mod.Get<ModContent>(Game.ModData.ObjectCreator);
}
[ObjectCreator.UseCtor]
public ModBrowserLogic(Widget widget, ModData modData)
{
modChooserPanel = widget;
loadButton = modChooserPanel.Get<ButtonWidget>("LOAD_BUTTON");
loadButton.OnClick = () => LoadMod(selectedMod);
loadButton.IsDisabled = () => selectedMod.Id == modData.Manifest.Mod.Id;
loadButton.IsDisabled = () => selectedMod.Id == modData.Manifest.Id;
var contentButton = modChooserPanel.Get<ButtonWidget>("CONFIGURE_BUTTON");
contentButton.IsDisabled = () => selectedMod.ModContent == null;
contentButton.OnClick = () =>
{
var widgetArgs = new WidgetArgs
{
{ "modId", selectedMod.Id },
{ "mod", selectedMod },
{ "content", content[selectedMod] },
{ "onCancel", () => { } }
};
@@ -62,9 +69,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
modTemplate = modList.Get<ButtonWidget>("MOD_TEMPLATE");
modChooserPanel.Get<LabelWidget>("MOD_DESC").GetText = () => selectedDescription;
modChooserPanel.Get<LabelWidget>("MOD_TITLE").GetText = () => selectedMod.Title;
modChooserPanel.Get<LabelWidget>("MOD_TITLE").GetText = () => selectedMod.Metadata.Title;
modChooserPanel.Get<LabelWidget>("MOD_AUTHOR").GetText = () => selectedAuthor;
modChooserPanel.Get<LabelWidget>("MOD_VERSION").GetText = () => selectedMod.Version;
modChooserPanel.Get<LabelWidget>("MOD_VERSION").GetText = () => selectedMod.Metadata.Version;
var prevMod = modChooserPanel.Get<ButtonWidget>("PREV_MOD");
prevMod.OnClick = () => { modOffset -= 1; RebuildModList(); };
@@ -82,8 +89,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
};
sheetBuilder = new SheetBuilder(SheetType.BGRA);
allMods = ModMetadata.AllMods.Values.Where(m => !m.Hidden)
.OrderBy(m => m.Title)
allMods = Game.Mods.Values.Where(m => !m.Metadata.Hidden)
.OrderBy(m => m.Metadata.Title)
.ToArray();
// Load preview images, and eat any errors
@@ -91,7 +98,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
try
{
using (var stream = ModMetadata.AllMods[mod.Id].Package.GetStream("preview.png"))
using (var stream = mod.Package.GetStream("preview.png"))
using (var preview = new Bitmap(stream))
if (preview.Width == 296 && preview.Height == 196)
previews.Add(mod.Id, sheetBuilder.Add(preview));
@@ -100,7 +107,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
try
{
using (var stream = ModMetadata.AllMods[mod.Id].Package.GetStream("logo.png"))
using (var stream = mod.Package.GetStream("logo.png"))
using (var logo = new Bitmap(stream))
if (logo.Width == 96 && logo.Height == 96)
logos.Add(mod.Id, sheetBuilder.Add(logo));
@@ -108,9 +115,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
catch (Exception) { }
}
ModMetadata initialMod;
ModMetadata.AllMods.TryGetValue(Game.Settings.Game.PreviousMod, out initialMod);
SelectMod(initialMod != null && initialMod.Id != "modchooser" ? initialMod : ModMetadata.AllMods["ra"]);
Manifest initialMod;
Game.Mods.TryGetValue(Game.Settings.Game.PreviousMod, out initialMod);
SelectMod(initialMod != null && initialMod.Id != "modchooser" ? initialMod : Game.Mods["ra"]);
RebuildModList();
}
@@ -146,7 +153,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
SelectMod(mod);
};
item.TooltipText = mod.Title;
item.TooltipText = mod.Metadata.Title;
if (j < 9)
item.Key = new Hotkey((Keycode)((int)Keycode.NUMBER_1 + j), Modifiers.None);
@@ -160,23 +167,25 @@ namespace OpenRA.Mods.Common.Widgets.Logic
}
}
void SelectMod(ModMetadata mod)
void SelectMod(Manifest mod)
{
selectedMod = mod;
selectedAuthor = "By " + (mod.Author ?? "unknown author");
selectedDescription = (mod.Description ?? "").Replace("\\n", "\n");
selectedAuthor = "By " + (mod.Metadata.Author ?? "unknown author");
selectedDescription = (mod.Metadata.Description ?? "").Replace("\\n", "\n");
var selectedIndex = Array.IndexOf(allMods, mod);
if (selectedIndex - modOffset > 4)
modOffset = selectedIndex - 4;
}
void LoadMod(ModMetadata mod)
void LoadMod(Manifest mod)
{
if (!Game.IsModInstalled(mod.Id))
var modId = mod.Id;
if (!Game.IsModInstalled(modId))
{
var widgetArgs = new WidgetArgs
{
{ "modId", mod.Id }
{ "mod", selectedMod },
{ "content", content[selectedMod] },
};
Ui.OpenWindow("INSTALL_MOD_PANEL", widgetArgs);
@@ -188,8 +197,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var widgetArgs = new WidgetArgs
{
{ "continueLoading", () =>
Game.RunAfterTick(() => Game.InitializeMod(mod.Id, new Arguments())) },
{ "modId", mod.Id }
Game.RunAfterTick(() => Game.InitializeMod(modId, new Arguments())) },
{ "mod", selectedMod },
{ "content", content[selectedMod] },
};
Ui.OpenWindow("CONTENT_PROMPT_PANEL", widgetArgs);
@@ -201,13 +211,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
Ui.CloseWindow();
sheetBuilder.Dispose();
Game.InitializeMod(mod.Id, null);
Game.InitializeMod(modId, null);
});
}
static bool IsModInstalled(ModMetadata mod)
bool IsModInstalled(Manifest mod)
{
return mod.ModContent.Packages
return content[mod].Packages
.Where(p => p.Value.Required)
.All(p => p.Value.TestFiles.All(f => File.Exists(Platform.ResolvePath(f))));
}

View File

@@ -316,9 +316,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic
};
var queryURL = Game.Settings.Server.MasterServer + "games?version={0}&mod={1}&modversion={2}".F(
Uri.EscapeUriString(ModMetadata.AllMods["modchooser"].Version),
Uri.EscapeUriString(Game.ModData.Manifest.Mod.Id),
Uri.EscapeUriString(Game.ModData.Manifest.Mod.Version));
Uri.EscapeUriString(Game.Mods["modchooser"].Metadata.Version),
Uri.EscapeUriString(Game.ModData.Manifest.Id),
Uri.EscapeUriString(Game.ModData.Manifest.Metadata.Version));
currentQuery = new Download(queryURL, _ => { }, onComplete);
}
@@ -330,7 +330,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return 0;
// Games for the current mod+version are sorted first
if (testEntry.ModId == modData.Manifest.Mod.Id)
if (testEntry.ModId == modData.Manifest.Id)
return 2;
// Followed by games for different mods that are joinable

View File

@@ -59,8 +59,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
replayList = panel.Get<ScrollPanelWidget>("REPLAY_LIST");
var template = panel.Get<ScrollItemWidget>("REPLAY_TEMPLATE");
var mod = modData.Manifest.Mod;
var dir = Platform.ResolvePath("^", "Replays", mod.Id, mod.Version);
var mod = modData.Manifest;
var dir = Platform.ResolvePath("^", "Replays", mod.Id, mod.Metadata.Version);
if (Directory.Exists(dir))
ThreadPool.QueueUserWorkItem(_ => LoadReplays(dir, template));

View File

@@ -34,10 +34,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
if (mod == null)
return IncompatibleReplayDialog("unknown mod", mod, onCancel);
var allMods = ModMetadata.AllMods;
if (!allMods.ContainsKey(mod))
if (!Game.Mods.ContainsKey(mod))
return IncompatibleReplayDialog("unavailable mod", mod, onCancel);
else if (allMods[mod].Version != version)
if (Game.Mods[mod].Metadata.Version != version)
return IncompatibleReplayDialog("incompatible version", version, onCancel);
if (replayMeta.GameInfo.MapPreview.Status != MapStatus.Available)

View File

@@ -17,21 +17,21 @@ namespace OpenRA.Mods.D2k.UtilityCommands
{
class ImportD2kMapCommand : IUtilityCommand
{
public string Name { get { return "--import-d2k-map"; } }
string IUtilityCommand.Name { get { return "--import-d2k-map"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 3;
}
[Desc("FILENAME", "TILESET", "Convert a legacy Dune 2000 MAP file to the OpenRA format.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
Game.ModData = utility.ModData;
var rules = Ruleset.LoadDefaultsForTileSet(modData, "ARRAKIS");
var map = D2kMapImporter.Import(args[1], modData.Manifest.Mod.Id, args[2], rules);
var rules = Ruleset.LoadDefaultsForTileSet(utility.ModData, "ARRAKIS");
var map = D2kMapImporter.Import(args[1], utility.ModData.Manifest.Id, args[2], rules);
if (map == null)
return;

View File

@@ -25,13 +25,11 @@ namespace OpenRA.Mods.RA.UtilityCommands
// TODO: 128x128 is probably not true for "mega maps" from the expansions.
public ImportRedAlertLegacyMapCommand() : base(128) { }
public string Name { get { return "--import-ra-map"; } }
string IUtilityCommand.Name { get { return "--import-ra-map"; } }
bool IUtilityCommand.ValidateArguments(string[] args) { return ValidateArguments(args); }
[Desc("FILENAME", "Convert a legacy Red Alert INI/MPR map to the OpenRA format.")]
public override void Run(ModData modData, string[] args)
{
base.Run(modData, args);
}
void IUtilityCommand.Run(Utility utility, string[] args) { Run(utility, args); }
public override void ValidateMapFormat(int format)
{

View File

@@ -149,10 +149,10 @@ namespace OpenRA.Mods.TS.UtilityCommands
};
[Desc("FILENAME", "Convert a Tiberian Sun map to the OpenRA format.")]
void IUtilityCommand.Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
Game.ModData = utility.ModData;
var filename = args[1];
var file = new IniFile(File.Open(args[1], FileMode.Open));
@@ -163,12 +163,12 @@ namespace OpenRA.Mods.TS.UtilityCommands
var iniBounds = mapSection.GetValue("LocalSize", "0, 0, 0, 0").Split(',').Select(int.Parse).ToArray();
var size = new Size(iniSize[2], 2 * iniSize[3]);
var map = new Map(Game.ModData, modData.DefaultTileSets[tileset], size.Width, size.Height)
var map = new Map(Game.ModData, utility.ModData.DefaultTileSets[tileset], size.Width, size.Height)
{
Title = basic.GetValue("Name", Path.GetFileNameWithoutExtension(filename)),
Author = "Westwood Studios",
Bounds = new Rectangle(iniBounds[0], iniBounds[1], iniBounds[2], 2 * iniBounds[3] + 2 * iniBounds[1]),
RequiresMod = modData.Manifest.Mod.Id
RequiresMod = utility.ModData.Manifest.Id
};
var fullSize = new int2(iniSize[2], iniSize[3]);

View File

@@ -20,21 +20,21 @@ namespace OpenRA.Mods.TS.UtilityCommands
{
class LegacyRulesImporter : IUtilityCommand
{
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 3;
}
public string Name { get { return "--rules-import"; } }
string IUtilityCommand.Name { get { return "--rules-import"; } }
IniFile rulesIni;
IniFile artIni;
[Desc("RULES.INI", "ART.INI", "Convert ART.INI and RULES.INI to the OpenRA rules definition format.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
Game.ModData = utility.ModData;
rulesIni = new IniFile(File.Open(args[1], FileMode.Open));
artIni = new IniFile(File.Open(args[2], FileMode.Open));

View File

@@ -19,21 +19,21 @@ namespace OpenRA.Mods.TS.UtilityCommands
{
class ImportLegacySequenceCommand : IUtilityCommand
{
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 2;
}
public string Name { get { return "--sequence-import"; } }
string IUtilityCommand.Name { get { return "--sequence-import"; } }
IniFile file;
MapGrid grid;
[Desc("FILENAME", "Convert ART.INI to the OpenRA sequence definition format.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
Game.ModData = utility.ModData;
grid = Game.ModData.Manifest.Get<MapGrid>();

View File

@@ -20,22 +20,22 @@ namespace OpenRA.Mods.TS.UtilityCommands
{
class ImportLegacyTilesetCommand : IUtilityCommand
{
public string Name { get { return "--tileset-import"; } }
string IUtilityCommand.Name { get { return "--tileset-import"; } }
public bool ValidateArguments(string[] args)
bool IUtilityCommand.ValidateArguments(string[] args)
{
return args.Length >= 3;
}
[Desc("FILENAME", "TEMPLATEEXTENSION", "[TILESETNAME]", "Convert a legacy tileset to the OpenRA format.")]
public void Run(ModData modData, string[] args)
void IUtilityCommand.Run(Utility utility, string[] args)
{
// HACK: The engine code assumes that Game.modData is set.
Game.ModData = modData;
var modData = Game.ModData = utility.ModData;
var file = new IniFile(File.Open(args[1], FileMode.Open));
var extension = args[2];
var tileSize = modData.Manifest.Get<MapGrid>().TileSize;
var tileSize = utility.ModData.Manifest.Get<MapGrid>().TileSize;
var templateIndex = 0;

View File

@@ -10,6 +10,7 @@
#endregion
using System;
using System.IO;
using System.Net;
using System.Threading;
using OpenRA.Support;
@@ -20,19 +21,32 @@ namespace OpenRA.Server
{
static void Main(string[] args)
{
var arguments = new Arguments(args);
Log.AddChannel("debug", "dedicated-debug.log");
Log.AddChannel("perf", "dedicated-perf.log");
Log.AddChannel("server", "dedicated-server.log");
Log.AddChannel("nat", "dedicated-nat.log");
// Special case handling of Game.Mod argument: if it matches a real filesystem path
// then we use this to override the mod search path, and replace it with the mod id
var modArgument = arguments.GetValue("Game.Mod", null);
string customModPath = null;
if (modArgument != null && (File.Exists(modArgument) || Directory.Exists(modArgument)))
{
customModPath = modArgument;
arguments.ReplaceValue("Game.Mod", Path.GetFileNameWithoutExtension(modArgument));
}
// HACK: The engine code assumes that Game.Settings is set.
// This isn't nearly as bad as ModData, but is still not very nice.
Game.InitializeSettings(new Arguments(args));
Game.InitializeSettings(arguments);
var settings = Game.Settings.Server;
// HACK: The engine code *still* assumes that Game.ModData is set
var mod = Game.Settings.Game.Mod;
var modData = Game.ModData = new ModData(mod, false);
var mods = new InstalledMods(customModPath);
// HACK: The engine code *still* assumes that Game.ModData is set
var modData = Game.ModData = new ModData(mods[mod], mods);
modData.MapCache.LoadMaps();
settings.Map = modData.MapCache.ChooseInitialMap(settings.Map, new MersenneTwister());

View File

@@ -11,11 +11,14 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
namespace OpenRA.Utility
namespace OpenRA
{
using UtilityActions = Dictionary<string, KeyValuePair<Action<Utility, string[]>, Func<string[], bool>>>;
[Serializable]
public class NoSuchCommandException : Exception
{
@@ -37,36 +40,46 @@ namespace OpenRA.Utility
{
static void Main(string[] args)
{
if (args.Length == 0)
{
PrintUsage(null);
return;
}
Log.AddChannel("perf", null);
Log.AddChannel("debug", null);
var modName = args[0];
if (!ModMetadata.AllMods.Keys.Contains(modName))
Game.InitializeSettings(Arguments.Empty);
if (args.Length == 0)
{
PrintUsage(null);
PrintUsage(new InstalledMods(null), null);
return;
}
Game.InitializeSettings(Arguments.Empty);
var modData = new ModData(modName);
var modId = args[0];
string customModPath = null;
if (File.Exists(modId) || Directory.Exists(modId))
{
customModPath = modId;
modId = Path.GetFileNameWithoutExtension(modId);
}
var mods = new InstalledMods(customModPath);
if (!mods.Keys.Contains(modId))
{
PrintUsage(mods, null);
return;
}
var modData = new ModData(mods[modId], mods);
var utility = new Utility(modData, mods);
args = args.Skip(1).ToArray();
var actions = new Dictionary<string, KeyValuePair<Action<ModData, string[]>, Func<string[], bool>>>();
var actions = new UtilityActions();
foreach (var commandType in modData.ObjectCreator.GetTypesImplementing<IUtilityCommand>())
{
var command = (IUtilityCommand)Activator.CreateInstance(commandType);
var kvp = new KeyValuePair<Action<ModData, string[]>, Func<string[], bool>>(command.Run, command.ValidateArguments);
var kvp = new KeyValuePair<Action<Utility, string[]>, Func<string[], bool>>(command.Run, command.ValidateArguments);
actions.Add(command.Name, kvp);
}
if (args.Length == 0)
{
PrintUsage(actions);
PrintUsage(mods, actions);
return;
}
@@ -81,7 +94,7 @@ namespace OpenRA.Utility
if (validateActionArgs.Invoke(args))
{
action.Invoke(modData, args);
action.Invoke(utility, args);
}
else
{
@@ -105,10 +118,10 @@ namespace OpenRA.Utility
}
}
static void PrintUsage(IDictionary<string, KeyValuePair<Action<ModData, string[]>, Func<string[], bool>>> actions)
static void PrintUsage(InstalledMods mods, UtilityActions actions)
{
Console.WriteLine("Run `OpenRA.Utility.exe [MOD]` to see a list of available commands.");
Console.WriteLine("The available mods are: " + string.Join(", ", ModMetadata.AllMods.Keys));
Console.WriteLine("The available mods are: " + string.Join(", ", mods.Keys));
Console.WriteLine();
if (actions == null)
@@ -122,7 +135,7 @@ namespace OpenRA.Utility
}
}
static void GetActionUsage(string key, Action<ModData, string[]> action)
static void GetActionUsage(string key, Action<Utility, string[]> action)
{
var descParts = action.Method.GetCustomAttributes<DescAttribute>(true)
.SelectMany(d => d.Lines).ToArray();

View File

@@ -0,0 +1,14 @@
covertops: Covert Operations Expansion (English)
IDFiles:
GAME/GAME.DAT: be5a6c4c0a581da09e8f34a3bbf7bd17e525085c
CONQUER.MIX: 713b53fa4c188ca9619c6bbeadbfc86513704266
Install:
copy: .
^Content/cnc/scores-covertops.mix: SCORES.MIX
covertops-linux: Covert Operations Expansion (English)
IDFiles:
game/game.dat: be5a6c4c0a581da09e8f34a3bbf7bd17e525085c
conquer.mix: 713b53fa4c188ca9619c6bbeadbfc86513704266
Install:
copy: .
^Content/cnc/scores-covertops.mix: scores.mix

View File

@@ -0,0 +1,16 @@
basefiles: Base Freeware Content
MirrorList: http://www.openra.net/packages/cnc-mirrors.txt
Extract:
^Content/cnc/conquer.mix: conquer.mix
^Content/cnc/desert.mix: desert.mix
^Content/cnc/general.mix: general.mix
^Content/cnc/sounds.mix: sounds.mix
^Content/cnc/speech.mix: speech.mix
^Content/cnc/temperat.mix: temperat.mix
^Content/cnc/tempicnh.mix: tempicnh.mix
^Content/cnc/transit.mix: transit.mix
^Content/cnc/winter.mix: winter.mix
music: Freeware Music
MirrorList: http://www.openra.net/packages/cnc-music-mirrors.txt
Extract:
^Content/cnc/scores.mix: scores.mix

View File

@@ -0,0 +1,336 @@
tfd: C&C The First Decade (English)
IDFiles:
data1.hdr: bef3a08c3fc1b1caf28ca0dbb97c1f900005930e
data1.cab: 12ad6113a6890a1b4d5651a75378c963eaf513b9
Install:
extract-iscab: data1.hdr
Volumes:
2: data2.cab
3: data3.cab
Extract:
^Content/cnc/conquer.mix: CnC\\CONQUER.MIX
^Content/cnc/desert.mix: CnC\\DESERT.MIX
^Content/cnc/general.mix: CnC\\GENERAL.MIX
^Content/cnc/scores.mix: CnC\\SCORES.MIX
^Content/cnc/sounds.mix: CnC\\SOUNDS.MIX
^Content/cnc/temperat.mix: CnC\\TEMPERAT.MIX
^Content/cnc/winter.mix: CnC\\WINTER.MIX
^Content/cnc/speech.mix: CnC\\SPEECH.MIX
^Content/cnc/tempicnh.mix: CnC\\TEMPICNH.MIX
^Content/cnc/transit.mix: CnC\\TRANSIT.MIX
^Content/cnc/scores-covertops.mix: CnC\covert\SCORES.MIX
^Content/cnc/movies.mix: CnC\\MOVIES.MIX
extract-raw: ^Content/cnc/movies.mix
^Content/cnc/movies/airstrk.vqa:
Offset: 1266
Length: 4444442
^Content/cnc/movies/akira.vqa:
Offset: 4445708
Length: 7803444
^Content/cnc/movies/bkground.vqa:
Offset: 12249152
Length: 15267052
^Content/cnc/movies/burdet1.vqa:
Offset: 27516204
Length: 10410614
^Content/cnc/movies/burdet2.vqa:
Offset: 37926818
Length: 2062190
^Content/cnc/movies/gdi4a.vqa:
Offset: 39989008
Length: 4450582
^Content/cnc/movies/gdi4b.vqa:
Offset: 44439590
Length: 6603530
^Content/cnc/movies/gdifina.vqa:
Offset: 51043120
Length: 12888650
^Content/cnc/movies/gdifinb.vqa:
Offset: 63931770
Length: 17769978
^Content/cnc/movies/nod7a.vqa:
Offset: 81701748
Length: 4740470
^Content/cnc/movies/nod7b.vqa:
Offset: 86442218
Length: 4671402
^Content/cnc/movies/visor.vqa:
Offset: 91113620
Length: 4407162
^Content/cnc/movies/turtkill.vqa:
Offset: 95520782
Length: 3323444
^Content/cnc/movies/trtkil_d.vqa:
Offset: 98844226
Length: 3511836
^Content/cnc/movies/trailer.vqa:
Offset: 102356062
Length: 23163930
^Content/cnc/movies/tiberfx.vqa:
Offset: 125519992
Length: 8735102
^Content/cnc/movies/tbrinfo3.vqa:
Offset: 134255094
Length: 14972046
^Content/cnc/movies/tbrinfo2.vqa:
Offset: 149227140
Length: 16195290
^Content/cnc/movies/tbrinfo1.vqa:
Offset: 165422430
Length: 23479052
^Content/cnc/movies/tankkill.vqa:
Offset: 188901482
Length: 3298978
^Content/cnc/movies/tankgo.vqa:
Offset: 192200460
Length: 1403876
^Content/cnc/movies/sundial.vqa:
Offset: 193604336
Length: 3653636
^Content/cnc/movies/stealth.vqa:
Offset: 197257972
Length: 4521860
^Content/cnc/movies/spycrash.vqa:
Offset: 201779832
Length: 1886288
^Content/cnc/movies/sethpre.vqa:
Offset: 203666120
Length: 10914610
^Content/cnc/movies/seige.vqa:
Offset: 214580730
Length: 2705978
^Content/cnc/movies/samsite.vqa:
Offset: 217286708
Length: 1410418
^Content/cnc/movies/samdie.vqa:
Offset: 218697126
Length: 3741942
^Content/cnc/movies/sabotage.vqa:
Offset: 222439068
Length: 1386202
^Content/cnc/movies/retro.vqa:
Offset: 223825270
Length: 6434382
^Content/cnc/movies/refint.vqa:
Offset: 230259652
Length: 5090040
^Content/cnc/movies/podium.vqa:
Offset: 235349692
Length: 2790664
^Content/cnc/movies/planecra.vqa:
Offset: 238140356
Length: 5085426
^Content/cnc/movies/pintle.vqa:
Offset: 243225782
Length: 2757536
^Content/cnc/movies/paratrop.vqa:
Offset: 245983318
Length: 3180272
^Content/cnc/movies/obel.vqa:
Offset: 249163590
Length: 3851370
^Content/cnc/movies/nuke.vqa:
Offset: 253014960
Length: 3126662
^Content/cnc/movies/nodsweep.vqa:
Offset: 256141622
Length: 3642174
^Content/cnc/movies/nodlose.vqa:
Offset: 259783796
Length: 5148924
^Content/cnc/movies/nodflees.vqa:
Offset: 264932720
Length: 3056426
^Content/cnc/movies/nodfinal.vqa:
Offset: 267989146
Length: 23326586
^Content/cnc/movies/nodend4.vqa:
Offset: 291315732
Length: 25535232
^Content/cnc/movies/nodend3.vqa:
Offset: 316850964
Length: 25725824
^Content/cnc/movies/nodend2.vqa:
Offset: 342576788
Length: 27214048
^Content/cnc/movies/nodend1.vqa:
Offset: 369790836
Length: 27172272
^Content/cnc/movies/nod9.vqa:
Offset: 396963108
Length: 9357980
^Content/cnc/movies/nod8.vqa:
Offset: 406321088
Length: 11597940
^Content/cnc/movies/nod6.vqa:
Offset: 417919028
Length: 5007744
^Content/cnc/movies/nod5.vqa:
Offset: 422926772
Length: 6641700
^Content/cnc/movies/nod4b.vqa:
Offset: 429568472
Length: 3867618
^Content/cnc/movies/nod4a.vqa:
Offset: 433436090
Length: 3838924
^Content/cnc/movies/nod3.vqa:
Offset: 437275014
Length: 3603314
^Content/cnc/movies/nod2.vqa:
Offset: 440878328
Length: 7200720
^Content/cnc/movies/nod1pre.vqa:
Offset: 448079048
Length: 395720
^Content/cnc/movies/nod13.vqa:
Offset: 448474768
Length: 2746626
^Content/cnc/movies/nod12.vqa:
Offset: 451221394
Length: 6576562
^Content/cnc/movies/nod11.vqa:
Offset: 457797956
Length: 4629270
^Content/cnc/movies/nod10b.vqa:
Offset: 462427226
Length: 6386444
^Content/cnc/movies/nod10a.vqa:
Offset: 468813670
Length: 7205632
^Content/cnc/movies/nod1.vqa:
Offset: 476019302
Length: 4663258
^Content/cnc/movies/nitejump.vqa:
Offset: 480682560
Length: 3702838
^Content/cnc/movies/napalm.vqa:
Offset: 484385398
Length: 4004146
^Content/cnc/movies/logo.vqa:
Offset: 488389544
Length: 3562630
^Content/cnc/movies/landing.vqa:
Offset: 491952174
Length: 1617094
^Content/cnc/movies/kanepre.vqa:
Offset: 493569268
Length: 17220712
^Content/cnc/movies/intro2.vqa:
Offset: 510789980
Length: 21058732
^Content/cnc/movies/insites.vqa:
Offset: 531848712
Length: 460482
^Content/cnc/movies/hellvaly.vqa:
Offset: 532309194
Length: 6658950
^Content/cnc/movies/gunboat.vqa:
Offset: 538968144
Length: 3203706
^Content/cnc/movies/generic.vqa:
Offset: 542171850
Length: 1452820
^Content/cnc/movies/gdilose.vqa:
Offset: 543624670
Length: 2097912
^Content/cnc/movies/gdiend2.vqa:
Offset: 545722582
Length: 25242946
^Content/cnc/movies/gdiend1.vqa:
Offset: 570965528
Length: 25311636
^Content/cnc/movies/gdi9.vqa:
Offset: 596277164
Length: 11806994
^Content/cnc/movies/gdi8b.vqa:
Offset: 608084158
Length: 5324410
^Content/cnc/movies/gdi8a.vqa:
Offset: 613408568
Length: 4672548
^Content/cnc/movies/gdi7.vqa:
Offset: 618081116
Length: 4241952
^Content/cnc/movies/gdi6.vqa:
Offset: 622323068
Length: 3959650
^Content/cnc/movies/gdi5.vqa:
Offset: 626282718
Length: 3818244
^Content/cnc/movies/gdi3lose.vqa:
Offset: 630100962
Length: 2265770
^Content/cnc/movies/gdi3.vqa:
Offset: 632366732
Length: 5443848
^Content/cnc/movies/gdi2.vqa:
Offset: 637810580
Length: 7883500
^Content/cnc/movies/gdi15.vqa:
Offset: 645694080
Length: 11684610
^Content/cnc/movies/gdi14.vqa:
Offset: 657378690
Length: 5282770
^Content/cnc/movies/gdi13.vqa:
Offset: 662661460
Length: 6900914
^Content/cnc/movies/gdi12.vqa:
Offset: 669562374
Length: 3669404
^Content/cnc/movies/gdi11.vqa:
Offset: 673231778
Length: 5895754
^Content/cnc/movies/gdi10.vqa:
Offset: 679127532
Length: 5761514
^Content/cnc/movies/gdi1.vqa:
Offset: 684889046
Length: 6341298
^Content/cnc/movies/gameover.vqa:
Offset: 691230344
Length: 2087322
^Content/cnc/movies/forestkl.vqa:
Offset: 693317666
Length: 1500986
^Content/cnc/movies/flyy.vqa:
Offset: 694818652
Length: 1373532
^Content/cnc/movies/flag.vqa:
Offset: 696192184
Length: 4308680
^Content/cnc/movies/dino.vqa:
Offset: 700500864
Length: 1347896
^Content/cnc/movies/dessweep.vqa:
Offset: 701848760
Length: 3563646
^Content/cnc/movies/desolat.vqa:
Offset: 705412406
Length: 8385122
^Content/cnc/movies/deskill.vqa:
Offset: 713797528
Length: 1483634
^Content/cnc/movies/desflees.vqa:
Offset: 715281162
Length: 2698426
^Content/cnc/movies/consyard.vqa:
Offset: 717979588
Length: 7864652
^Content/cnc/movies/cc2tease.vqa:
Offset: 725844240
Length: 12506712
^Content/cnc/movies/bombflee.vqa:
Offset: 738350952
Length: 2859726
^Content/cnc/movies/bombaway.vqa:
Offset: 741210678
Length: 5579588
^Content/cnc/movies/bcanyon.vqa:
Offset: 746790266
Length: 5172288
^Content/cnc/movies/banner.vqa:
Offset: 751962554
Length: 2229408
delete: ^Content/cnc/movies.mix

View File

@@ -0,0 +1,438 @@
gdi95: C&C Gold (GDI Disc, English)
IDFiles:
DISK.WAV: 8bef9a6687c0fe0afd57c6561df58fa6e64f145d
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
Install:
copy: .
^Content/cnc/conquer.mix: CONQUER.MIX
^Content/cnc/desert.mix: DESERT.MIX
^Content/cnc/general.mix: GENERAL.MIX
^Content/cnc/scores.mix: SCORES.MIX
^Content/cnc/sounds.mix: SOUNDS.MIX
^Content/cnc/temperat.mix: TEMPERAT.MIX
^Content/cnc/winter.mix: WINTER.MIX
extract-blast: INSTALL/SETUP.Z
^Content/cnc/speech.mix:
Offset: 10203213
Length: 603293
^Content/cnc/tempicnh.mix:
Offset: 10925941
Length: 119096
^Content/cnc/transit.mix:
Offset: 11078017
Length: 3724462
extract-raw: MOVIES.MIX
^Content/cnc/movies/visor.vqa:
Offset: 786
Length: 4407162
^Content/cnc/movies/turtkill.vqa:
Offset: 4407948
Length: 3323444
^Content/cnc/movies/trailer.vqa:
Offset: 7731392
Length: 23163930
^Content/cnc/movies/tbrinfo3.vqa:
Offset: 30895322
Length: 14972046
^Content/cnc/movies/tbrinfo2.vqa:
Offset: 45867368
Length: 16195290
^Content/cnc/movies/tbrinfo1.vqa:
Offset: 62062658
Length: 23479052
^Content/cnc/movies/seige.vqa:
Offset: 85541710
Length: 2705978
^Content/cnc/movies/samsite.vqa:
Offset: 88247688
Length: 1410418
^Content/cnc/movies/samdie.vqa:
Offset: 89658106
Length: 3741942
^Content/cnc/movies/sabotage.vqa:
Offset: 93400048
Length: 1386202
^Content/cnc/movies/retro.vqa:
Offset: 94786250
Length: 6434382
^Content/cnc/movies/podium.vqa:
Offset: 101220632
Length: 2790664
^Content/cnc/movies/planecra.vqa:
Offset: 104011296
Length: 5085426
^Content/cnc/movies/pintle.vqa:
Offset: 109096722
Length: 2757536
^Content/cnc/movies/paratrop.vqa:
Offset: 111854258
Length: 3180272
^Content/cnc/movies/nodsweep.vqa:
Offset: 115034530
Length: 3642174
^Content/cnc/movies/nodlose.vqa:
Offset: 118676704
Length: 5148924
^Content/cnc/movies/nodflees.vqa:
Offset: 123825628
Length: 3056426
^Content/cnc/movies/nod1.vqa:
Offset: 126882054
Length: 4663258
^Content/cnc/movies/nitejump.vqa:
Offset: 131545312
Length: 3702838
^Content/cnc/movies/napalm.vqa:
Offset: 135248150
Length: 4004146
^Content/cnc/movies/logo.vqa:
Offset: 139252296
Length: 3562630
^Content/cnc/movies/landing.vqa:
Offset: 142814926
Length: 1617094
^Content/cnc/movies/intro2.vqa:
Offset: 144432020
Length: 21058732
^Content/cnc/movies/hellvaly.vqa:
Offset: 165490752
Length: 6658950
^Content/cnc/movies/gunboat.vqa:
Offset: 172149702
Length: 3203706
^Content/cnc/movies/generic.vqa:
Offset: 175353408
Length: 1452820
^Content/cnc/movies/gdilose.vqa:
Offset: 176806228
Length: 2097912
^Content/cnc/movies/gdifinb.vqa:
Offset: 178904140
Length: 17769978
^Content/cnc/movies/gdifina.vqa:
Offset: 196674118
Length: 12888650
^Content/cnc/movies/gdiend2.vqa:
Offset: 209562768
Length: 25242946
^Content/cnc/movies/gdiend1.vqa:
Offset: 234805714
Length: 25311636
^Content/cnc/movies/gdi9.vqa:
Offset: 260117350
Length: 11806994
^Content/cnc/movies/gdi8b.vqa:
Offset: 271924344
Length: 5324410
^Content/cnc/movies/gdi8a.vqa:
Offset: 277248754
Length: 4672548
^Content/cnc/movies/gdi7.vqa:
Offset: 281921302
Length: 4241952
^Content/cnc/movies/gdi6.vqa:
Offset: 286163254
Length: 3959650
^Content/cnc/movies/gdi5.vqa:
Offset: 290122904
Length: 3818244
^Content/cnc/movies/gdi4b.vqa:
Offset: 293941148
Length: 6603530
^Content/cnc/movies/gdi4a.vqa:
Offset: 300544678
Length: 4450582
^Content/cnc/movies/gdi3lose.vqa:
Offset: 304995260
Length: 2265770
^Content/cnc/movies/gdi3.vqa:
Offset: 307261030
Length: 5443848
^Content/cnc/movies/gdi2.vqa:
Offset: 312704878
Length: 7883500
^Content/cnc/movies/gdi15.vqa:
Offset: 320588378
Length: 11684610
^Content/cnc/movies/gdi14.vqa:
Offset: 332272988
Length: 5282770
^Content/cnc/movies/gdi13.vqa:
Offset: 337555758
Length: 6900914
^Content/cnc/movies/gdi12.vqa:
Offset: 344456672
Length: 3669404
^Content/cnc/movies/gdi11.vqa:
Offset: 348126076
Length: 5895754
^Content/cnc/movies/gdi10.vqa:
Offset: 354021830
Length: 5761514
^Content/cnc/movies/gdi1.vqa:
Offset: 359783344
Length: 6341298
^Content/cnc/movies/gameover.vqa:
Offset: 366124642
Length: 2087322
^Content/cnc/movies/forestkl.vqa:
Offset: 368211964
Length: 1500986
^Content/cnc/movies/flyy.vqa:
Offset: 369712950
Length: 1373532
^Content/cnc/movies/flag.vqa:
Offset: 371086482
Length: 4308680
^Content/cnc/movies/dino.vqa:
Offset: 375395162
Length: 1347896
^Content/cnc/movies/desolat.vqa:
Offset: 376743058
Length: 8385122
^Content/cnc/movies/consyard.vqa:
Offset: 385128180
Length: 7864652
^Content/cnc/movies/cc2tease.vqa:
Offset: 392992832
Length: 12506712
^Content/cnc/movies/burdet2.vqa:
Offset: 405499544
Length: 2062190
^Content/cnc/movies/burdet1.vqa:
Offset: 407561734
Length: 10410614
^Content/cnc/movies/bombflee.vqa:
Offset: 417972348
Length: 2859726
^Content/cnc/movies/bombaway.vqa:
Offset: 420832074
Length: 5579588
^Content/cnc/movies/bkground.vqa:
Offset: 426411662
Length: 15267052
^Content/cnc/movies/bcanyon.vqa:
Offset: 441678714
Length: 5172288
^Content/cnc/movies/banner.vqa:
Offset: 446851002
Length: 2229408
gdi95-linux: C&C Gold (GDI Disc, English)
IDFiles:
disk.wav: 8bef9a6687c0fe0afd57c6561df58fa6e64f145d
conquer.mix: 833e02a09aae694659eb312d3838367f681d1b30
Install:
copy: .
^Content/cnc/conquer.mix: conquer.mix
^Content/cnc/desert.mix: desert.mix
^Content/cnc/general.mix: general.mix
^Content/cnc/scores.mix: scores.mix
^Content/cnc/sounds.mix: sounds.mix
^Content/cnc/temperat.mix: temperat.mix
^Content/cnc/winter.mix: winter.mix
extract-blast: install/setup.z
^Content/cnc/speech.mix:
Offset: 10203213
Length: 603293
^Content/cnc/tempicnh.mix:
Offset: 10925941
Length: 119096
^Content/cnc/transit.mix:
Offset: 11078017
Length: 3724462
extract-raw: movies.mix
^Content/cnc/movies/visor.vqa:
Offset: 786
Length: 4407162
^Content/cnc/movies/turtkill.vqa:
Offset: 4407948
Length: 3323444
^Content/cnc/movies/trailer.vqa:
Offset: 7731392
Length: 23163930
^Content/cnc/movies/tbrinfo3.vqa:
Offset: 30895322
Length: 14972046
^Content/cnc/movies/tbrinfo2.vqa:
Offset: 45867368
Length: 16195290
^Content/cnc/movies/tbrinfo1.vqa:
Offset: 62062658
Length: 23479052
^Content/cnc/movies/seige.vqa:
Offset: 85541710
Length: 2705978
^Content/cnc/movies/samsite.vqa:
Offset: 88247688
Length: 1410418
^Content/cnc/movies/samdie.vqa:
Offset: 89658106
Length: 3741942
^Content/cnc/movies/sabotage.vqa:
Offset: 93400048
Length: 1386202
^Content/cnc/movies/retro.vqa:
Offset: 94786250
Length: 6434382
^Content/cnc/movies/podium.vqa:
Offset: 101220632
Length: 2790664
^Content/cnc/movies/planecra.vqa:
Offset: 104011296
Length: 5085426
^Content/cnc/movies/pintle.vqa:
Offset: 109096722
Length: 2757536
^Content/cnc/movies/paratrop.vqa:
Offset: 111854258
Length: 3180272
^Content/cnc/movies/nodsweep.vqa:
Offset: 115034530
Length: 3642174
^Content/cnc/movies/nodlose.vqa:
Offset: 118676704
Length: 5148924
^Content/cnc/movies/nodflees.vqa:
Offset: 123825628
Length: 3056426
^Content/cnc/movies/nod1.vqa:
Offset: 126882054
Length: 4663258
^Content/cnc/movies/nitejump.vqa:
Offset: 131545312
Length: 3702838
^Content/cnc/movies/napalm.vqa:
Offset: 135248150
Length: 4004146
^Content/cnc/movies/logo.vqa:
Offset: 139252296
Length: 3562630
^Content/cnc/movies/landing.vqa:
Offset: 142814926
Length: 1617094
^Content/cnc/movies/intro2.vqa:
Offset: 144432020
Length: 21058732
^Content/cnc/movies/hellvaly.vqa:
Offset: 165490752
Length: 6658950
^Content/cnc/movies/gunboat.vqa:
Offset: 172149702
Length: 3203706
^Content/cnc/movies/generic.vqa:
Offset: 175353408
Length: 1452820
^Content/cnc/movies/gdilose.vqa:
Offset: 176806228
Length: 2097912
^Content/cnc/movies/gdifinb.vqa:
Offset: 178904140
Length: 17769978
^Content/cnc/movies/gdifina.vqa:
Offset: 196674118
Length: 12888650
^Content/cnc/movies/gdiend2.vqa:
Offset: 209562768
Length: 25242946
^Content/cnc/movies/gdiend1.vqa:
Offset: 234805714
Length: 25311636
^Content/cnc/movies/gdi9.vqa:
Offset: 260117350
Length: 11806994
^Content/cnc/movies/gdi8b.vqa:
Offset: 271924344
Length: 5324410
^Content/cnc/movies/gdi8a.vqa:
Offset: 277248754
Length: 4672548
^Content/cnc/movies/gdi7.vqa:
Offset: 281921302
Length: 4241952
^Content/cnc/movies/gdi6.vqa:
Offset: 286163254
Length: 3959650
^Content/cnc/movies/gdi5.vqa:
Offset: 290122904
Length: 3818244
^Content/cnc/movies/gdi4b.vqa:
Offset: 293941148
Length: 6603530
^Content/cnc/movies/gdi4a.vqa:
Offset: 300544678
Length: 4450582
^Content/cnc/movies/gdi3lose.vqa:
Offset: 304995260
Length: 2265770
^Content/cnc/movies/gdi3.vqa:
Offset: 307261030
Length: 5443848
^Content/cnc/movies/gdi2.vqa:
Offset: 312704878
Length: 7883500
^Content/cnc/movies/gdi15.vqa:
Offset: 320588378
Length: 11684610
^Content/cnc/movies/gdi14.vqa:
Offset: 332272988
Length: 5282770
^Content/cnc/movies/gdi13.vqa:
Offset: 337555758
Length: 6900914
^Content/cnc/movies/gdi12.vqa:
Offset: 344456672
Length: 3669404
^Content/cnc/movies/gdi11.vqa:
Offset: 348126076
Length: 5895754
^Content/cnc/movies/gdi10.vqa:
Offset: 354021830
Length: 5761514
^Content/cnc/movies/gdi1.vqa:
Offset: 359783344
Length: 6341298
^Content/cnc/movies/gameover.vqa:
Offset: 366124642
Length: 2087322
^Content/cnc/movies/forestkl.vqa:
Offset: 368211964
Length: 1500986
^Content/cnc/movies/flyy.vqa:
Offset: 369712950
Length: 1373532
^Content/cnc/movies/flag.vqa:
Offset: 371086482
Length: 4308680
^Content/cnc/movies/dino.vqa:
Offset: 375395162
Length: 1347896
^Content/cnc/movies/desolat.vqa:
Offset: 376743058
Length: 8385122
^Content/cnc/movies/consyard.vqa:
Offset: 385128180
Length: 7864652
^Content/cnc/movies/cc2tease.vqa:
Offset: 392992832
Length: 12506712
^Content/cnc/movies/burdet2.vqa:
Offset: 405499544
Length: 2062190
^Content/cnc/movies/burdet1.vqa:
Offset: 407561734
Length: 10410614
^Content/cnc/movies/bombflee.vqa:
Offset: 417972348
Length: 2859726
^Content/cnc/movies/bombaway.vqa:
Offset: 420832074
Length: 5579588
^Content/cnc/movies/bkground.vqa:
Offset: 426411662
Length: 15267052
^Content/cnc/movies/bcanyon.vqa:
Offset: 441678714
Length: 5172288
^Content/cnc/movies/banner.vqa:
Offset: 446851002
Length: 2229408

View File

@@ -0,0 +1,414 @@
nod95: C&C Gold (Nod Disc, English)
IDFiles:
DISK.WAV: 83a0235525afa5cd6096f2967e3eae032996e38c
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
Install:
copy: .
^Content/cnc/conquer.mix: CONQUER.MIX
^Content/cnc/desert.mix: DESERT.MIX
^Content/cnc/general.mix: GENERAL.MIX
^Content/cnc/scores.mix: SCORES.MIX
^Content/cnc/sounds.mix: SOUNDS.MIX
^Content/cnc/temperat.mix: TEMPERAT.MIX
^Content/cnc/winter.mix: WINTER.MIX
extract-blast: INSTALL/SETUP.Z
^Content/cnc/speech.mix:
Offset: 10203213
Length: 603293
^Content/cnc/tempicnh.mix:
Offset: 10925941
Length: 119096
^Content/cnc/transit.mix:
Offset: 11078017
Length: 3724462
extract-raw: MOVIES.MIX
^Content/cnc/movies/visor.vqa:
Offset: 738
Length: 4407162
^Content/cnc/movies/trtkil_d.vqa:
Offset: 4407900
Length: 3511836
^Content/cnc/movies/trailer.vqa:
Offset: 7919736
Length: 23163930
^Content/cnc/movies/tiberfx.vqa:
Offset: 31083666
Length: 8735102
^Content/cnc/movies/tankkill.vqa:
Offset: 39818768
Length: 3298978
^Content/cnc/movies/tankgo.vqa:
Offset: 43117746
Length: 1403876
^Content/cnc/movies/sundial.vqa:
Offset: 44521622
Length: 3653636
^Content/cnc/movies/stealth.vqa:
Offset: 48175258
Length: 4521860
^Content/cnc/movies/spycrash.vqa:
Offset: 52697118
Length: 1886288
^Content/cnc/movies/sethpre.vqa:
Offset: 54583406
Length: 10914610
^Content/cnc/movies/seige.vqa:
Offset: 65498016
Length: 2705978
^Content/cnc/movies/samsite.vqa:
Offset: 68203994
Length: 1410418
^Content/cnc/movies/retro.vqa:
Offset: 69614412
Length: 6434382
^Content/cnc/movies/refint.vqa:
Offset: 76048794
Length: 5090040
^Content/cnc/movies/obel.vqa:
Offset: 81138834
Length: 3851370
^Content/cnc/movies/nuke.vqa:
Offset: 84990204
Length: 3126662
^Content/cnc/movies/nodlose.vqa:
Offset: 88116866
Length: 5148924
^Content/cnc/movies/nodfinal.vqa:
Offset: 93265790
Length: 23326586
^Content/cnc/movies/nodend4.vqa:
Offset: 116592376
Length: 25535232
^Content/cnc/movies/nodend3.vqa:
Offset: 142127608
Length: 25725824
^Content/cnc/movies/nodend2.vqa:
Offset: 167853432
Length: 27214048
^Content/cnc/movies/nodend1.vqa:
Offset: 195067480
Length: 27172272
^Content/cnc/movies/nod9.vqa:
Offset: 222239752
Length: 9357980
^Content/cnc/movies/nod8.vqa:
Offset: 231597732
Length: 11597940
^Content/cnc/movies/nod7b.vqa:
Offset: 243195672
Length: 4671402
^Content/cnc/movies/nod7a.vqa:
Offset: 247867074
Length: 4740470
^Content/cnc/movies/nod6.vqa:
Offset: 252607544
Length: 5007744
^Content/cnc/movies/nod5.vqa:
Offset: 257615288
Length: 6641700
^Content/cnc/movies/nod4b.vqa:
Offset: 264256988
Length: 3867618
^Content/cnc/movies/nod4a.vqa:
Offset: 268124606
Length: 3838924
^Content/cnc/movies/nod3.vqa:
Offset: 271963530
Length: 3603314
^Content/cnc/movies/nod2.vqa:
Offset: 275566844
Length: 7200720
^Content/cnc/movies/nod1pre.vqa:
Offset: 282767564
Length: 395720
^Content/cnc/movies/nod13.vqa:
Offset: 283163284
Length: 2746626
^Content/cnc/movies/nod12.vqa:
Offset: 285909910
Length: 6576562
^Content/cnc/movies/nod11.vqa:
Offset: 292486472
Length: 4629270
^Content/cnc/movies/nod10b.vqa:
Offset: 297115742
Length: 6386444
^Content/cnc/movies/nod10a.vqa:
Offset: 303502186
Length: 7205632
^Content/cnc/movies/nod1.vqa:
Offset: 310707818
Length: 4663258
^Content/cnc/movies/logo.vqa:
Offset: 315371076
Length: 3562630
^Content/cnc/movies/landing.vqa:
Offset: 318933706
Length: 1617094
^Content/cnc/movies/kanepre.vqa:
Offset: 320550800
Length: 17220712
^Content/cnc/movies/intro2.vqa:
Offset: 337771512
Length: 21058732
^Content/cnc/movies/insites.vqa:
Offset: 358830244
Length: 460482
^Content/cnc/movies/generic.vqa:
Offset: 359290726
Length: 1452820
^Content/cnc/movies/gdi1.vqa:
Offset: 360743546
Length: 6341298
^Content/cnc/movies/gameover.vqa:
Offset: 367084844
Length: 2087322
^Content/cnc/movies/forestkl.vqa:
Offset: 369172166
Length: 1500986
^Content/cnc/movies/flag.vqa:
Offset: 370673152
Length: 4308680
^Content/cnc/movies/dino.vqa:
Offset: 374981832
Length: 1347896
^Content/cnc/movies/dessweep.vqa:
Offset: 376329728
Length: 3563646
^Content/cnc/movies/deskill.vqa:
Offset: 379893374
Length: 1483634
^Content/cnc/movies/desflees.vqa:
Offset: 381377008
Length: 2698426
^Content/cnc/movies/consyard.vqa:
Offset: 384075434
Length: 7864652
^Content/cnc/movies/cc2tease.vqa:
Offset: 391940086
Length: 12506712
^Content/cnc/movies/bombflee.vqa:
Offset: 404446798
Length: 2859726
^Content/cnc/movies/bombaway.vqa:
Offset: 407306524
Length: 5579588
^Content/cnc/movies/bcanyon.vqa:
Offset: 412886112
Length: 5172288
^Content/cnc/movies/banner.vqa:
Offset: 418058400
Length: 2229408
^Content/cnc/movies/akira.vqa:
Offset: 420287808
Length: 7803444
^Content/cnc/movies/airstrk.vqa:
Offset: 428091252
Length: 4444442
nod95-linux: C&C Gold (Nod Disc, English)
IDFiles:
disk.wav: 83a0235525afa5cd6096f2967e3eae032996e38c
conquer.mix: 833e02a09aae694659eb312d3838367f681d1b30
Install:
copy: .
^Content/cnc/conquer.mix: conquer.mix
^Content/cnc/desert.mix: desert.mix
^Content/cnc/general.mix: general.mix
^Content/cnc/scores.mix: scores.mix
^Content/cnc/sounds.mix: sounds.mix
^Content/cnc/temperat.mix: temperat.mix
^Content/cnc/winter.mix: winter.mix
extract-blast: install/setup.z
^Content/cnc/speech.mix:
Offset: 10203213
Length: 603293
^Content/cnc/tempicnh.mix:
Offset: 10925941
Length: 119096
^Content/cnc/transit.mix:
Offset: 11078017
Length: 3724462
extract-raw: movies.mix
^Content/cnc/movies/visor.vqa:
Offset: 738
Length: 4407162
^Content/cnc/movies/trtkil_d.vqa:
Offset: 4407900
Length: 3511836
^Content/cnc/movies/trailer.vqa:
Offset: 7919736
Length: 23163930
^Content/cnc/movies/tiberfx.vqa:
Offset: 31083666
Length: 8735102
^Content/cnc/movies/tankkill.vqa:
Offset: 39818768
Length: 3298978
^Content/cnc/movies/tankgo.vqa:
Offset: 43117746
Length: 1403876
^Content/cnc/movies/sundial.vqa:
Offset: 44521622
Length: 3653636
^Content/cnc/movies/stealth.vqa:
Offset: 48175258
Length: 4521860
^Content/cnc/movies/spycrash.vqa:
Offset: 52697118
Length: 1886288
^Content/cnc/movies/sethpre.vqa:
Offset: 54583406
Length: 10914610
^Content/cnc/movies/seige.vqa:
Offset: 65498016
Length: 2705978
^Content/cnc/movies/samsite.vqa:
Offset: 68203994
Length: 1410418
^Content/cnc/movies/retro.vqa:
Offset: 69614412
Length: 6434382
^Content/cnc/movies/refint.vqa:
Offset: 76048794
Length: 5090040
^Content/cnc/movies/obel.vqa:
Offset: 81138834
Length: 3851370
^Content/cnc/movies/nuke.vqa:
Offset: 84990204
Length: 3126662
^Content/cnc/movies/nodlose.vqa:
Offset: 88116866
Length: 5148924
^Content/cnc/movies/nodfinal.vqa:
Offset: 93265790
Length: 23326586
^Content/cnc/movies/nodend4.vqa:
Offset: 116592376
Length: 25535232
^Content/cnc/movies/nodend3.vqa:
Offset: 142127608
Length: 25725824
^Content/cnc/movies/nodend2.vqa:
Offset: 167853432
Length: 27214048
^Content/cnc/movies/nodend1.vqa:
Offset: 195067480
Length: 27172272
^Content/cnc/movies/nod9.vqa:
Offset: 222239752
Length: 9357980
^Content/cnc/movies/nod8.vqa:
Offset: 231597732
Length: 11597940
^Content/cnc/movies/nod7b.vqa:
Offset: 243195672
Length: 4671402
^Content/cnc/movies/nod7a.vqa:
Offset: 247867074
Length: 4740470
^Content/cnc/movies/nod6.vqa:
Offset: 252607544
Length: 5007744
^Content/cnc/movies/nod5.vqa:
Offset: 257615288
Length: 6641700
^Content/cnc/movies/nod4b.vqa:
Offset: 264256988
Length: 3867618
^Content/cnc/movies/nod4a.vqa:
Offset: 268124606
Length: 3838924
^Content/cnc/movies/nod3.vqa:
Offset: 271963530
Length: 3603314
^Content/cnc/movies/nod2.vqa:
Offset: 275566844
Length: 7200720
^Content/cnc/movies/nod1pre.vqa:
Offset: 282767564
Length: 395720
^Content/cnc/movies/nod13.vqa:
Offset: 283163284
Length: 2746626
^Content/cnc/movies/nod12.vqa:
Offset: 285909910
Length: 6576562
^Content/cnc/movies/nod11.vqa:
Offset: 292486472
Length: 4629270
^Content/cnc/movies/nod10b.vqa:
Offset: 297115742
Length: 6386444
^Content/cnc/movies/nod10a.vqa:
Offset: 303502186
Length: 7205632
^Content/cnc/movies/nod1.vqa:
Offset: 310707818
Length: 4663258
^Content/cnc/movies/logo.vqa:
Offset: 315371076
Length: 3562630
^Content/cnc/movies/landing.vqa:
Offset: 318933706
Length: 1617094
^Content/cnc/movies/kanepre.vqa:
Offset: 320550800
Length: 17220712
^Content/cnc/movies/intro2.vqa:
Offset: 337771512
Length: 21058732
^Content/cnc/movies/insites.vqa:
Offset: 358830244
Length: 460482
^Content/cnc/movies/generic.vqa:
Offset: 359290726
Length: 1452820
^Content/cnc/movies/gdi1.vqa:
Offset: 360743546
Length: 6341298
^Content/cnc/movies/gameover.vqa:
Offset: 367084844
Length: 2087322
^Content/cnc/movies/forestkl.vqa:
Offset: 369172166
Length: 1500986
^Content/cnc/movies/flag.vqa:
Offset: 370673152
Length: 4308680
^Content/cnc/movies/dino.vqa:
Offset: 374981832
Length: 1347896
^Content/cnc/movies/dessweep.vqa:
Offset: 376329728
Length: 3563646
^Content/cnc/movies/deskill.vqa:
Offset: 379893374
Length: 1483634
^Content/cnc/movies/desflees.vqa:
Offset: 381377008
Length: 2698426
^Content/cnc/movies/consyard.vqa:
Offset: 384075434
Length: 7864652
^Content/cnc/movies/cc2tease.vqa:
Offset: 391940086
Length: 12506712
^Content/cnc/movies/bombflee.vqa:
Offset: 404446798
Length: 2859726
^Content/cnc/movies/bombaway.vqa:
Offset: 407306524
Length: 5579588
^Content/cnc/movies/bcanyon.vqa:
Offset: 412886112
Length: 5172288
^Content/cnc/movies/banner.vqa:
Offset: 418058400
Length: 2229408
^Content/cnc/movies/akira.vqa:
Offset: 420287808
Length: 7803444
^Content/cnc/movies/airstrk.vqa:
Offset: 428091252
Length: 4444442

View File

@@ -0,0 +1,333 @@
origin: C&C The Ultimate Collection (Origin version, English)
Type: Install
RegistryKey: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\EA Games\CNC and The Covert Operations
RegistryValue: Install Dir
IDFiles:
CNC95Launcher.exe: 1d711adf09ac08738b2599b3092a1b448169b32a
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
Install:
copy: .
^Content/cnc/conquer.mix: CONQUER.MIX
^Content/cnc/desert.mix: DESERT.MIX
^Content/cnc/general.mix: GENERAL.MIX
^Content/cnc/scores.mix: SCORES.MIX
^Content/cnc/sounds.mix: SOUNDS.MIX
^Content/cnc/temperat.mix: TEMPERAT.MIX
^Content/cnc/winter.mix: WINTER.MIX
^Content/cnc/speech.mix: SPEECH.MIX
^Content/cnc/tempicnh.mix: TEMPICNH.MIX
^Content/cnc/transit.mix: TRANSIT.MIX
^Content/cnc/scores-covertops.mix: covert/SCORES.MIX
extract-raw: movies.mix
^Content/cnc/movies/akira.vqa:
Offset: 4445708
Length: 7803444
^Content/cnc/movies/bkground.vqa:
Offset: 12249152
Length: 15267052
^Content/cnc/movies/burdet1.vqa:
Offset: 27516204
Length: 10410614
^Content/cnc/movies/burdet2.vqa:
Offset: 37926818
Length: 2062190
^Content/cnc/movies/gdi4a.vqa:
Offset: 39989008
Length: 4450582
^Content/cnc/movies/gdi4b.vqa:
Offset: 44439590
Length: 6603530
^Content/cnc/movies/gdifina.vqa:
Offset: 51043120
Length: 12888650
^Content/cnc/movies/gdifinb.vqa:
Offset: 63931770
Length: 17769978
^Content/cnc/movies/nod7a.vqa:
Offset: 81701748
Length: 4740470
^Content/cnc/movies/nod7b.vqa:
Offset: 86442218
Length: 4671402
^Content/cnc/movies/visor.vqa:
Offset: 91113620
Length: 4407162
^Content/cnc/movies/turtkill.vqa:
Offset: 95520782
Length: 3323444
^Content/cnc/movies/trtkil_d.vqa:
Offset: 98844226
Length: 3511836
^Content/cnc/movies/trailer.vqa:
Offset: 102356062
Length: 23163930
^Content/cnc/movies/tiberfx.vqa:
Offset: 125519992
Length: 8735102
^Content/cnc/movies/tbrinfo3.vqa:
Offset: 134255094
Length: 14972046
^Content/cnc/movies/tbrinfo2.vqa:
Offset: 149227140
Length: 16195290
^Content/cnc/movies/tbrinfo1.vqa:
Offset: 165422430
Length: 23479052
^Content/cnc/movies/tankkill.vqa:
Offset: 188901482
Length: 3298978
^Content/cnc/movies/tankgo.vqa:
Offset: 192200460
Length: 1403876
^Content/cnc/movies/sundial.vqa:
Offset: 193604336
Length: 3653636
^Content/cnc/movies/stealth.vqa:
Offset: 197257972
Length: 4521860
^Content/cnc/movies/spycrash.vqa:
Offset: 201779832
Length: 1886288
^Content/cnc/movies/sethpre.vqa:
Offset: 203666120
Length: 10914610
^Content/cnc/movies/seige.vqa:
Offset: 214580730
Length: 2705978
^Content/cnc/movies/samsite.vqa:
Offset: 217286708
Length: 1410418
^Content/cnc/movies/samdie.vqa:
Offset: 218697126
Length: 3741942
^Content/cnc/movies/sabotage.vqa:
Offset: 222439068
Length: 1386202
^Content/cnc/movies/retro.vqa:
Offset: 223825270
Length: 6434382
^Content/cnc/movies/refint.vqa:
Offset: 230259652
Length: 5090040
^Content/cnc/movies/podium.vqa:
Offset: 235349692
Length: 2790664
^Content/cnc/movies/planecra.vqa:
Offset: 238140356
Length: 5085426
^Content/cnc/movies/pintle.vqa:
Offset: 243225782
Length: 2757536
^Content/cnc/movies/paratrop.vqa:
Offset: 245983318
Length: 3180272
^Content/cnc/movies/obel.vqa:
Offset: 249163590
Length: 3851370
^Content/cnc/movies/nuke.vqa:
Offset: 253014960
Length: 3126662
^Content/cnc/movies/nodsweep.vqa:
Offset: 256141622
Length: 3642174
^Content/cnc/movies/nodlose.vqa:
Offset: 259783796
Length: 5148924
^Content/cnc/movies/nodflees.vqa:
Offset: 264932720
Length: 3056426
^Content/cnc/movies/nodfinal.vqa:
Offset: 267989146
Length: 23326586
^Content/cnc/movies/nod9.vqa:
Offset: 396963108
Length: 9357980
^Content/cnc/movies/nod8.vqa:
Offset: 406321088
Length: 11597940
^Content/cnc/movies/nod6.vqa:
Offset: 417919028
Length: 5007744
^Content/cnc/movies/nod5.vqa:
Offset: 422926772
Length: 6641700
^Content/cnc/movies/nod4b.vqa:
Offset: 429568472
Length: 3867618
^Content/cnc/movies/nod4a.vqa:
Offset: 433436090
Length: 3838924
^Content/cnc/movies/nod3.vqa:
Offset: 437275014
Length: 3603314
^Content/cnc/movies/nod2.vqa:
Offset: 440878328
Length: 7200720
^Content/cnc/movies/nod1pre.vqa:
Offset: 448079048
Length: 395720
^Content/cnc/movies/nod13.vqa:
Offset: 448474768
Length: 2746626
^Content/cnc/movies/nod12.vqa:
Offset: 451221394
Length: 6576562
^Content/cnc/movies/nod11.vqa:
Offset: 457797956
Length: 4629270
^Content/cnc/movies/nod10b.vqa:
Offset: 462427226
Length: 6386444
^Content/cnc/movies/nod10a.vqa:
Offset: 468813670
Length: 7205632
^Content/cnc/movies/nod1.vqa:
Offset: 476019302
Length: 4663258
^Content/cnc/movies/nitejump.vqa:
Offset: 480682560
Length: 3702838
^Content/cnc/movies/napalm.vqa:
Offset: 484385398
Length: 4004146
^Content/cnc/movies/logo.vqa:
Offset: 488389544
Length: 3562630
^Content/cnc/movies/landing.vqa:
Offset: 491952174
Length: 1617094
^Content/cnc/movies/kanepre.vqa:
Offset: 493569268
Length: 17220712
^Content/cnc/movies/intro2.vqa:
Offset: 510789980
Length: 21058732
^Content/cnc/movies/insites.vqa:
Offset: 531848712
Length: 460482
^Content/cnc/movies/hellvaly.vqa:
Offset: 532309194
Length: 6658950
^Content/cnc/movies/gunboat.vqa:
Offset: 538968144
Length: 3203706
^Content/cnc/movies/generic.vqa:
Offset: 542171850
Length: 1452820
^Content/cnc/movies/gdilose.vqa:
Offset: 543624670
Length: 2097912
^Content/cnc/movies/gdiend2.vqa:
Offset: 545722582
Length: 25242946
^Content/cnc/movies/gdiend1.vqa:
Offset: 570965528
Length: 25311636
^Content/cnc/movies/gdi9.vqa:
Offset: 596277164
Length: 11806994
^Content/cnc/movies/gdi8b.vqa:
Offset: 608084158
Length: 5324410
^Content/cnc/movies/gdi8a.vqa:
Offset: 613408568
Length: 4672548
^Content/cnc/movies/gdi7.vqa:
Offset: 618081116
Length: 4241952
^Content/cnc/movies/gdi6.vqa:
Offset: 622323068
Length: 3959650
^Content/cnc/movies/gdi5.vqa:
Offset: 626282718
Length: 3818244
^Content/cnc/movies/gdi3lose.vqa:
Offset: 630100962
Length: 2265770
^Content/cnc/movies/gdi3.vqa:
Offset: 632366732
Length: 5443848
^Content/cnc/movies/gdi2.vqa:
Offset: 637810580
Length: 7883500
^Content/cnc/movies/gdi15.vqa:
Offset: 645694080
Length: 11684610
^Content/cnc/movies/gdi14.vqa:
Offset: 657378690
Length: 5282770
^Content/cnc/movies/gdi13.vqa:
Offset: 662661460
Length: 6900914
^Content/cnc/movies/gdi12.vqa:
Offset: 669562374
Length: 3669404
^Content/cnc/movies/gdi11.vqa:
Offset: 673231778
Length: 5895754
^Content/cnc/movies/gdi10.vqa:
Offset: 679127532
Length: 5761514
^Content/cnc/movies/gdi1.vqa:
Offset: 684889046
Length: 6341298
^Content/cnc/movies/gameover.vqa:
Offset: 691230344
Length: 2087322
^Content/cnc/movies/forestkl.vqa:
Offset: 693317666
Length: 1500986
^Content/cnc/movies/flyy.vqa:
Offset: 694818652
Length: 1373532
^Content/cnc/movies/flag.vqa:
Offset: 696192184
Length: 4308680
^Content/cnc/movies/dino.vqa:
Offset: 700500864
Length: 1347896
^Content/cnc/movies/dessweep.vqa:
Offset: 701848760
Length: 3563646
^Content/cnc/movies/desolat.vqa:
Offset: 705412406
Length: 8385122
^Content/cnc/movies/deskill.vqa:
Offset: 713797528
Length: 1483634
^Content/cnc/movies/desflees.vqa:
Offset: 715281162
Length: 2698426
^Content/cnc/movies/consyard.vqa:
Offset: 717979588
Length: 7864652
^Content/cnc/movies/cc2tease.vqa:
Offset: 725844240
Length: 12506712
^Content/cnc/movies/bombflee.vqa:
Offset: 738350952
Length: 2859726
^Content/cnc/movies/bombaway.vqa:
Offset: 741210678
Length: 5579588
^Content/cnc/movies/bcanyon.vqa:
Offset: 746790266
Length: 5172288
^Content/cnc/movies/banner.vqa:
Offset: 751962554
Length: 2229408
^Content/cnc/movies/airstrk.vqa:
Offset: 754191962
Length: 4444442
^Content/cnc/movies/nodend1.vqa:
Offset: 758637638
Length: 24708735
^Content/cnc/movies/nodend2.vqa:
Offset: 783346373
Length: 24700467
^Content/cnc/movies/nodend3.vqa:
Offset: 808046840
Length: 23323681
^Content/cnc/movies/nodend4.vqa:
Offset: 831370521
Length: 23346753

File diff suppressed because it is too large Load Diff

1712
mods/d2k/installer/d2k.yaml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,539 @@
quickinstall: Quick Install Package
MirrorList: http://www.openra.net/packages/d2k-quickinstall-mirrors.txt
Extract:
^Content/d2k/v2/BLOXBASE.R8: v2/BLOXBASE.R8
^Content/d2k/v2/BLOXBAT.R8: v2/BLOXBAT.R8
^Content/d2k/v2/BLOXBGBS.R8: v2/BLOXBGBS.R8
^Content/d2k/v2/BLOXICE.R8: v2/BLOXICE.R8
^Content/d2k/v2/BLOXTREE.R8: v2/BLOXTREE.R8
^Content/d2k/v2/BLOXWAST.R8: v2/BLOXWAST.R8
^Content/d2k/v2/FONT.BIN: v2/FONT.BIN
^Content/d2k/v2/FONTCOL.FNT: v2/FONTCOL.FNT
^Content/d2k/v2/FONTCOL.FPL: v2/FONTCOL.FPL
^Content/d2k/v2/GAMESFX/A_ECONF1.AUD: v2/GAMESFX/A_ECONF1.AUD
^Content/d2k/v2/GAMESFX/A_ECONF2.AUD: v2/GAMESFX/A_ECONF2.AUD
^Content/d2k/v2/GAMESFX/A_ECONF3.AUD: v2/GAMESFX/A_ECONF3.AUD
^Content/d2k/v2/GAMESFX/A_ESEL1.AUD: v2/GAMESFX/A_ESEL1.AUD
^Content/d2k/v2/GAMESFX/A_ESEL2.AUD: v2/GAMESFX/A_ESEL2.AUD
^Content/d2k/v2/GAMESFX/A_ESEL3.AUD: v2/GAMESFX/A_ESEL3.AUD
^Content/d2k/v2/GAMESFX/A_FCONF1.AUD: v2/GAMESFX/A_FCONF1.AUD
^Content/d2k/v2/GAMESFX/A_FCONF2.AUD: v2/GAMESFX/A_FCONF2.AUD
^Content/d2k/v2/GAMESFX/A_FCONF3.AUD: v2/GAMESFX/A_FCONF3.AUD
^Content/d2k/v2/GAMESFX/A_FCONF4.AUD: v2/GAMESFX/A_FCONF4.AUD
^Content/d2k/v2/GAMESFX/A_FSEL1.AUD: v2/GAMESFX/A_FSEL1.AUD
^Content/d2k/v2/GAMESFX/A_FSEL2.AUD: v2/GAMESFX/A_FSEL2.AUD
^Content/d2k/v2/GAMESFX/A_FSEL3.AUD: v2/GAMESFX/A_FSEL3.AUD
^Content/d2k/v2/GAMESFX/A_FSEL4.AUD: v2/GAMESFX/A_FSEL4.AUD
^Content/d2k/v2/GAMESFX/A_ICONF1.AUD: v2/GAMESFX/A_ICONF1.AUD
^Content/d2k/v2/GAMESFX/A_ICONF2.AUD: v2/GAMESFX/A_ICONF2.AUD
^Content/d2k/v2/GAMESFX/A_ICONF3.AUD: v2/GAMESFX/A_ICONF3.AUD
^Content/d2k/v2/GAMESFX/A_ISEL1.AUD: v2/GAMESFX/A_ISEL1.AUD
^Content/d2k/v2/GAMESFX/A_ISEL2.AUD: v2/GAMESFX/A_ISEL2.AUD
^Content/d2k/v2/GAMESFX/A_ISEL3.AUD: v2/GAMESFX/A_ISEL3.AUD
^Content/d2k/v2/GAMESFX/A_VCONF1.AUD: v2/GAMESFX/A_VCONF1.AUD
^Content/d2k/v2/GAMESFX/A_VCONF2.AUD: v2/GAMESFX/A_VCONF2.AUD
^Content/d2k/v2/GAMESFX/A_VCONF3.AUD: v2/GAMESFX/A_VCONF3.AUD
^Content/d2k/v2/GAMESFX/A_VSEL1.AUD: v2/GAMESFX/A_VSEL1.AUD
^Content/d2k/v2/GAMESFX/A_VSEL2.AUD: v2/GAMESFX/A_VSEL2.AUD
^Content/d2k/v2/GAMESFX/A_VSEL3.AUD: v2/GAMESFX/A_VSEL3.AUD
^Content/d2k/v2/GAMESFX/AI_1MIN.AUD: v2/GAMESFX/AI_1MIN.AUD
^Content/d2k/v2/GAMESFX/AI_2MIN.AUD: v2/GAMESFX/AI_2MIN.AUD
^Content/d2k/v2/GAMESFX/AI_3MIN.AUD: v2/GAMESFX/AI_3MIN.AUD
^Content/d2k/v2/GAMESFX/AI_4MIN.AUD: v2/GAMESFX/AI_4MIN.AUD
^Content/d2k/v2/GAMESFX/AI_5MIN.AUD: v2/GAMESFX/AI_5MIN.AUD
^Content/d2k/v2/GAMESFX/AI_ABORT.AUD: v2/GAMESFX/AI_ABORT.AUD
^Content/d2k/v2/GAMESFX/AI_ATACK.AUD: v2/GAMESFX/AI_ATACK.AUD
^Content/d2k/v2/GAMESFX/AI_BDRDY.AUD: v2/GAMESFX/AI_BDRDY.AUD
^Content/d2k/v2/GAMESFX/AI_BLOST.AUD: v2/GAMESFX/AI_BLOST.AUD
^Content/d2k/v2/GAMESFX/AI_BUILD.AUD: v2/GAMESFX/AI_BUILD.AUD
^Content/d2k/v2/GAMESFX/AI_CANCL.AUD: v2/GAMESFX/AI_CANCL.AUD
^Content/d2k/v2/GAMESFX/AI_CAPT.AUD: v2/GAMESFX/AI_CAPT.AUD
^Content/d2k/v2/GAMESFX/AI_DHRDY.AUD: v2/GAMESFX/AI_DHRDY.AUD
^Content/d2k/v2/GAMESFX/AI_DPLOY.AUD: v2/GAMESFX/AI_DPLOY.AUD
^Content/d2k/v2/GAMESFX/AI_ENEMY.AUD: v2/GAMESFX/AI_ENEMY.AUD
^Content/d2k/v2/GAMESFX/AI_GANEW.AUD: v2/GAMESFX/AI_GANEW.AUD
^Content/d2k/v2/GAMESFX/AI_GLOAD.AUD: v2/GAMESFX/AI_GLOAD.AUD
^Content/d2k/v2/GAMESFX/AI_GSAVE.AUD: v2/GAMESFX/AI_GSAVE.AUD
^Content/d2k/v2/GAMESFX/AI_GUARD.AUD: v2/GAMESFX/AI_GUARD.AUD
^Content/d2k/v2/GAMESFX/AI_HATTK.AUD: v2/GAMESFX/AI_HATTK.AUD
^Content/d2k/v2/GAMESFX/AI_HOLD.AUD: v2/GAMESFX/AI_HOLD.AUD
^Content/d2k/v2/GAMESFX/AI_LAUNC.AUD: v2/GAMESFX/AI_LAUNC.AUD
^Content/d2k/v2/GAMESFX/AI_MAP1A.AUD: v2/GAMESFX/AI_MAP1A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP1B.AUD: v2/GAMESFX/AI_MAP1B.AUD
^Content/d2k/v2/GAMESFX/AI_MAP1C.AUD: v2/GAMESFX/AI_MAP1C.AUD
^Content/d2k/v2/GAMESFX/AI_MAP2A.AUD: v2/GAMESFX/AI_MAP2A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP2B.AUD: v2/GAMESFX/AI_MAP2B.AUD
^Content/d2k/v2/GAMESFX/AI_MAP2C.AUD: v2/GAMESFX/AI_MAP2C.AUD
^Content/d2k/v2/GAMESFX/AI_MAP3A.AUD: v2/GAMESFX/AI_MAP3A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP4A.AUD: v2/GAMESFX/AI_MAP4A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP5A.AUD: v2/GAMESFX/AI_MAP5A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP6A.AUD: v2/GAMESFX/AI_MAP6A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP7A.AUD: v2/GAMESFX/AI_MAP7A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP8A.AUD: v2/GAMESFX/AI_MAP8A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP9A.AUD: v2/GAMESFX/AI_MAP9A.AUD
^Content/d2k/v2/GAMESFX/AI_MEND.AUD: v2/GAMESFX/AI_MEND.AUD
^Content/d2k/v2/GAMESFX/AI_MFAIL.AUD: v2/GAMESFX/AI_MFAIL.AUD
^Content/d2k/v2/GAMESFX/AI_MONEY.AUD: v2/GAMESFX/AI_MONEY.AUD
^Content/d2k/v2/GAMESFX/AI_MWIN.AUD: v2/GAMESFX/AI_MWIN.AUD
^Content/d2k/v2/GAMESFX/AI_NEWOP.AUD: v2/GAMESFX/AI_NEWOP.AUD
^Content/d2k/v2/GAMESFX/AI_NROOM.AUD: v2/GAMESFX/AI_NROOM.AUD
^Content/d2k/v2/GAMESFX/AI_ORDER.AUD: v2/GAMESFX/AI_ORDER.AUD
^Content/d2k/v2/GAMESFX/AI_PLACE.AUD: v2/GAMESFX/AI_PLACE.AUD
^Content/d2k/v2/GAMESFX/AI_POWER.AUD: v2/GAMESFX/AI_POWER.AUD
^Content/d2k/v2/GAMESFX/AI_PREP.AUD: v2/GAMESFX/AI_PREP.AUD
^Content/d2k/v2/GAMESFX/AI_PRMRY.AUD: v2/GAMESFX/AI_PRMRY.AUD
^Content/d2k/v2/GAMESFX/AI_REINF.AUD: v2/GAMESFX/AI_REINF.AUD
^Content/d2k/v2/GAMESFX/AI_RUN.AUD: v2/GAMESFX/AI_RUN.AUD
^Content/d2k/v2/GAMESFX/AI_SELL.AUD: v2/GAMESFX/AI_SELL.AUD
^Content/d2k/v2/GAMESFX/AI_SILOS.AUD: v2/GAMESFX/AI_SILOS.AUD
^Content/d2k/v2/GAMESFX/AI_SPORT.AUD: v2/GAMESFX/AI_SPORT.AUD
^Content/d2k/v2/GAMESFX/AI_TRAIN.AUD: v2/GAMESFX/AI_TRAIN.AUD
^Content/d2k/v2/GAMESFX/AI_ULOST.AUD: v2/GAMESFX/AI_ULOST.AUD
^Content/d2k/v2/GAMESFX/AI_UNRDY.AUD: v2/GAMESFX/AI_UNRDY.AUD
^Content/d2k/v2/GAMESFX/AI_UPGOP.AUD: v2/GAMESFX/AI_UPGOP.AUD
^Content/d2k/v2/GAMESFX/AI_UPGRD.AUD: v2/GAMESFX/AI_UPGRD.AUD
^Content/d2k/v2/GAMESFX/AI_WATTK.AUD: v2/GAMESFX/AI_WATTK.AUD
^Content/d2k/v2/GAMESFX/AI_WSIGN.AUD: v2/GAMESFX/AI_WSIGN.AUD
^Content/d2k/v2/GAMESFX/G_SCONF1.AUD: v2/GAMESFX/G_SCONF1.AUD
^Content/d2k/v2/GAMESFX/G_SCONF2.AUD: v2/GAMESFX/G_SCONF2.AUD
^Content/d2k/v2/GAMESFX/G_SCONF3.AUD: v2/GAMESFX/G_SCONF3.AUD
^Content/d2k/v2/GAMESFX/G_SSEL1.AUD: v2/GAMESFX/G_SSEL1.AUD
^Content/d2k/v2/GAMESFX/G_SSEL2.AUD: v2/GAMESFX/G_SSEL2.AUD
^Content/d2k/v2/GAMESFX/G_SSEL3.AUD: v2/GAMESFX/G_SSEL3.AUD
^Content/d2k/v2/GAMESFX/H_ECONF1.AUD: v2/GAMESFX/H_ECONF1.AUD
^Content/d2k/v2/GAMESFX/H_ECONF2.AUD: v2/GAMESFX/H_ECONF2.AUD
^Content/d2k/v2/GAMESFX/H_ECONF3.AUD: v2/GAMESFX/H_ECONF3.AUD
^Content/d2k/v2/GAMESFX/H_ESEL1.AUD: v2/GAMESFX/H_ESEL1.AUD
^Content/d2k/v2/GAMESFX/H_ESEL2.AUD: v2/GAMESFX/H_ESEL2.AUD
^Content/d2k/v2/GAMESFX/H_ESEL3.AUD: v2/GAMESFX/H_ESEL3.AUD
^Content/d2k/v2/GAMESFX/H_ICONF1.AUD: v2/GAMESFX/H_ICONF1.AUD
^Content/d2k/v2/GAMESFX/H_ICONF2.AUD: v2/GAMESFX/H_ICONF2.AUD
^Content/d2k/v2/GAMESFX/H_ICONF3.AUD: v2/GAMESFX/H_ICONF3.AUD
^Content/d2k/v2/GAMESFX/H_ISEL1.AUD: v2/GAMESFX/H_ISEL1.AUD
^Content/d2k/v2/GAMESFX/H_ISEL2.AUD: v2/GAMESFX/H_ISEL2.AUD
^Content/d2k/v2/GAMESFX/H_ISEL3.AUD: v2/GAMESFX/H_ISEL3.AUD
^Content/d2k/v2/GAMESFX/H_VCONF1.AUD: v2/GAMESFX/H_VCONF1.AUD
^Content/d2k/v2/GAMESFX/H_VCONF2.AUD: v2/GAMESFX/H_VCONF2.AUD
^Content/d2k/v2/GAMESFX/H_VCONF3.AUD: v2/GAMESFX/H_VCONF3.AUD
^Content/d2k/v2/GAMESFX/H_VSEL1.AUD: v2/GAMESFX/H_VSEL1.AUD
^Content/d2k/v2/GAMESFX/H_VSEL2.AUD: v2/GAMESFX/H_VSEL2.AUD
^Content/d2k/v2/GAMESFX/H_VSEL3.AUD: v2/GAMESFX/H_VSEL3.AUD
^Content/d2k/v2/GAMESFX/HI_1MIN.AUD: v2/GAMESFX/HI_1MIN.AUD
^Content/d2k/v2/GAMESFX/HI_2MIN.AUD: v2/GAMESFX/HI_2MIN.AUD
^Content/d2k/v2/GAMESFX/HI_3MIN.AUD: v2/GAMESFX/HI_3MIN.AUD
^Content/d2k/v2/GAMESFX/HI_4MIN.AUD: v2/GAMESFX/HI_4MIN.AUD
^Content/d2k/v2/GAMESFX/HI_5MIN.AUD: v2/GAMESFX/HI_5MIN.AUD
^Content/d2k/v2/GAMESFX/HI_ABORT.AUD: v2/GAMESFX/HI_ABORT.AUD
^Content/d2k/v2/GAMESFX/HI_ATACK.AUD: v2/GAMESFX/HI_ATACK.AUD
^Content/d2k/v2/GAMESFX/HI_BDRDY.AUD: v2/GAMESFX/HI_BDRDY.AUD
^Content/d2k/v2/GAMESFX/HI_BLOST.AUD: v2/GAMESFX/HI_BLOST.AUD
^Content/d2k/v2/GAMESFX/HI_BUILD.AUD: v2/GAMESFX/HI_BUILD.AUD
^Content/d2k/v2/GAMESFX/HI_CANCL.AUD: v2/GAMESFX/HI_CANCL.AUD
^Content/d2k/v2/GAMESFX/HI_CAPT.AUD: v2/GAMESFX/HI_CAPT.AUD
^Content/d2k/v2/GAMESFX/HI_DHRDY.AUD: v2/GAMESFX/HI_DHRDY.AUD
^Content/d2k/v2/GAMESFX/HI_DPLOY.AUD: v2/GAMESFX/HI_DPLOY.AUD
^Content/d2k/v2/GAMESFX/HI_ENEMY.AUD: v2/GAMESFX/HI_ENEMY.AUD
^Content/d2k/v2/GAMESFX/HI_GANEW.AUD: v2/GAMESFX/HI_GANEW.AUD
^Content/d2k/v2/GAMESFX/HI_GLOAD.AUD: v2/GAMESFX/HI_GLOAD.AUD
^Content/d2k/v2/GAMESFX/HI_GSAVE.AUD: v2/GAMESFX/HI_GSAVE.AUD
^Content/d2k/v2/GAMESFX/HI_GUARD.AUD: v2/GAMESFX/HI_GUARD.AUD
^Content/d2k/v2/GAMESFX/HI_HATTK.AUD: v2/GAMESFX/HI_HATTK.AUD
^Content/d2k/v2/GAMESFX/HI_HOLD.AUD: v2/GAMESFX/HI_HOLD.AUD
^Content/d2k/v2/GAMESFX/HI_LAUNC.AUD: v2/GAMESFX/HI_LAUNC.AUD
^Content/d2k/v2/GAMESFX/HI_MAP1A.AUD: v2/GAMESFX/HI_MAP1A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP1B.AUD: v2/GAMESFX/HI_MAP1B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP1C.AUD: v2/GAMESFX/HI_MAP1C.AUD
^Content/d2k/v2/GAMESFX/HI_MAP2A.AUD: v2/GAMESFX/HI_MAP2A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP2B.AUD: v2/GAMESFX/HI_MAP2B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP2C.AUD: v2/GAMESFX/HI_MAP2C.AUD
^Content/d2k/v2/GAMESFX/HI_MAP3A.AUD: v2/GAMESFX/HI_MAP3A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP3B.AUD: v2/GAMESFX/HI_MAP3B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP4A.AUD: v2/GAMESFX/HI_MAP4A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP4B.AUD: v2/GAMESFX/HI_MAP4B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP5A.AUD: v2/GAMESFX/HI_MAP5A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP6A.AUD: v2/GAMESFX/HI_MAP6A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP6B.AUD: v2/GAMESFX/HI_MAP6B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP7A.AUD: v2/GAMESFX/HI_MAP7A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP9.AUD: v2/GAMESFX/HI_MAP9.AUD
^Content/d2k/v2/GAMESFX/HI_MAP9A.AUD: v2/GAMESFX/HI_MAP9A.AUD
^Content/d2k/v2/GAMESFX/HI_MEND.AUD: v2/GAMESFX/HI_MEND.AUD
^Content/d2k/v2/GAMESFX/HI_MFAIL.AUD: v2/GAMESFX/HI_MFAIL.AUD
^Content/d2k/v2/GAMESFX/HI_MONEY.AUD: v2/GAMESFX/HI_MONEY.AUD
^Content/d2k/v2/GAMESFX/HI_MWIN.AUD: v2/GAMESFX/HI_MWIN.AUD
^Content/d2k/v2/GAMESFX/HI_NEWOP.AUD: v2/GAMESFX/HI_NEWOP.AUD
^Content/d2k/v2/GAMESFX/HI_NROOM.AUD: v2/GAMESFX/HI_NROOM.AUD
^Content/d2k/v2/GAMESFX/HI_ORDER.AUD: v2/GAMESFX/HI_ORDER.AUD
^Content/d2k/v2/GAMESFX/HI_PLACE.AUD: v2/GAMESFX/HI_PLACE.AUD
^Content/d2k/v2/GAMESFX/HI_POWER.AUD: v2/GAMESFX/HI_POWER.AUD
^Content/d2k/v2/GAMESFX/HI_PREP.AUD: v2/GAMESFX/HI_PREP.AUD
^Content/d2k/v2/GAMESFX/HI_PRMRY.AUD: v2/GAMESFX/HI_PRMRY.AUD
^Content/d2k/v2/GAMESFX/HI_REINF.AUD: v2/GAMESFX/HI_REINF.AUD
^Content/d2k/v2/GAMESFX/HI_RUN.AUD: v2/GAMESFX/HI_RUN.AUD
^Content/d2k/v2/GAMESFX/HI_SELL.AUD: v2/GAMESFX/HI_SELL.AUD
^Content/d2k/v2/GAMESFX/HI_SILOS.AUD: v2/GAMESFX/HI_SILOS.AUD
^Content/d2k/v2/GAMESFX/HI_SPORT.AUD: v2/GAMESFX/HI_SPORT.AUD
^Content/d2k/v2/GAMESFX/HI_TRAIN.AUD: v2/GAMESFX/HI_TRAIN.AUD
^Content/d2k/v2/GAMESFX/HI_ULOST.AUD: v2/GAMESFX/HI_ULOST.AUD
^Content/d2k/v2/GAMESFX/HI_UNRDY.AUD: v2/GAMESFX/HI_UNRDY.AUD
^Content/d2k/v2/GAMESFX/HI_UPGOP.AUD: v2/GAMESFX/HI_UPGOP.AUD
^Content/d2k/v2/GAMESFX/HI_UPGRD.AUD: v2/GAMESFX/HI_UPGRD.AUD
^Content/d2k/v2/GAMESFX/HI_WATTK.AUD: v2/GAMESFX/HI_WATTK.AUD
^Content/d2k/v2/GAMESFX/HI_WSIGN.AUD: v2/GAMESFX/HI_WSIGN.AUD
^Content/d2k/v2/GAMESFX/O_ECONF1.AUD: v2/GAMESFX/O_ECONF1.AUD
^Content/d2k/v2/GAMESFX/O_ECONF2.AUD: v2/GAMESFX/O_ECONF2.AUD
^Content/d2k/v2/GAMESFX/O_ECONF3.AUD: v2/GAMESFX/O_ECONF3.AUD
^Content/d2k/v2/GAMESFX/O_ESEL1.AUD: v2/GAMESFX/O_ESEL1.AUD
^Content/d2k/v2/GAMESFX/O_ESEL2.AUD: v2/GAMESFX/O_ESEL2.AUD
^Content/d2k/v2/GAMESFX/O_ESEL3.AUD: v2/GAMESFX/O_ESEL3.AUD
^Content/d2k/v2/GAMESFX/O_ICONF1.AUD: v2/GAMESFX/O_ICONF1.AUD
^Content/d2k/v2/GAMESFX/O_ICONF2.AUD: v2/GAMESFX/O_ICONF2.AUD
^Content/d2k/v2/GAMESFX/O_ICONF3.AUD: v2/GAMESFX/O_ICONF3.AUD
^Content/d2k/v2/GAMESFX/O_ISEL1.AUD: v2/GAMESFX/O_ISEL1.AUD
^Content/d2k/v2/GAMESFX/O_ISEL2.AUD: v2/GAMESFX/O_ISEL2.AUD
^Content/d2k/v2/GAMESFX/O_ISEL3.AUD: v2/GAMESFX/O_ISEL3.AUD
^Content/d2k/v2/GAMESFX/O_SCONF1.AUD: v2/GAMESFX/O_SCONF1.AUD
^Content/d2k/v2/GAMESFX/O_SCONF2.AUD: v2/GAMESFX/O_SCONF2.AUD
^Content/d2k/v2/GAMESFX/O_SCONF3.AUD: v2/GAMESFX/O_SCONF3.AUD
^Content/d2k/v2/GAMESFX/O_SSEL1.AUD: v2/GAMESFX/O_SSEL1.AUD
^Content/d2k/v2/GAMESFX/O_SSEL2.AUD: v2/GAMESFX/O_SSEL2.AUD
^Content/d2k/v2/GAMESFX/O_SSEL3.AUD: v2/GAMESFX/O_SSEL3.AUD
^Content/d2k/v2/GAMESFX/O_VCONF1.AUD: v2/GAMESFX/O_VCONF1.AUD
^Content/d2k/v2/GAMESFX/O_VCONF2.AUD: v2/GAMESFX/O_VCONF2.AUD
^Content/d2k/v2/GAMESFX/O_VCONF3.AUD: v2/GAMESFX/O_VCONF3.AUD
^Content/d2k/v2/GAMESFX/O_VSEL1.AUD: v2/GAMESFX/O_VSEL1.AUD
^Content/d2k/v2/GAMESFX/O_VSEL2.AUD: v2/GAMESFX/O_VSEL2.AUD
^Content/d2k/v2/GAMESFX/O_VSEL3.AUD: v2/GAMESFX/O_VSEL3.AUD
^Content/d2k/v2/GAMESFX/OI_1MIN.AUD: v2/GAMESFX/OI_1MIN.AUD
^Content/d2k/v2/GAMESFX/OI_2MIN.AUD: v2/GAMESFX/OI_2MIN.AUD
^Content/d2k/v2/GAMESFX/OI_3MIN.AUD: v2/GAMESFX/OI_3MIN.AUD
^Content/d2k/v2/GAMESFX/OI_4MIN.AUD: v2/GAMESFX/OI_4MIN.AUD
^Content/d2k/v2/GAMESFX/OI_5MIN.AUD: v2/GAMESFX/OI_5MIN.AUD
^Content/d2k/v2/GAMESFX/OI_ABORT.AUD: v2/GAMESFX/OI_ABORT.AUD
^Content/d2k/v2/GAMESFX/OI_ATACK.AUD: v2/GAMESFX/OI_ATACK.AUD
^Content/d2k/v2/GAMESFX/OI_BDRDY.AUD: v2/GAMESFX/OI_BDRDY.AUD
^Content/d2k/v2/GAMESFX/OI_BLOST.AUD: v2/GAMESFX/OI_BLOST.AUD
^Content/d2k/v2/GAMESFX/OI_BUILD.AUD: v2/GAMESFX/OI_BUILD.AUD
^Content/d2k/v2/GAMESFX/OI_CANCL.AUD: v2/GAMESFX/OI_CANCL.AUD
^Content/d2k/v2/GAMESFX/OI_CAPT.AUD: v2/GAMESFX/OI_CAPT.AUD
^Content/d2k/v2/GAMESFX/OI_DHRDY.AUD: v2/GAMESFX/OI_DHRDY.AUD
^Content/d2k/v2/GAMESFX/OI_DPLOY.AUD: v2/GAMESFX/OI_DPLOY.AUD
^Content/d2k/v2/GAMESFX/OI_ENEMY.AUD: v2/GAMESFX/OI_ENEMY.AUD
^Content/d2k/v2/GAMESFX/OI_GANEW.AUD: v2/GAMESFX/OI_GANEW.AUD
^Content/d2k/v2/GAMESFX/OI_GLOAD.AUD: v2/GAMESFX/OI_GLOAD.AUD
^Content/d2k/v2/GAMESFX/OI_GSAVE.AUD: v2/GAMESFX/OI_GSAVE.AUD
^Content/d2k/v2/GAMESFX/OI_GUARD.AUD: v2/GAMESFX/OI_GUARD.AUD
^Content/d2k/v2/GAMESFX/OI_HATTK.AUD: v2/GAMESFX/OI_HATTK.AUD
^Content/d2k/v2/GAMESFX/OI_HOLD.AUD: v2/GAMESFX/OI_HOLD.AUD
^Content/d2k/v2/GAMESFX/OI_LAUNC.AUD: v2/GAMESFX/OI_LAUNC.AUD
^Content/d2k/v2/GAMESFX/OI_MAP1A.AUD: v2/GAMESFX/OI_MAP1A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP1B.AUD: v2/GAMESFX/OI_MAP1B.AUD
^Content/d2k/v2/GAMESFX/OI_MAP1C.AUD: v2/GAMESFX/OI_MAP1C.AUD
^Content/d2k/v2/GAMESFX/OI_MAP2A.AUD: v2/GAMESFX/OI_MAP2A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP2B.AUD: v2/GAMESFX/OI_MAP2B.AUD
^Content/d2k/v2/GAMESFX/OI_MAP2C.AUD: v2/GAMESFX/OI_MAP2C.AUD
^Content/d2k/v2/GAMESFX/OI_MAP3A.AUD: v2/GAMESFX/OI_MAP3A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP4A.AUD: v2/GAMESFX/OI_MAP4A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP5A.AUD: v2/GAMESFX/OI_MAP5A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP6A.AUD: v2/GAMESFX/OI_MAP6A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP7A.AUD: v2/GAMESFX/OI_MAP7A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP8A.AUD: v2/GAMESFX/OI_MAP8A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP9A.AUD: v2/GAMESFX/OI_MAP9A.AUD
^Content/d2k/v2/GAMESFX/OI_MEND.AUD: v2/GAMESFX/OI_MEND.AUD
^Content/d2k/v2/GAMESFX/OI_MFAIL.AUD: v2/GAMESFX/OI_MFAIL.AUD
^Content/d2k/v2/GAMESFX/OI_MONEY.AUD: v2/GAMESFX/OI_MONEY.AUD
^Content/d2k/v2/GAMESFX/OI_MWIN.AUD: v2/GAMESFX/OI_MWIN.AUD
^Content/d2k/v2/GAMESFX/OI_NEWOP.AUD: v2/GAMESFX/OI_NEWOP.AUD
^Content/d2k/v2/GAMESFX/OI_NROOM.AUD: v2/GAMESFX/OI_NROOM.AUD
^Content/d2k/v2/GAMESFX/OI_ORDER.AUD: v2/GAMESFX/OI_ORDER.AUD
^Content/d2k/v2/GAMESFX/OI_PLACE.AUD: v2/GAMESFX/OI_PLACE.AUD
^Content/d2k/v2/GAMESFX/OI_POWER.AUD: v2/GAMESFX/OI_POWER.AUD
^Content/d2k/v2/GAMESFX/OI_PREP.AUD: v2/GAMESFX/OI_PREP.AUD
^Content/d2k/v2/GAMESFX/OI_PRMRY.AUD: v2/GAMESFX/OI_PRMRY.AUD
^Content/d2k/v2/GAMESFX/OI_REINF.AUD: v2/GAMESFX/OI_REINF.AUD
^Content/d2k/v2/GAMESFX/OI_RUN.AUD: v2/GAMESFX/OI_RUN.AUD
^Content/d2k/v2/GAMESFX/OI_SELL.AUD: v2/GAMESFX/OI_SELL.AUD
^Content/d2k/v2/GAMESFX/OI_SILOS.AUD: v2/GAMESFX/OI_SILOS.AUD
^Content/d2k/v2/GAMESFX/OI_SPORT.AUD: v2/GAMESFX/OI_SPORT.AUD
^Content/d2k/v2/GAMESFX/OI_TRAIN.AUD: v2/GAMESFX/OI_TRAIN.AUD
^Content/d2k/v2/GAMESFX/OI_ULOST.AUD: v2/GAMESFX/OI_ULOST.AUD
^Content/d2k/v2/GAMESFX/OI_UNRDY.AUD: v2/GAMESFX/OI_UNRDY.AUD
^Content/d2k/v2/GAMESFX/OI_UPGOP.AUD: v2/GAMESFX/OI_UPGOP.AUD
^Content/d2k/v2/GAMESFX/OI_UPGRD.AUD: v2/GAMESFX/OI_UPGRD.AUD
^Content/d2k/v2/GAMESFX/OI_WATTK.AUD: v2/GAMESFX/OI_WATTK.AUD
^Content/d2k/v2/GAMESFX/OI_WSIGN.AUD: v2/GAMESFX/OI_WSIGN.AUD
^Content/d2k/v2/MOUSE.R8: v2/MOUSE.R8
^Content/d2k/v2/PALETTE.BIN: v2/PALETTE.BIN
^Content/d2k/v2/SOUND.RS: v2/SOUND.RS
^Content/d2k/v2/BLOXXMAS.R8: v2/BLOXXMAS.R8
^Content/d2k/v2/DATA.R8: v2/DATA.R8
basefiles: Base Content
MirrorList: http://www.openra.net/packages/d2k-base-mirrors.txt
Extract:
^Content/d2k/v2/BLOXBASE.R8: v2/BLOXBASE.R8
^Content/d2k/v2/BLOXBAT.R8: v2/BLOXBAT.R8
^Content/d2k/v2/BLOXBGBS.R8: v2/BLOXBGBS.R8
^Content/d2k/v2/BLOXICE.R8: v2/BLOXICE.R8
^Content/d2k/v2/BLOXTREE.R8: v2/BLOXTREE.R8
^Content/d2k/v2/BLOXWAST.R8: v2/BLOXWAST.R8
^Content/d2k/v2/FONT.BIN: v2/FONT.BIN
^Content/d2k/v2/FONTCOL.FNT: v2/FONTCOL.FNT
^Content/d2k/v2/FONTCOL.FPL: v2/FONTCOL.FPL
^Content/d2k/v2/GAMESFX/A_ECONF1.AUD: v2/GAMESFX/A_ECONF1.AUD
^Content/d2k/v2/GAMESFX/A_ECONF2.AUD: v2/GAMESFX/A_ECONF2.AUD
^Content/d2k/v2/GAMESFX/A_ECONF3.AUD: v2/GAMESFX/A_ECONF3.AUD
^Content/d2k/v2/GAMESFX/A_ESEL1.AUD: v2/GAMESFX/A_ESEL1.AUD
^Content/d2k/v2/GAMESFX/A_ESEL2.AUD: v2/GAMESFX/A_ESEL2.AUD
^Content/d2k/v2/GAMESFX/A_ESEL3.AUD: v2/GAMESFX/A_ESEL3.AUD
^Content/d2k/v2/GAMESFX/A_FCONF1.AUD: v2/GAMESFX/A_FCONF1.AUD
^Content/d2k/v2/GAMESFX/A_FCONF2.AUD: v2/GAMESFX/A_FCONF2.AUD
^Content/d2k/v2/GAMESFX/A_FCONF3.AUD: v2/GAMESFX/A_FCONF3.AUD
^Content/d2k/v2/GAMESFX/A_FCONF4.AUD: v2/GAMESFX/A_FCONF4.AUD
^Content/d2k/v2/GAMESFX/A_FSEL1.AUD: v2/GAMESFX/A_FSEL1.AUD
^Content/d2k/v2/GAMESFX/A_FSEL2.AUD: v2/GAMESFX/A_FSEL2.AUD
^Content/d2k/v2/GAMESFX/A_FSEL3.AUD: v2/GAMESFX/A_FSEL3.AUD
^Content/d2k/v2/GAMESFX/A_FSEL4.AUD: v2/GAMESFX/A_FSEL4.AUD
^Content/d2k/v2/GAMESFX/A_ICONF1.AUD: v2/GAMESFX/A_ICONF1.AUD
^Content/d2k/v2/GAMESFX/A_ICONF2.AUD: v2/GAMESFX/A_ICONF2.AUD
^Content/d2k/v2/GAMESFX/A_ICONF3.AUD: v2/GAMESFX/A_ICONF3.AUD
^Content/d2k/v2/GAMESFX/A_ISEL1.AUD: v2/GAMESFX/A_ISEL1.AUD
^Content/d2k/v2/GAMESFX/A_ISEL2.AUD: v2/GAMESFX/A_ISEL2.AUD
^Content/d2k/v2/GAMESFX/A_ISEL3.AUD: v2/GAMESFX/A_ISEL3.AUD
^Content/d2k/v2/GAMESFX/A_VCONF1.AUD: v2/GAMESFX/A_VCONF1.AUD
^Content/d2k/v2/GAMESFX/A_VCONF2.AUD: v2/GAMESFX/A_VCONF2.AUD
^Content/d2k/v2/GAMESFX/A_VCONF3.AUD: v2/GAMESFX/A_VCONF3.AUD
^Content/d2k/v2/GAMESFX/A_VSEL1.AUD: v2/GAMESFX/A_VSEL1.AUD
^Content/d2k/v2/GAMESFX/A_VSEL2.AUD: v2/GAMESFX/A_VSEL2.AUD
^Content/d2k/v2/GAMESFX/A_VSEL3.AUD: v2/GAMESFX/A_VSEL3.AUD
^Content/d2k/v2/GAMESFX/AI_1MIN.AUD: v2/GAMESFX/AI_1MIN.AUD
^Content/d2k/v2/GAMESFX/AI_2MIN.AUD: v2/GAMESFX/AI_2MIN.AUD
^Content/d2k/v2/GAMESFX/AI_3MIN.AUD: v2/GAMESFX/AI_3MIN.AUD
^Content/d2k/v2/GAMESFX/AI_4MIN.AUD: v2/GAMESFX/AI_4MIN.AUD
^Content/d2k/v2/GAMESFX/AI_5MIN.AUD: v2/GAMESFX/AI_5MIN.AUD
^Content/d2k/v2/GAMESFX/AI_ABORT.AUD: v2/GAMESFX/AI_ABORT.AUD
^Content/d2k/v2/GAMESFX/AI_ATACK.AUD: v2/GAMESFX/AI_ATACK.AUD
^Content/d2k/v2/GAMESFX/AI_BDRDY.AUD: v2/GAMESFX/AI_BDRDY.AUD
^Content/d2k/v2/GAMESFX/AI_BLOST.AUD: v2/GAMESFX/AI_BLOST.AUD
^Content/d2k/v2/GAMESFX/AI_BUILD.AUD: v2/GAMESFX/AI_BUILD.AUD
^Content/d2k/v2/GAMESFX/AI_CANCL.AUD: v2/GAMESFX/AI_CANCL.AUD
^Content/d2k/v2/GAMESFX/AI_CAPT.AUD: v2/GAMESFX/AI_CAPT.AUD
^Content/d2k/v2/GAMESFX/AI_DHRDY.AUD: v2/GAMESFX/AI_DHRDY.AUD
^Content/d2k/v2/GAMESFX/AI_DPLOY.AUD: v2/GAMESFX/AI_DPLOY.AUD
^Content/d2k/v2/GAMESFX/AI_ENEMY.AUD: v2/GAMESFX/AI_ENEMY.AUD
^Content/d2k/v2/GAMESFX/AI_GANEW.AUD: v2/GAMESFX/AI_GANEW.AUD
^Content/d2k/v2/GAMESFX/AI_GLOAD.AUD: v2/GAMESFX/AI_GLOAD.AUD
^Content/d2k/v2/GAMESFX/AI_GSAVE.AUD: v2/GAMESFX/AI_GSAVE.AUD
^Content/d2k/v2/GAMESFX/AI_GUARD.AUD: v2/GAMESFX/AI_GUARD.AUD
^Content/d2k/v2/GAMESFX/AI_HATTK.AUD: v2/GAMESFX/AI_HATTK.AUD
^Content/d2k/v2/GAMESFX/AI_HOLD.AUD: v2/GAMESFX/AI_HOLD.AUD
^Content/d2k/v2/GAMESFX/AI_LAUNC.AUD: v2/GAMESFX/AI_LAUNC.AUD
^Content/d2k/v2/GAMESFX/AI_MAP1A.AUD: v2/GAMESFX/AI_MAP1A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP1B.AUD: v2/GAMESFX/AI_MAP1B.AUD
^Content/d2k/v2/GAMESFX/AI_MAP1C.AUD: v2/GAMESFX/AI_MAP1C.AUD
^Content/d2k/v2/GAMESFX/AI_MAP2A.AUD: v2/GAMESFX/AI_MAP2A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP2B.AUD: v2/GAMESFX/AI_MAP2B.AUD
^Content/d2k/v2/GAMESFX/AI_MAP2C.AUD: v2/GAMESFX/AI_MAP2C.AUD
^Content/d2k/v2/GAMESFX/AI_MAP3A.AUD: v2/GAMESFX/AI_MAP3A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP4A.AUD: v2/GAMESFX/AI_MAP4A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP5A.AUD: v2/GAMESFX/AI_MAP5A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP6A.AUD: v2/GAMESFX/AI_MAP6A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP7A.AUD: v2/GAMESFX/AI_MAP7A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP8A.AUD: v2/GAMESFX/AI_MAP8A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP9A.AUD: v2/GAMESFX/AI_MAP9A.AUD
^Content/d2k/v2/GAMESFX/AI_MEND.AUD: v2/GAMESFX/AI_MEND.AUD
^Content/d2k/v2/GAMESFX/AI_MFAIL.AUD: v2/GAMESFX/AI_MFAIL.AUD
^Content/d2k/v2/GAMESFX/AI_MONEY.AUD: v2/GAMESFX/AI_MONEY.AUD
^Content/d2k/v2/GAMESFX/AI_MWIN.AUD: v2/GAMESFX/AI_MWIN.AUD
^Content/d2k/v2/GAMESFX/AI_NEWOP.AUD: v2/GAMESFX/AI_NEWOP.AUD
^Content/d2k/v2/GAMESFX/AI_NROOM.AUD: v2/GAMESFX/AI_NROOM.AUD
^Content/d2k/v2/GAMESFX/AI_ORDER.AUD: v2/GAMESFX/AI_ORDER.AUD
^Content/d2k/v2/GAMESFX/AI_PLACE.AUD: v2/GAMESFX/AI_PLACE.AUD
^Content/d2k/v2/GAMESFX/AI_POWER.AUD: v2/GAMESFX/AI_POWER.AUD
^Content/d2k/v2/GAMESFX/AI_PREP.AUD: v2/GAMESFX/AI_PREP.AUD
^Content/d2k/v2/GAMESFX/AI_PRMRY.AUD: v2/GAMESFX/AI_PRMRY.AUD
^Content/d2k/v2/GAMESFX/AI_REINF.AUD: v2/GAMESFX/AI_REINF.AUD
^Content/d2k/v2/GAMESFX/AI_RUN.AUD: v2/GAMESFX/AI_RUN.AUD
^Content/d2k/v2/GAMESFX/AI_SELL.AUD: v2/GAMESFX/AI_SELL.AUD
^Content/d2k/v2/GAMESFX/AI_SILOS.AUD: v2/GAMESFX/AI_SILOS.AUD
^Content/d2k/v2/GAMESFX/AI_SPORT.AUD: v2/GAMESFX/AI_SPORT.AUD
^Content/d2k/v2/GAMESFX/AI_TRAIN.AUD: v2/GAMESFX/AI_TRAIN.AUD
^Content/d2k/v2/GAMESFX/AI_ULOST.AUD: v2/GAMESFX/AI_ULOST.AUD
^Content/d2k/v2/GAMESFX/AI_UNRDY.AUD: v2/GAMESFX/AI_UNRDY.AUD
^Content/d2k/v2/GAMESFX/AI_UPGOP.AUD: v2/GAMESFX/AI_UPGOP.AUD
^Content/d2k/v2/GAMESFX/AI_UPGRD.AUD: v2/GAMESFX/AI_UPGRD.AUD
^Content/d2k/v2/GAMESFX/AI_WATTK.AUD: v2/GAMESFX/AI_WATTK.AUD
^Content/d2k/v2/GAMESFX/AI_WSIGN.AUD: v2/GAMESFX/AI_WSIGN.AUD
^Content/d2k/v2/GAMESFX/G_SCONF1.AUD: v2/GAMESFX/G_SCONF1.AUD
^Content/d2k/v2/GAMESFX/G_SCONF2.AUD: v2/GAMESFX/G_SCONF2.AUD
^Content/d2k/v2/GAMESFX/G_SCONF3.AUD: v2/GAMESFX/G_SCONF3.AUD
^Content/d2k/v2/GAMESFX/G_SSEL1.AUD: v2/GAMESFX/G_SSEL1.AUD
^Content/d2k/v2/GAMESFX/G_SSEL2.AUD: v2/GAMESFX/G_SSEL2.AUD
^Content/d2k/v2/GAMESFX/G_SSEL3.AUD: v2/GAMESFX/G_SSEL3.AUD
^Content/d2k/v2/GAMESFX/H_ECONF1.AUD: v2/GAMESFX/H_ECONF1.AUD
^Content/d2k/v2/GAMESFX/H_ECONF2.AUD: v2/GAMESFX/H_ECONF2.AUD
^Content/d2k/v2/GAMESFX/H_ECONF3.AUD: v2/GAMESFX/H_ECONF3.AUD
^Content/d2k/v2/GAMESFX/H_ESEL1.AUD: v2/GAMESFX/H_ESEL1.AUD
^Content/d2k/v2/GAMESFX/H_ESEL2.AUD: v2/GAMESFX/H_ESEL2.AUD
^Content/d2k/v2/GAMESFX/H_ESEL3.AUD: v2/GAMESFX/H_ESEL3.AUD
^Content/d2k/v2/GAMESFX/H_ICONF1.AUD: v2/GAMESFX/H_ICONF1.AUD
^Content/d2k/v2/GAMESFX/H_ICONF2.AUD: v2/GAMESFX/H_ICONF2.AUD
^Content/d2k/v2/GAMESFX/H_ICONF3.AUD: v2/GAMESFX/H_ICONF3.AUD
^Content/d2k/v2/GAMESFX/H_ISEL1.AUD: v2/GAMESFX/H_ISEL1.AUD
^Content/d2k/v2/GAMESFX/H_ISEL2.AUD: v2/GAMESFX/H_ISEL2.AUD
^Content/d2k/v2/GAMESFX/H_ISEL3.AUD: v2/GAMESFX/H_ISEL3.AUD
^Content/d2k/v2/GAMESFX/H_VCONF1.AUD: v2/GAMESFX/H_VCONF1.AUD
^Content/d2k/v2/GAMESFX/H_VCONF2.AUD: v2/GAMESFX/H_VCONF2.AUD
^Content/d2k/v2/GAMESFX/H_VCONF3.AUD: v2/GAMESFX/H_VCONF3.AUD
^Content/d2k/v2/GAMESFX/H_VSEL1.AUD: v2/GAMESFX/H_VSEL1.AUD
^Content/d2k/v2/GAMESFX/H_VSEL2.AUD: v2/GAMESFX/H_VSEL2.AUD
^Content/d2k/v2/GAMESFX/H_VSEL3.AUD: v2/GAMESFX/H_VSEL3.AUD
^Content/d2k/v2/GAMESFX/HI_1MIN.AUD: v2/GAMESFX/HI_1MIN.AUD
^Content/d2k/v2/GAMESFX/HI_2MIN.AUD: v2/GAMESFX/HI_2MIN.AUD
^Content/d2k/v2/GAMESFX/HI_3MIN.AUD: v2/GAMESFX/HI_3MIN.AUD
^Content/d2k/v2/GAMESFX/HI_4MIN.AUD: v2/GAMESFX/HI_4MIN.AUD
^Content/d2k/v2/GAMESFX/HI_5MIN.AUD: v2/GAMESFX/HI_5MIN.AUD
^Content/d2k/v2/GAMESFX/HI_ABORT.AUD: v2/GAMESFX/HI_ABORT.AUD
^Content/d2k/v2/GAMESFX/HI_ATACK.AUD: v2/GAMESFX/HI_ATACK.AUD
^Content/d2k/v2/GAMESFX/HI_BDRDY.AUD: v2/GAMESFX/HI_BDRDY.AUD
^Content/d2k/v2/GAMESFX/HI_BLOST.AUD: v2/GAMESFX/HI_BLOST.AUD
^Content/d2k/v2/GAMESFX/HI_BUILD.AUD: v2/GAMESFX/HI_BUILD.AUD
^Content/d2k/v2/GAMESFX/HI_CANCL.AUD: v2/GAMESFX/HI_CANCL.AUD
^Content/d2k/v2/GAMESFX/HI_CAPT.AUD: v2/GAMESFX/HI_CAPT.AUD
^Content/d2k/v2/GAMESFX/HI_DHRDY.AUD: v2/GAMESFX/HI_DHRDY.AUD
^Content/d2k/v2/GAMESFX/HI_DPLOY.AUD: v2/GAMESFX/HI_DPLOY.AUD
^Content/d2k/v2/GAMESFX/HI_ENEMY.AUD: v2/GAMESFX/HI_ENEMY.AUD
^Content/d2k/v2/GAMESFX/HI_GANEW.AUD: v2/GAMESFX/HI_GANEW.AUD
^Content/d2k/v2/GAMESFX/HI_GLOAD.AUD: v2/GAMESFX/HI_GLOAD.AUD
^Content/d2k/v2/GAMESFX/HI_GSAVE.AUD: v2/GAMESFX/HI_GSAVE.AUD
^Content/d2k/v2/GAMESFX/HI_GUARD.AUD: v2/GAMESFX/HI_GUARD.AUD
^Content/d2k/v2/GAMESFX/HI_HATTK.AUD: v2/GAMESFX/HI_HATTK.AUD
^Content/d2k/v2/GAMESFX/HI_HOLD.AUD: v2/GAMESFX/HI_HOLD.AUD
^Content/d2k/v2/GAMESFX/HI_LAUNC.AUD: v2/GAMESFX/HI_LAUNC.AUD
^Content/d2k/v2/GAMESFX/HI_MAP1A.AUD: v2/GAMESFX/HI_MAP1A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP1B.AUD: v2/GAMESFX/HI_MAP1B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP1C.AUD: v2/GAMESFX/HI_MAP1C.AUD
^Content/d2k/v2/GAMESFX/HI_MAP2A.AUD: v2/GAMESFX/HI_MAP2A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP2B.AUD: v2/GAMESFX/HI_MAP2B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP2C.AUD: v2/GAMESFX/HI_MAP2C.AUD
^Content/d2k/v2/GAMESFX/HI_MAP3A.AUD: v2/GAMESFX/HI_MAP3A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP3B.AUD: v2/GAMESFX/HI_MAP3B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP4A.AUD: v2/GAMESFX/HI_MAP4A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP4B.AUD: v2/GAMESFX/HI_MAP4B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP5A.AUD: v2/GAMESFX/HI_MAP5A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP6A.AUD: v2/GAMESFX/HI_MAP6A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP6B.AUD: v2/GAMESFX/HI_MAP6B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP7A.AUD: v2/GAMESFX/HI_MAP7A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP9.AUD: v2/GAMESFX/HI_MAP9.AUD
^Content/d2k/v2/GAMESFX/HI_MAP9A.AUD: v2/GAMESFX/HI_MAP9A.AUD
^Content/d2k/v2/GAMESFX/HI_MEND.AUD: v2/GAMESFX/HI_MEND.AUD
^Content/d2k/v2/GAMESFX/HI_MFAIL.AUD: v2/GAMESFX/HI_MFAIL.AUD
^Content/d2k/v2/GAMESFX/HI_MONEY.AUD: v2/GAMESFX/HI_MONEY.AUD
^Content/d2k/v2/GAMESFX/HI_MWIN.AUD: v2/GAMESFX/HI_MWIN.AUD
^Content/d2k/v2/GAMESFX/HI_NEWOP.AUD: v2/GAMESFX/HI_NEWOP.AUD
^Content/d2k/v2/GAMESFX/HI_NROOM.AUD: v2/GAMESFX/HI_NROOM.AUD
^Content/d2k/v2/GAMESFX/HI_ORDER.AUD: v2/GAMESFX/HI_ORDER.AUD
^Content/d2k/v2/GAMESFX/HI_PLACE.AUD: v2/GAMESFX/HI_PLACE.AUD
^Content/d2k/v2/GAMESFX/HI_POWER.AUD: v2/GAMESFX/HI_POWER.AUD
^Content/d2k/v2/GAMESFX/HI_PREP.AUD: v2/GAMESFX/HI_PREP.AUD
^Content/d2k/v2/GAMESFX/HI_PRMRY.AUD: v2/GAMESFX/HI_PRMRY.AUD
^Content/d2k/v2/GAMESFX/HI_REINF.AUD: v2/GAMESFX/HI_REINF.AUD
^Content/d2k/v2/GAMESFX/HI_RUN.AUD: v2/GAMESFX/HI_RUN.AUD
^Content/d2k/v2/GAMESFX/HI_SELL.AUD: v2/GAMESFX/HI_SELL.AUD
^Content/d2k/v2/GAMESFX/HI_SILOS.AUD: v2/GAMESFX/HI_SILOS.AUD
^Content/d2k/v2/GAMESFX/HI_SPORT.AUD: v2/GAMESFX/HI_SPORT.AUD
^Content/d2k/v2/GAMESFX/HI_TRAIN.AUD: v2/GAMESFX/HI_TRAIN.AUD
^Content/d2k/v2/GAMESFX/HI_ULOST.AUD: v2/GAMESFX/HI_ULOST.AUD
^Content/d2k/v2/GAMESFX/HI_UNRDY.AUD: v2/GAMESFX/HI_UNRDY.AUD
^Content/d2k/v2/GAMESFX/HI_UPGOP.AUD: v2/GAMESFX/HI_UPGOP.AUD
^Content/d2k/v2/GAMESFX/HI_UPGRD.AUD: v2/GAMESFX/HI_UPGRD.AUD
^Content/d2k/v2/GAMESFX/HI_WATTK.AUD: v2/GAMESFX/HI_WATTK.AUD
^Content/d2k/v2/GAMESFX/HI_WSIGN.AUD: v2/GAMESFX/HI_WSIGN.AUD
^Content/d2k/v2/GAMESFX/O_ECONF1.AUD: v2/GAMESFX/O_ECONF1.AUD
^Content/d2k/v2/GAMESFX/O_ECONF2.AUD: v2/GAMESFX/O_ECONF2.AUD
^Content/d2k/v2/GAMESFX/O_ECONF3.AUD: v2/GAMESFX/O_ECONF3.AUD
^Content/d2k/v2/GAMESFX/O_ESEL1.AUD: v2/GAMESFX/O_ESEL1.AUD
^Content/d2k/v2/GAMESFX/O_ESEL2.AUD: v2/GAMESFX/O_ESEL2.AUD
^Content/d2k/v2/GAMESFX/O_ESEL3.AUD: v2/GAMESFX/O_ESEL3.AUD
^Content/d2k/v2/GAMESFX/O_ICONF1.AUD: v2/GAMESFX/O_ICONF1.AUD
^Content/d2k/v2/GAMESFX/O_ICONF2.AUD: v2/GAMESFX/O_ICONF2.AUD
^Content/d2k/v2/GAMESFX/O_ICONF3.AUD: v2/GAMESFX/O_ICONF3.AUD
^Content/d2k/v2/GAMESFX/O_ISEL1.AUD: v2/GAMESFX/O_ISEL1.AUD
^Content/d2k/v2/GAMESFX/O_ISEL2.AUD: v2/GAMESFX/O_ISEL2.AUD
^Content/d2k/v2/GAMESFX/O_ISEL3.AUD: v2/GAMESFX/O_ISEL3.AUD
^Content/d2k/v2/GAMESFX/O_SCONF1.AUD: v2/GAMESFX/O_SCONF1.AUD
^Content/d2k/v2/GAMESFX/O_SCONF2.AUD: v2/GAMESFX/O_SCONF2.AUD
^Content/d2k/v2/GAMESFX/O_SCONF3.AUD: v2/GAMESFX/O_SCONF3.AUD
^Content/d2k/v2/GAMESFX/O_SSEL1.AUD: v2/GAMESFX/O_SSEL1.AUD
^Content/d2k/v2/GAMESFX/O_SSEL2.AUD: v2/GAMESFX/O_SSEL2.AUD
^Content/d2k/v2/GAMESFX/O_SSEL3.AUD: v2/GAMESFX/O_SSEL3.AUD
^Content/d2k/v2/GAMESFX/O_VCONF1.AUD: v2/GAMESFX/O_VCONF1.AUD
^Content/d2k/v2/GAMESFX/O_VCONF2.AUD: v2/GAMESFX/O_VCONF2.AUD
^Content/d2k/v2/GAMESFX/O_VCONF3.AUD: v2/GAMESFX/O_VCONF3.AUD
^Content/d2k/v2/GAMESFX/O_VSEL1.AUD: v2/GAMESFX/O_VSEL1.AUD
^Content/d2k/v2/GAMESFX/O_VSEL2.AUD: v2/GAMESFX/O_VSEL2.AUD
^Content/d2k/v2/GAMESFX/O_VSEL3.AUD: v2/GAMESFX/O_VSEL3.AUD
^Content/d2k/v2/GAMESFX/OI_1MIN.AUD: v2/GAMESFX/OI_1MIN.AUD
^Content/d2k/v2/GAMESFX/OI_2MIN.AUD: v2/GAMESFX/OI_2MIN.AUD
^Content/d2k/v2/GAMESFX/OI_3MIN.AUD: v2/GAMESFX/OI_3MIN.AUD
^Content/d2k/v2/GAMESFX/OI_4MIN.AUD: v2/GAMESFX/OI_4MIN.AUD
^Content/d2k/v2/GAMESFX/OI_5MIN.AUD: v2/GAMESFX/OI_5MIN.AUD
^Content/d2k/v2/GAMESFX/OI_ABORT.AUD: v2/GAMESFX/OI_ABORT.AUD
^Content/d2k/v2/GAMESFX/OI_ATACK.AUD: v2/GAMESFX/OI_ATACK.AUD
^Content/d2k/v2/GAMESFX/OI_BDRDY.AUD: v2/GAMESFX/OI_BDRDY.AUD
^Content/d2k/v2/GAMESFX/OI_BLOST.AUD: v2/GAMESFX/OI_BLOST.AUD
^Content/d2k/v2/GAMESFX/OI_BUILD.AUD: v2/GAMESFX/OI_BUILD.AUD
^Content/d2k/v2/GAMESFX/OI_CANCL.AUD: v2/GAMESFX/OI_CANCL.AUD
^Content/d2k/v2/GAMESFX/OI_CAPT.AUD: v2/GAMESFX/OI_CAPT.AUD
^Content/d2k/v2/GAMESFX/OI_DHRDY.AUD: v2/GAMESFX/OI_DHRDY.AUD
^Content/d2k/v2/GAMESFX/OI_DPLOY.AUD: v2/GAMESFX/OI_DPLOY.AUD
^Content/d2k/v2/GAMESFX/OI_ENEMY.AUD: v2/GAMESFX/OI_ENEMY.AUD
^Content/d2k/v2/GAMESFX/OI_GANEW.AUD: v2/GAMESFX/OI_GANEW.AUD
^Content/d2k/v2/GAMESFX/OI_GLOAD.AUD: v2/GAMESFX/OI_GLOAD.AUD
^Content/d2k/v2/GAMESFX/OI_GSAVE.AUD: v2/GAMESFX/OI_GSAVE.AUD
^Content/d2k/v2/GAMESFX/OI_GUARD.AUD: v2/GAMESFX/OI_GUARD.AUD
^Content/d2k/v2/GAMESFX/OI_HATTK.AUD: v2/GAMESFX/OI_HATTK.AUD
^Content/d2k/v2/GAMESFX/OI_HOLD.AUD: v2/GAMESFX/OI_HOLD.AUD
^Content/d2k/v2/GAMESFX/OI_LAUNC.AUD: v2/GAMESFX/OI_LAUNC.AUD
^Content/d2k/v2/GAMESFX/OI_MAP1A.AUD: v2/GAMESFX/OI_MAP1A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP1B.AUD: v2/GAMESFX/OI_MAP1B.AUD
^Content/d2k/v2/GAMESFX/OI_MAP1C.AUD: v2/GAMESFX/OI_MAP1C.AUD
^Content/d2k/v2/GAMESFX/OI_MAP2A.AUD: v2/GAMESFX/OI_MAP2A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP2B.AUD: v2/GAMESFX/OI_MAP2B.AUD
^Content/d2k/v2/GAMESFX/OI_MAP2C.AUD: v2/GAMESFX/OI_MAP2C.AUD
^Content/d2k/v2/GAMESFX/OI_MAP3A.AUD: v2/GAMESFX/OI_MAP3A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP4A.AUD: v2/GAMESFX/OI_MAP4A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP5A.AUD: v2/GAMESFX/OI_MAP5A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP6A.AUD: v2/GAMESFX/OI_MAP6A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP7A.AUD: v2/GAMESFX/OI_MAP7A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP8A.AUD: v2/GAMESFX/OI_MAP8A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP9A.AUD: v2/GAMESFX/OI_MAP9A.AUD
^Content/d2k/v2/GAMESFX/OI_MEND.AUD: v2/GAMESFX/OI_MEND.AUD
^Content/d2k/v2/GAMESFX/OI_MFAIL.AUD: v2/GAMESFX/OI_MFAIL.AUD
^Content/d2k/v2/GAMESFX/OI_MONEY.AUD: v2/GAMESFX/OI_MONEY.AUD
^Content/d2k/v2/GAMESFX/OI_MWIN.AUD: v2/GAMESFX/OI_MWIN.AUD
^Content/d2k/v2/GAMESFX/OI_NEWOP.AUD: v2/GAMESFX/OI_NEWOP.AUD
^Content/d2k/v2/GAMESFX/OI_NROOM.AUD: v2/GAMESFX/OI_NROOM.AUD
^Content/d2k/v2/GAMESFX/OI_ORDER.AUD: v2/GAMESFX/OI_ORDER.AUD
^Content/d2k/v2/GAMESFX/OI_PLACE.AUD: v2/GAMESFX/OI_PLACE.AUD
^Content/d2k/v2/GAMESFX/OI_POWER.AUD: v2/GAMESFX/OI_POWER.AUD
^Content/d2k/v2/GAMESFX/OI_PREP.AUD: v2/GAMESFX/OI_PREP.AUD
^Content/d2k/v2/GAMESFX/OI_PRMRY.AUD: v2/GAMESFX/OI_PRMRY.AUD
^Content/d2k/v2/GAMESFX/OI_REINF.AUD: v2/GAMESFX/OI_REINF.AUD
^Content/d2k/v2/GAMESFX/OI_RUN.AUD: v2/GAMESFX/OI_RUN.AUD
^Content/d2k/v2/GAMESFX/OI_SELL.AUD: v2/GAMESFX/OI_SELL.AUD
^Content/d2k/v2/GAMESFX/OI_SILOS.AUD: v2/GAMESFX/OI_SILOS.AUD
^Content/d2k/v2/GAMESFX/OI_SPORT.AUD: v2/GAMESFX/OI_SPORT.AUD
^Content/d2k/v2/GAMESFX/OI_TRAIN.AUD: v2/GAMESFX/OI_TRAIN.AUD
^Content/d2k/v2/GAMESFX/OI_ULOST.AUD: v2/GAMESFX/OI_ULOST.AUD
^Content/d2k/v2/GAMESFX/OI_UNRDY.AUD: v2/GAMESFX/OI_UNRDY.AUD
^Content/d2k/v2/GAMESFX/OI_UPGOP.AUD: v2/GAMESFX/OI_UPGOP.AUD
^Content/d2k/v2/GAMESFX/OI_UPGRD.AUD: v2/GAMESFX/OI_UPGRD.AUD
^Content/d2k/v2/GAMESFX/OI_WATTK.AUD: v2/GAMESFX/OI_WATTK.AUD
^Content/d2k/v2/GAMESFX/OI_WSIGN.AUD: v2/GAMESFX/OI_WSIGN.AUD
^Content/d2k/v2/MOUSE.R8: v2/MOUSE.R8
^Content/d2k/v2/PALETTE.BIN: v2/PALETTE.BIN
^Content/d2k/v2/SOUND.RS: v2/SOUND.RS
patch106: Patch 1.06 Content
MirrorList: http://www.openra.net/packages/d2k-patch106-mirrors.txt
Extract:
^Content/d2k/v2/BLOXXMAS.R8: v2/BLOXXMAS.R8
^Content/d2k/v2/DATA.R8: v2/DATA.R8

View File

@@ -0,0 +1,294 @@
gruntmods: Dune 2000: GruntMods Edition
Type: Install
RegistryKey: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Dune 2000: Gruntmods Edition
IDFiles:
Dune 2000/data/BLOXXMAS.R8: afc818feda44f5873e3af07bd2191573ba9965db
Dune 2000/data/DATA.R8: 2b229cf4be47104a6214237039a55329f6c45bc9
Install:
copy: Dune 2000/data/Music
^Content/d2k/v2/Music/AMBUSH.AUD: AMBUSH.AUD
^Content/d2k/v2/Music/ARAKATAK.AUD: ARAKATAK.AUD
^Content/d2k/v2/Music/ATREGAIN.AUD: ATREGAIN.AUD
^Content/d2k/v2/Music/ENTORDOS.AUD: ENTORDOS.AUD
^Content/d2k/v2/Music/FIGHTPWR.AUD: FIGHTPWR.AUD
^Content/d2k/v2/Music/FREMEN.AUD: FREMEN.AUD
^Content/d2k/v2/Music/HARK_BAT.AUD: HARK_BAT.AUD
^Content/d2k/v2/Music/LANDSAND.AUD: LANDSAND.AUD
^Content/d2k/v2/Music/OPTIONS.AUD: OPTIONS.AUD
^Content/d2k/v2/Music/PLOTTING.AUD: PLOTTING.AUD
^Content/d2k/v2/Music/RISEHARK.AUD: RISEHARK.AUD
^Content/d2k/v2/Music/ROBOTIX.AUD: ROBOTIX.AUD
^Content/d2k/v2/Music/SCORE.AUD: SCORE.AUD
^Content/d2k/v2/Music/SOLDAPPR.AUD: SOLDAPPR.AUD
^Content/d2k/v2/Music/SPICESCT.AUD: SPICESCT.AUD
^Content/d2k/v2/Music/UNDERCON.AUD: UNDERCON.AUD
^Content/d2k/v2/Music/WAITGAME.A: WAITGAME.AUD
copy: Dune 2000/data
^Content/d2k/v2/BLOXBAT.R8: BLOXBAT.R8
^Content/d2k/v2/BLOXBASE.R8: BLOXBASE.R8
^Content/d2k/v2/BLOXBGBS.R8: BLOXBGBS.R8
^Content/d2k/v2/BLOXICE.R8: BLOXICE.R8
^Content/d2k/v2/BLOXTREE.R8: BLOXTREE.R8
^Content/d2k/v2/BLOXWAST.R8: BLOXWAST.R8
^Content/d2k/v2/BLOXXMAS.R8: BLOXXMAS.R8
^Content/d2k/v2/DATA.R8: DATA.R8
^Content/d2k/v2/MOUSE.R8: MOUSE.R8
^Content/d2k/v2/FONTCOL.FNT: FONTCOL.FNT
^Content/d2k/v2/FONTCOL.FPL: FONTCOL.FPL
copy: Dune 2000/data/bin
^Content/d2k/v2/PALETTE.BIN: PALETTE.BIN
^Content/d2k/v2/FONT.BIN: FONT.BIN
copy: Dune 2000/data/GAMESFX
^Content/d2k/v2/GAMESFX/A_ECONF2.AUD: A_ECONF2.AUD
^Content/d2k/v2/GAMESFX/A_ECONF1.AUD: A_ECONF1.AUD
^Content/d2k/v2/GAMESFX/A_ECONF3.AUD: A_ECONF3.AUD
^Content/d2k/v2/GAMESFX/A_ESEL1.AUD: A_ESEL1.AUD
^Content/d2k/v2/GAMESFX/A_ESEL2.AUD: A_ESEL2.AUD
^Content/d2k/v2/GAMESFX/A_ESEL3.AUD: A_ESEL3.AUD
^Content/d2k/v2/GAMESFX/A_FCONF1.AUD: A_FCONF1.AUD
^Content/d2k/v2/GAMESFX/A_FCONF2.AUD: A_FCONF2.AUD
^Content/d2k/v2/GAMESFX/A_FCONF3.AUD: A_FCONF3.AUD
^Content/d2k/v2/GAMESFX/OI_ENEMY.AUD: OI_ENEMY.AUD
^Content/d2k/v2/GAMESFX/AI_POWER.AUD: AI_POWER.AUD
^Content/d2k/v2/GAMESFX/AI_PREP.AUD: AI_PREP.AUD
^Content/d2k/v2/GAMESFX/AI_PRMRY.AUD: AI_PRMRY.AUD
^Content/d2k/v2/GAMESFX/AI_REINF.AUD: AI_REINF.AUD
^Content/d2k/v2/GAMESFX/AI_GANEW.AUD: AI_GANEW.AUD
^Content/d2k/v2/GAMESFX/HI_SPORT.AUD: HI_SPORT.AUD
^Content/d2k/v2/GAMESFX/OI_GSAVE.AUD: OI_GSAVE.AUD
^Content/d2k/v2/GAMESFX/OI_GUARD.AUD: OI_GUARD.AUD
^Content/d2k/v2/GAMESFX/HI_MAP3B.AUD: HI_MAP3B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP4A.AUD: HI_MAP4A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP5A.AUD: HI_MAP5A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP6A.AUD: HI_MAP6A.AUD
^Content/d2k/v2/GAMESFX/O_ECONF3.AUD: O_ECONF3.AUD
^Content/d2k/v2/GAMESFX/O_SCONF3.AUD: O_SCONF3.AUD
^Content/d2k/v2/GAMESFX/O_SSEL1.AUD: O_SSEL1.AUD
^Content/d2k/v2/GAMESFX/O_SSEL2.AUD: O_SSEL2.AUD
^Content/d2k/v2/GAMESFX/O_SSEL3.AUD: O_SSEL3.AUD
^Content/d2k/v2/GAMESFX/O_VCONF1.AUD: O_VCONF1.AUD
^Content/d2k/v2/GAMESFX/O_VCONF2.AUD: O_VCONF2.AUD
^Content/d2k/v2/GAMESFX/O_VCONF3.AUD: O_VCONF3.AUD
^Content/d2k/v2/GAMESFX/OI_MWIN.AUD: OI_MWIN.AUD
^Content/d2k/v2/GAMESFX/O_ECONF1.AUD: O_ECONF1.AUD
^Content/d2k/v2/GAMESFX/O_ECONF2.AUD: O_ECONF2.AUD
^Content/d2k/v2/GAMESFX/OI_NROOM.AUD: OI_NROOM.AUD
^Content/d2k/v2/GAMESFX/O_ESEL1.AUD: O_ESEL1.AUD
^Content/d2k/v2/GAMESFX/O_ESEL2.AUD: O_ESEL2.AUD
^Content/d2k/v2/GAMESFX/O_ESEL3.AUD: O_ESEL3.AUD
^Content/d2k/v2/GAMESFX/O_ICONF1.AUD: O_ICONF1.AUD
^Content/d2k/v2/GAMESFX/O_ICONF2.AUD: O_ICONF2.AUD
^Content/d2k/v2/GAMESFX/O_ICONF3.AUD: O_ICONF3.AUD
^Content/d2k/v2/GAMESFX/HI_MAP4B.AUD: HI_MAP4B.AUD
^Content/d2k/v2/GAMESFX/O_ISEL2.AUD: O_ISEL2.AUD
^Content/d2k/v2/GAMESFX/HI_BLOST.AUD: HI_BLOST.AUD
^Content/d2k/v2/GAMESFX/HI_BUILD.AUD: HI_BUILD.AUD
^Content/d2k/v2/GAMESFX/HI_MAP6B.AUD: HI_MAP6B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP7A.AUD: HI_MAP7A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP9.AUD: HI_MAP9.AUD
^Content/d2k/v2/GAMESFX/A_VSEL3.AUD: A_VSEL3.AUD
^Content/d2k/v2/GAMESFX/AI_1MIN.AUD: AI_1MIN.AUD
^Content/d2k/v2/GAMESFX/AI_2MIN.AUD: AI_2MIN.AUD
^Content/d2k/v2/GAMESFX/AI_3MIN.AUD: AI_3MIN.AUD
^Content/d2k/v2/GAMESFX/O_VSEL1.AUD: O_VSEL1.AUD
^Content/d2k/v2/GAMESFX/HI_RUN.AUD: HI_RUN.AUD
^Content/d2k/v2/GAMESFX/A_FSEL1.AUD: A_FSEL1.AUD
^Content/d2k/v2/GAMESFX/A_FSEL2.AUD: A_FSEL2.AUD
^Content/d2k/v2/GAMESFX/A_FSEL3.AUD: A_FSEL3.AUD
^Content/d2k/v2/GAMESFX/A_FSEL4.AUD: A_FSEL4.AUD
^Content/d2k/v2/GAMESFX/OI_MAP8A.AUD: OI_MAP8A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP9A.AUD: OI_MAP9A.AUD
^Content/d2k/v2/GAMESFX/OI_MEND.AUD: OI_MEND.AUD
^Content/d2k/v2/GAMESFX/OI_MFAIL.AUD: OI_MFAIL.AUD
^Content/d2k/v2/GAMESFX/AI_4MIN.AUD: AI_4MIN.AUD
^Content/d2k/v2/GAMESFX/AI_CANCL.AUD: AI_CANCL.AUD
^Content/d2k/v2/GAMESFX/OI_ULOST.AUD: OI_ULOST.AUD
^Content/d2k/v2/GAMESFX/OI_UNRDY.AUD: OI_UNRDY.AUD
^Content/d2k/v2/GAMESFX/O_VSEL3.AUD: O_VSEL3.AUD
^Content/d2k/v2/GAMESFX/OI_1MIN.AUD: OI_1MIN.AUD
^Content/d2k/v2/GAMESFX/OI_MAP7A.AUD: OI_MAP7A.AUD
^Content/d2k/v2/GAMESFX/HI_TRAIN.AUD: HI_TRAIN.AUD
^Content/d2k/v2/GAMESFX/HI_ULOST.AUD: HI_ULOST.AUD
^Content/d2k/v2/GAMESFX/HI_UNRDY.AUD: HI_UNRDY.AUD
^Content/d2k/v2/GAMESFX/OI_MAP2A.AUD: OI_MAP2A.AUD
^Content/d2k/v2/GAMESFX/HI_REINF.AUD: HI_REINF.AUD
^Content/d2k/v2/GAMESFX/OI_MAP2C.AUD: OI_MAP2C.AUD
^Content/d2k/v2/GAMESFX/OI_MAP3A.AUD: OI_MAP3A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP4A.AUD: OI_MAP4A.AUD
^Content/d2k/v2/GAMESFX/OI_SPORT.AUD: OI_SPORT.AUD
^Content/d2k/v2/GAMESFX/OI_UPGOP.AUD: OI_UPGOP.AUD
^Content/d2k/v2/GAMESFX/OI_UPGRD.AUD: OI_UPGRD.AUD
^Content/d2k/v2/GAMESFX/OI_WATTK.AUD: OI_WATTK.AUD
^Content/d2k/v2/GAMESFX/AI_MONEY.AUD: AI_MONEY.AUD
^Content/d2k/v2/GAMESFX/AI_SELL.AUD: AI_SELL.AUD
^Content/d2k/v2/GAMESFX/HI_NEWOP.AUD: HI_NEWOP.AUD
^Content/d2k/v2/GAMESFX/AI_5MIN.AUD: AI_5MIN.AUD
^Content/d2k/v2/GAMESFX/OI_HATTK.AUD: OI_HATTK.AUD
^Content/d2k/v2/GAMESFX/H_VSEL2.AUD: H_VSEL2.AUD
^Content/d2k/v2/GAMESFX/OI_MAP1B.AUD: OI_MAP1B.AUD
^Content/d2k/v2/GAMESFX/OI_MAP1C.AUD: OI_MAP1C.AUD
^Content/d2k/v2/GAMESFX/AI_GSAVE.AUD: AI_GSAVE.AUD
^Content/d2k/v2/GAMESFX/AI_GUARD.AUD: AI_GUARD.AUD
^Content/d2k/v2/GAMESFX/AI_HATTK.AUD: AI_HATTK.AUD
^Content/d2k/v2/GAMESFX/AI_HOLD.AUD: AI_HOLD.AUD
^Content/d2k/v2/GAMESFX/HI_UPGOP.AUD: HI_UPGOP.AUD
^Content/d2k/v2/GAMESFX/HI_UPGRD.AUD: HI_UPGRD.AUD
^Content/d2k/v2/GAMESFX/OI_MAP2B.AUD: OI_MAP2B.AUD
^Content/d2k/v2/GAMESFX/HI_WSIGN.AUD: HI_WSIGN.AUD
^Content/d2k/v2/GAMESFX/HI_HATTK.AUD: HI_HATTK.AUD
^Content/d2k/v2/GAMESFX/O_SCONF2.AUD: O_SCONF2.AUD
^Content/d2k/v2/GAMESFX/HI_HOLD.AUD: HI_HOLD.AUD
^Content/d2k/v2/GAMESFX/A_VSEL2.AUD: A_VSEL2.AUD
^Content/d2k/v2/GAMESFX/AI_ATACK.AUD: AI_ATACK.AUD
^Content/d2k/v2/GAMESFX/AI_BDRDY.AUD: AI_BDRDY.AUD
^Content/d2k/v2/GAMESFX/AI_BLOST.AUD: AI_BLOST.AUD
^Content/d2k/v2/GAMESFX/AI_BUILD.AUD: AI_BUILD.AUD
^Content/d2k/v2/GAMESFX/HI_GLOAD.AUD: HI_GLOAD.AUD
^Content/d2k/v2/GAMESFX/AI_CAPT.AUD: AI_CAPT.AUD
^Content/d2k/v2/GAMESFX/AI_DHRDY.AUD: AI_DHRDY.AUD
^Content/d2k/v2/GAMESFX/AI_DPLOY.AUD: AI_DPLOY.AUD
^Content/d2k/v2/GAMESFX/AI_ENEMY.AUD: AI_ENEMY.AUD
^Content/d2k/v2/GAMESFX/A_VCONF1.AUD: A_VCONF1.AUD
^Content/d2k/v2/GAMESFX/HI_PLACE.AUD: HI_PLACE.AUD
^Content/d2k/v2/GAMESFX/HI_POWER.AUD: HI_POWER.AUD
^Content/d2k/v2/GAMESFX/HI_PREP.AUD: HI_PREP.AUD
^Content/d2k/v2/GAMESFX/HI_PRMRY.AUD: HI_PRMRY.AUD
^Content/d2k/v2/GAMESFX/OI_MONEY.AUD: OI_MONEY.AUD
^Content/d2k/v2/GAMESFX/O_ISEL1.AUD: O_ISEL1.AUD
^Content/d2k/v2/GAMESFX/OI_NEWOP.AUD: OI_NEWOP.AUD
^Content/d2k/v2/GAMESFX/A_VCONF3.AUD: A_VCONF3.AUD
^Content/d2k/v2/GAMESFX/A_VSEL1.AUD: A_VSEL1.AUD
^Content/d2k/v2/GAMESFX/OI_PLACE.AUD: OI_PLACE.AUD
^Content/d2k/v2/GAMESFX/OI_POWER.AUD: OI_POWER.AUD
^Content/d2k/v2/GAMESFX/OI_PREP.AUD: OI_PREP.AUD
^Content/d2k/v2/GAMESFX/OI_PRMRY.AUD: OI_PRMRY.AUD
^Content/d2k/v2/GAMESFX/OI_REINF.AUD: OI_REINF.AUD
^Content/d2k/v2/GAMESFX/OI_RUN.AUD: OI_RUN.AUD
^Content/d2k/v2/GAMESFX/OI_CAPT.AUD: OI_CAPT.AUD
^Content/d2k/v2/GAMESFX/H_ECONF1.AUD: H_ECONF1.AUD
^Content/d2k/v2/GAMESFX/O_VSEL2.AUD: O_VSEL2.AUD
^Content/d2k/v2/GAMESFX/H_VSEL3.AUD: H_VSEL3.AUD
^Content/d2k/v2/GAMESFX/HI_1MIN.AUD: HI_1MIN.AUD
^Content/d2k/v2/GAMESFX/HI_2MIN.AUD: HI_2MIN.AUD
^Content/d2k/v2/GAMESFX/HI_3MIN.AUD: HI_3MIN.AUD
^Content/d2k/v2/GAMESFX/HI_4MIN.AUD: HI_4MIN.AUD
^Content/d2k/v2/GAMESFX/HI_5MIN.AUD: HI_5MIN.AUD
^Content/d2k/v2/GAMESFX/HI_ABORT.AUD: HI_ABORT.AUD
^Content/d2k/v2/GAMESFX/HI_ATACK.AUD: HI_ATACK.AUD
^Content/d2k/v2/GAMESFX/HI_NROOM.AUD: HI_NROOM.AUD
^Content/d2k/v2/GAMESFX/OI_SILOS.AUD: OI_SILOS.AUD
^Content/d2k/v2/GAMESFX/A_FCONF4.AUD: A_FCONF4.AUD
^Content/d2k/v2/GAMESFX/OI_MAP5A.AUD: OI_MAP5A.AUD
^Content/d2k/v2/GAMESFX/OI_MAP6A.AUD: OI_MAP6A.AUD
^Content/d2k/v2/GAMESFX/HI_CANCL.AUD: HI_CANCL.AUD
^Content/d2k/v2/GAMESFX/HI_CAPT.AUD: HI_CAPT.AUD
^Content/d2k/v2/GAMESFX/HI_DHRDY.AUD: HI_DHRDY.AUD
^Content/d2k/v2/GAMESFX/HI_DPLOY.AUD: HI_DPLOY.AUD
^Content/d2k/v2/GAMESFX/HI_ENEMY.AUD: HI_ENEMY.AUD
^Content/d2k/v2/GAMESFX/HI_GANEW.AUD: HI_GANEW.AUD
^Content/d2k/v2/GAMESFX/OI_DHRDY.AUD: OI_DHRDY.AUD
^Content/d2k/v2/GAMESFX/HI_GSAVE.AUD: HI_GSAVE.AUD
^Content/d2k/v2/GAMESFX/HI_GUARD.AUD: HI_GUARD.AUD
^Content/d2k/v2/GAMESFX/H_VSEL1.AUD: H_VSEL1.AUD
^Content/d2k/v2/GAMESFX/OI_ORDER.AUD: OI_ORDER.AUD
^Content/d2k/v2/GAMESFX/G_SCONF1.AUD: G_SCONF1.AUD
^Content/d2k/v2/GAMESFX/G_SCONF2.AUD: G_SCONF2.AUD
^Content/d2k/v2/GAMESFX/G_SCONF3.AUD: G_SCONF3.AUD
^Content/d2k/v2/GAMESFX/G_SSEL1.AUD: G_SSEL1.AUD
^Content/d2k/v2/GAMESFX/G_SSEL2.AUD: G_SSEL2.AUD
^Content/d2k/v2/GAMESFX/G_SSEL3.AUD: G_SSEL3.AUD
^Content/d2k/v2/GAMESFX/OI_SELL.AUD: OI_SELL.AUD
^Content/d2k/v2/GAMESFX/H_ECONF2.AUD: H_ECONF2.AUD
^Content/d2k/v2/GAMESFX/H_ECONF3.AUD: H_ECONF3.AUD
^Content/d2k/v2/GAMESFX/H_ESEL1.AUD: H_ESEL1.AUD
^Content/d2k/v2/GAMESFX/H_ESEL2.AUD: H_ESEL2.AUD
^Content/d2k/v2/GAMESFX/AI_MAP2C.AUD: AI_MAP2C.AUD
^Content/d2k/v2/GAMESFX/AI_MAP3A.AUD: AI_MAP3A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP4A.AUD: AI_MAP4A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP5A.AUD: AI_MAP5A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP6A.AUD: AI_MAP6A.AUD
^Content/d2k/v2/GAMESFX/HI_BDRDY.AUD: HI_BDRDY.AUD
^Content/d2k/v2/GAMESFX/AI_MAP8A.AUD: AI_MAP8A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP9A.AUD: AI_MAP9A.AUD
^Content/d2k/v2/GAMESFX/AI_MEND.AUD: AI_MEND.AUD
^Content/d2k/v2/GAMESFX/AI_MFAIL.AUD: AI_MFAIL.AUD
^Content/d2k/v2/GAMESFX/AI_GLOAD.AUD: AI_GLOAD.AUD
^Content/d2k/v2/GAMESFX/HI_MAP9A.AUD: HI_MAP9A.AUD
^Content/d2k/v2/GAMESFX/HI_MEND.AUD: HI_MEND.AUD
^Content/d2k/v2/GAMESFX/HI_MFAIL.AUD: HI_MFAIL.AUD
^Content/d2k/v2/GAMESFX/HI_MONEY.AUD: HI_MONEY.AUD
^Content/d2k/v2/GAMESFX/HI_MWIN.AUD: HI_MWIN.AUD
^Content/d2k/v2/GAMESFX/HI_WATTK.AUD: HI_WATTK.AUD
^Content/d2k/v2/GAMESFX/AI_MAP1A.AUD: AI_MAP1A.AUD
^Content/d2k/v2/GAMESFX/AI_MAP1B.AUD: AI_MAP1B.AUD
^Content/d2k/v2/GAMESFX/AI_MAP1C.AUD: AI_MAP1C.AUD
^Content/d2k/v2/GAMESFX/AI_MAP2A.AUD: AI_MAP2A.AUD
^Content/d2k/v2/GAMESFX/AI_ABORT.AUD: AI_ABORT.AUD
^Content/d2k/v2/GAMESFX/H_ESEL3.AUD: H_ESEL3.AUD
^Content/d2k/v2/GAMESFX/AI_SILOS.AUD: AI_SILOS.AUD
^Content/d2k/v2/GAMESFX/AI_SPORT.AUD: AI_SPORT.AUD
^Content/d2k/v2/GAMESFX/AI_TRAIN.AUD: AI_TRAIN.AUD
^Content/d2k/v2/GAMESFX/AI_ULOST.AUD: AI_ULOST.AUD
^Content/d2k/v2/GAMESFX/AI_MAP7A.AUD: AI_MAP7A.AUD
^Content/d2k/v2/GAMESFX/AI_UPGOP.AUD: AI_UPGOP.AUD
^Content/d2k/v2/GAMESFX/AI_UPGRD.AUD: AI_UPGRD.AUD
^Content/d2k/v2/GAMESFX/AI_WATTK.AUD: AI_WATTK.AUD
^Content/d2k/v2/GAMESFX/AI_WSIGN.AUD: AI_WSIGN.AUD
^Content/d2k/v2/GAMESFX/AI_MAP2B.AUD: AI_MAP2B.AUD
^Content/d2k/v2/GAMESFX/A_ICONF1.AUD: A_ICONF1.AUD
^Content/d2k/v2/GAMESFX/A_ICONF2.AUD: A_ICONF2.AUD
^Content/d2k/v2/GAMESFX/A_ICONF3.AUD: A_ICONF3.AUD
^Content/d2k/v2/GAMESFX/A_ISEL1.AUD: A_ISEL1.AUD
^Content/d2k/v2/GAMESFX/OI_CANCL.AUD: OI_CANCL.AUD
^Content/d2k/v2/GAMESFX/H_ISEL2.AUD: H_ISEL2.AUD
^Content/d2k/v2/GAMESFX/H_ISEL3.AUD: H_ISEL3.AUD
^Content/d2k/v2/GAMESFX/H_VCONF1.AUD: H_VCONF1.AUD
^Content/d2k/v2/GAMESFX/H_VCONF2.AUD: H_VCONF2.AUD
^Content/d2k/v2/GAMESFX/H_VCONF3.AUD: H_VCONF3.AUD
^Content/d2k/v2/GAMESFX/OI_TRAIN.AUD: OI_TRAIN.AUD
^Content/d2k/v2/GAMESFX/HI_ORDER.AUD: HI_ORDER.AUD
^Content/d2k/v2/GAMESFX/OI_WSIGN.AUD: OI_WSIGN.AUD
^Content/d2k/v2/GAMESFX/OI_BLOST.AUD: OI_BLOST.AUD
^Content/d2k/v2/GAMESFX/OI_BUILD.AUD: OI_BUILD.AUD
^Content/d2k/v2/GAMESFX/AI_LAUNC.AUD: AI_LAUNC.AUD
^Content/d2k/v2/GAMESFX/A_ISEL3.AUD: A_ISEL3.AUD
^Content/d2k/v2/GAMESFX/A_VCONF2.AUD: A_VCONF2.AUD
^Content/d2k/v2/GAMESFX/OI_HOLD.AUD: OI_HOLD.AUD
^Content/d2k/v2/GAMESFX/OI_LAUNC.AUD: OI_LAUNC.AUD
^Content/d2k/v2/GAMESFX/OI_MAP1A.AUD: OI_MAP1A.AUD
^Content/d2k/v2/GAMESFX/HI_LAUNC.AUD: HI_LAUNC.AUD
^Content/d2k/v2/GAMESFX/H_ICONF1.AUD: H_ICONF1.AUD
^Content/d2k/v2/GAMESFX/H_ICONF2.AUD: H_ICONF2.AUD
^Content/d2k/v2/GAMESFX/H_ICONF3.AUD: H_ICONF3.AUD
^Content/d2k/v2/GAMESFX/H_ISEL1.AUD: H_ISEL1.AUD
^Content/d2k/v2/GAMESFX/A_ISEL2.AUD: A_ISEL2.AUD
^Content/d2k/v2/GAMESFX/AI_RUN.AUD: AI_RUN.AUD
^Content/d2k/v2/GAMESFX/HI_SILOS.AUD: HI_SILOS.AUD
^Content/d2k/v2/GAMESFX/HI_MAP1A.AUD: HI_MAP1A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP1B.AUD: HI_MAP1B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP1C.AUD: HI_MAP1C.AUD
^Content/d2k/v2/GAMESFX/HI_MAP2A.AUD: HI_MAP2A.AUD
^Content/d2k/v2/GAMESFX/HI_MAP2B.AUD: HI_MAP2B.AUD
^Content/d2k/v2/GAMESFX/HI_MAP2C.AUD: HI_MAP2C.AUD
^Content/d2k/v2/GAMESFX/HI_MAP3A.AUD: HI_MAP3A.AUD
^Content/d2k/v2/GAMESFX/O_ISEL3.AUD: O_ISEL3.AUD
^Content/d2k/v2/GAMESFX/O_SCONF1.AUD: O_SCONF1.AUD
^Content/d2k/v2/GAMESFX/OI_2MIN.AUD: OI_2MIN.AUD
^Content/d2k/v2/GAMESFX/OI_3MIN.AUD: OI_3MIN.AUD
^Content/d2k/v2/GAMESFX/OI_4MIN.AUD: OI_4MIN.AUD
^Content/d2k/v2/GAMESFX/OI_5MIN.AUD: OI_5MIN.AUD
^Content/d2k/v2/GAMESFX/OI_ABORT.AUD: OI_ABORT.AUD
^Content/d2k/v2/GAMESFX/OI_ATACK.AUD: OI_ATACK.AUD
^Content/d2k/v2/GAMESFX/OI_BDRDY.AUD: OI_BDRDY.AUD
^Content/d2k/v2/GAMESFX/HI_SELL.AUD: HI_SELL.AUD
^Content/d2k/v2/GAMESFX/OI_DPLOY.AUD: OI_DPLOY.AUD
^Content/d2k/v2/GAMESFX/AI_PLACE.AUD: AI_PLACE.AUD
^Content/d2k/v2/GAMESFX/OI_GANEW.AUD: OI_GANEW.AUD
^Content/d2k/v2/GAMESFX/OI_GLOAD.AUD: OI_GLOAD.AUD
^Content/d2k/v2/GAMESFX/AI_MWIN.AUD: AI_MWIN.AUD
^Content/d2k/v2/GAMESFX/AI_NEWOP.AUD: AI_NEWOP.AUD
^Content/d2k/v2/GAMESFX/AI_NROOM.AUD: AI_NROOM.AUD
^Content/d2k/v2/GAMESFX/AI_ORDER.AUD: AI_ORDER.AUD
^Content/d2k/v2/GAMESFX/AI_UNRDY.AUD: AI_UNRDY.AUD
^Content/d2k/v2/SOUND.RS: SOUND.RS

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,230 @@
aftermath: Aftermath Expansion Disc (English)
IDFiles:
README.TXT: 9902fb74c019df1b76ff5634e68f0371d790b5e0
SETUP/INSTALL/PATCH.RTP: 5bce93f834f9322ddaa7233242e5b6c7fea0bf17
Install:
extract-raw: SETUP/INSTALL/PATCH.RTP
^Content/ra/v2/expand/expand2.mix:
Offset: 4712984
Length: 469922
^Content/ra/v2/expand/hires1.mix:
Offset: 5182981
Length: 90264
^Content/ra/v2/expand/lores1.mix:
Offset: 5273320
Length: 57076
extract-raw: MAIN.MIX
^Content/ra/v2/expand/await.aud:
Offset: 158698809
Length: 2972788
^Content/ra/v2/expand/bog.aud:
Offset: 244351833
Length: 2386955
^Content/ra/v2/expand/float_v2.aud:
Offset: 246738788
Length: 3090115
^Content/ra/v2/expand/gloom.aud:
Offset: 249828903
Length: 2662851
^Content/ra/v2/expand/grndwire.aud:
Offset: 252491754
Length: 2573611
^Content/ra/v2/expand/rpt.aud:
Offset: 255065365
Length: 3092259
^Content/ra/v2/expand/search.aud:
Offset: 258157624
Length: 3104091
^Content/ra/v2/expand/traction.aud:
Offset: 261261715
Length: 2668003
^Content/ra/v2/expand/wastelnd.aud:
Offset: 263929718
Length: 2721563
^Content/ra/v2/expand/chrotnk1.aud:
Offset: 267714446
Length: 22900
^Content/ra/v2/expand/fixit1.aud:
Offset: 267959424
Length: 10707
^Content/ra/v2/expand/jburn1.aud:
Offset: 268105462
Length: 23091
^Content/ra/v2/expand/jchrge1.aud:
Offset: 268128553
Length: 14219
^Content/ra/v2/expand/jcrisp1.aud:
Offset: 268142772
Length: 18211
^Content/ra/v2/expand/jdance1.aud:
Offset: 268160983
Length: 14315
^Content/ra/v2/expand/jjuice1.aud:
Offset: 268175298
Length: 9699
^Content/ra/v2/expand/jjump1.aud:
Offset: 268184997
Length: 8219
^Content/ra/v2/expand/jlight1.aud:
Offset: 268193216
Length: 9875
^Content/ra/v2/expand/jpower1.aud:
Offset: 268203091
Length: 13571
^Content/ra/v2/expand/jshock1.aud:
Offset: 268216662
Length: 14771
^Content/ra/v2/expand/jyes1.aud:
Offset: 268231433
Length: 13795
^Content/ra/v2/expand/madchrg2.aud:
Offset: 268361344
Length: 19782
^Content/ra/v2/expand/madexplo.aud:
Offset: 268381126
Length: 26572
^Content/ra/v2/expand/mboss1.aud:
Offset: 268413174
Length: 20147
^Content/ra/v2/expand/mhear1.aud:
Offset: 268438509
Length: 6714
^Content/ra/v2/expand/mhotdig1.aud:
Offset: 268445223
Length: 10674
^Content/ra/v2/expand/mhowdy1.aud:
Offset: 268455897
Length: 6714
^Content/ra/v2/expand/mhuh1.aud:
Offset: 268462611
Length: 4117
^Content/ra/v2/expand/mlaff1.aud:
Offset: 268527415
Length: 24133
^Content/ra/v2/expand/mrise1.aud:
Offset: 268564948
Length: 13523
^Content/ra/v2/expand/mwrench1.aud:
Offset: 268578471
Length: 10780
^Content/ra/v2/expand/myeehaw1.aud:
Offset: 268589251
Length: 18912
^Content/ra/v2/expand/myes1.aud:
Offset: 268608163
Length: 9073
aftermath-linux: Aftermath Expansion Disc (English)
IDFiles:
readme.txt: 9902fb74c019df1b76ff5634e68f0371d790b5e0
setup/install/patch.rtp: 5bce93f834f9322ddaa7233242e5b6c7fea0bf17
Install:
extract-raw: SETUP/INSTALL/PATCH.RTP
^Content/ra/v2/expand/expand2.mix:
Offset: 4712984
Length: 469922
^Content/ra/v2/expand/hires1.mix:
Offset: 5182981
Length: 90264
^Content/ra/v2/expand/lores1.mix:
Offset: 5273320
Length: 57076
extract-raw: main.mix
^Content/ra/v2/expand/await.aud:
Offset: 158698809
Length: 2972788
^Content/ra/v2/expand/bog.aud:
Offset: 244351833
Length: 2386955
^Content/ra/v2/expand/float_v2.aud:
Offset: 246738788
Length: 3090115
^Content/ra/v2/expand/gloom.aud:
Offset: 249828903
Length: 2662851
^Content/ra/v2/expand/grndwire.aud:
Offset: 252491754
Length: 2573611
^Content/ra/v2/expand/rpt.aud:
Offset: 255065365
Length: 3092259
^Content/ra/v2/expand/search.aud:
Offset: 258157624
Length: 3104091
^Content/ra/v2/expand/traction.aud:
Offset: 261261715
Length: 2668003
^Content/ra/v2/expand/wastelnd.aud:
Offset: 263929718
Length: 2721563
^Content/ra/v2/expand/chrotnk1.aud:
Offset: 267714446
Length: 22900
^Content/ra/v2/expand/fixit1.aud:
Offset: 267959424
Length: 10707
^Content/ra/v2/expand/jburn1.aud:
Offset: 268105462
Length: 23091
^Content/ra/v2/expand/jchrge1.aud:
Offset: 268128553
Length: 14219
^Content/ra/v2/expand/jcrisp1.aud:
Offset: 268142772
Length: 18211
^Content/ra/v2/expand/jdance1.aud:
Offset: 268160983
Length: 14315
^Content/ra/v2/expand/jjuice1.aud:
Offset: 268175298
Length: 9699
^Content/ra/v2/expand/jjump1.aud:
Offset: 268184997
Length: 8219
^Content/ra/v2/expand/jlight1.aud:
Offset: 268193216
Length: 9875
^Content/ra/v2/expand/jpower1.aud:
Offset: 268203091
Length: 13571
^Content/ra/v2/expand/jshock1.aud:
Offset: 268216662
Length: 14771
^Content/ra/v2/expand/jyes1.aud:
Offset: 268231433
Length: 13795
^Content/ra/v2/expand/madchrg2.aud:
Offset: 268361344
Length: 19782
^Content/ra/v2/expand/madexplo.aud:
Offset: 268381126
Length: 26572
^Content/ra/v2/expand/mboss1.aud:
Offset: 268413174
Length: 20147
^Content/ra/v2/expand/mhear1.aud:
Offset: 268438509
Length: 6714
^Content/ra/v2/expand/mhotdig1.aud:
Offset: 268445223
Length: 10674
^Content/ra/v2/expand/mhowdy1.aud:
Offset: 268455897
Length: 6714
^Content/ra/v2/expand/mhuh1.aud:
Offset: 268462611
Length: 4117
^Content/ra/v2/expand/mlaff1.aud:
Offset: 268527415
Length: 24133
^Content/ra/v2/expand/mrise1.aud:
Offset: 268564948
Length: 13523
^Content/ra/v2/expand/mwrench1.aud:
Offset: 268578471
Length: 10780
^Content/ra/v2/expand/myeehaw1.aud:
Offset: 268589251
Length: 18912
^Content/ra/v2/expand/myes1.aud:
Offset: 268608163
Length: 9073

View File

@@ -0,0 +1,92 @@
allied: Red Alert 95 (Allied Disc, English)
IDFiles:
eahelp.GID: 13a8a4a1e7d9d6d893c38df5a39262c4689aeba5
INSTALL/REDALERT.MIX: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
Install:
extract-raw: INSTALL/REDALERT.MIX
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
extract-raw: MAIN.MIX
^Content/ra/v2/conquer.mix:
Offset: 236
Length: 2177047
^Content/ra/v2/interior.mix:
Offset: 17172192
Length: 247425
^Content/ra/v2/movies1.mix:
Offset: 17419617
Length: 369362336
^Content/ra/v2/scores.mix:
Offset: 386781953
Length: 64171360
^Content/ra/v2/snow.mix:
Offset: 450953313
Length: 1030861
^Content/ra/v2/sounds.mix:
Offset: 451984174
Length: 1006778
^Content/ra/v2/russian.mix:
Offset: 452990952
Length: 266077
^Content/ra/v2/allies.mix:
Offset: 453257029
Length: 309406
^Content/ra/v2/temperat.mix:
Offset: 453566435
Length: 1038859
allied-linux: Red Alert 95 (Allied Disc, English)
IDFiles:
eahelp.gid: 13a8a4a1e7d9d6d893c38df5a39262c4689aeba5
install/redalert.mix: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
Install:
extract-raw: install/redalert.mix
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
extract-raw: main.mix
^Content/ra/v2/conquer.mix:
Offset: 236
Length: 2177047
^Content/ra/v2/interior.mix:
Offset: 17172192
Length: 247425
^Content/ra/v2/movies1.mix:
Offset: 17419617
Length: 369362336
^Content/ra/v2/scores.mix:
Offset: 386781953
Length: 64171360
^Content/ra/v2/snow.mix:
Offset: 450953313
Length: 1030861
^Content/ra/v2/sounds.mix:
Offset: 451984174
Length: 1006778
^Content/ra/v2/russian.mix:
Offset: 452990952
Length: 266077
^Content/ra/v2/allies.mix:
Offset: 453257029
Length: 309406
^Content/ra/v2/temperat.mix:
Offset: 453566435
Length: 1038859

View File

@@ -0,0 +1,12 @@
cnc95: C&C Gold (GDI or Nod Disc, English)
IDFiles:
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
Install:
copy: .
^Content/ra/v2/cnc/desert.mix: DESERT.MIX
cnc95-linux: C&C Gold (GDI or Nod Disc, English)
IDFiles:
conquer.mix: 833e02a09aae694659eb312d3838367f681d1b30
Install:
copy: .
^Content/ra/v2/cnc/desert.mix: desert.mix

View File

@@ -0,0 +1,60 @@
counterstrike: Counterstrike Expansion Disc (English)
IDFiles:
README.TXT: 0efe8087383f0b159a9633f891fb5f53c6097cd4
SETUP/INSTALL/CSTRIKE.RTP: fae8ba82db71574f6ecd8fb4ff4026fcb65d2adc
Install:
extract-raw: MAIN.MIX
^Content/ra/v2/expand/2nd_hand.aud:
Offset: 209070947
Length: 3070092
^Content/ra/v2/expand/araziod.aud:
Offset: 212141039
Length: 2941132
^Content/ra/v2/expand/backstab.aud:
Offset: 215082171
Length: 3178252
^Content/ra/v2/expand/chaos2.aud:
Offset: 218260423
Length: 2860068
^Content/ra/v2/expand/shut_it.aud:
Offset: 221120491
Length: 2991979
^Content/ra/v2/expand/twinmix1.aud:
Offset: 224112470
Length: 2536972
^Content/ra/v2/expand/under3.aud:
Offset: 226649442
Length: 2812788
^Content/ra/v2/expand/vr2.aud:
Offset: 229462230
Length: 2920396
counterstrike-linux: Counterstrike Expansion Disc (English)
IDFiles:
readme.txt: 0efe8087383f0b159a9633f891fb5f53c6097cd4
setup/install/cstrike.rtp: fae8ba82db71574f6ecd8fb4ff4026fcb65d2adc
Install:
extract-raw: main.mix
^Content/ra/v2/expand/2nd_hand.aud:
Offset: 209070947
Length: 3070092
^Content/ra/v2/expand/araziod.aud:
Offset: 212141039
Length: 2941132
^Content/ra/v2/expand/backstab.aud:
Offset: 215082171
Length: 3178252
^Content/ra/v2/expand/chaos2.aud:
Offset: 218260423
Length: 2860068
^Content/ra/v2/expand/shut_it.aud:
Offset: 221120491
Length: 2991979
^Content/ra/v2/expand/twinmix1.aud:
Offset: 224112470
Length: 2536972
^Content/ra/v2/expand/under3.aud:
Offset: 226649442
Length: 2812788
^Content/ra/v2/expand/vr2.aud:
Offset: 229462230
Length: 2920396

View File

@@ -0,0 +1,94 @@
quickinstall: Quick Install Package
MirrorList: http://www.openra.net/packages/ra-quickinstall-mirrors.txt
Extract:
^Content/ra/v2/allies.mix: allies.mix
^Content/ra/v2/conquer.mix: conquer.mix
^Content/ra/v2/hires.mix: hires.mix
^Content/ra/v2/interior.mix: interior.mix
^Content/ra/v2/local.mix: local.mix
^Content/ra/v2/lores.mix: lores.mix
^Content/ra/v2/russian.mix: russian.mix
^Content/ra/v2/snow.mix: snow.mix
^Content/ra/v2/sounds.mix: sounds.mix
^Content/ra/v2/speech.mix: speech.mix
^Content/ra/v2/temperat.mix: temperat.mix
^Content/ra/v2/expand/chrotnk1.aud: expand/chrotnk1.aud
^Content/ra/v2/expand/expand2.mix: expand/expand2.mix
^Content/ra/v2/expand/fixit1.aud: expand/fixit1.aud
^Content/ra/v2/expand/hires1.mix: expand/hires1.mix
^Content/ra/v2/expand/jburn1.aud: expand/jburn1.aud
^Content/ra/v2/expand/jchrge1.aud: expand/jchrge1.aud
^Content/ra/v2/expand/jcrisp1.aud: expand/jcrisp1.aud
^Content/ra/v2/expand/jdance1.aud: expand/jdance1.aud
^Content/ra/v2/expand/jjuice1.aud: expand/jjuice1.aud
^Content/ra/v2/expand/jjump1.aud: expand/jjump1.aud
^Content/ra/v2/expand/jlight1.aud: expand/jlight1.aud
^Content/ra/v2/expand/jpower1.aud: expand/jpower1.aud
^Content/ra/v2/expand/jshock1.aud: expand/jshock1.aud
^Content/ra/v2/expand/jyes1.aud: expand/jyes1.aud
^Content/ra/v2/expand/lores1.mix: expand/lores1.mix
^Content/ra/v2/expand/madchrg2.aud: expand/madchrg2.aud
^Content/ra/v2/expand/madexplo.aud: expand/madexplo.aud
^Content/ra/v2/expand/mboss1.aud: expand/mboss1.aud
^Content/ra/v2/expand/mhear1.aud: expand/mhear1.aud
^Content/ra/v2/expand/mhotdig1.aud: expand/mhotdig1.aud
^Content/ra/v2/expand/mhowdy1.aud: expand/mhowdy1.aud
^Content/ra/v2/expand/mhuh1.aud: expand/mhuh1.aud
^Content/ra/v2/expand/mlaff1.aud: expand/mlaff1.aud
^Content/ra/v2/expand/mrise1.aud: expand/mrise1.aud
^Content/ra/v2/expand/mwrench1.aud: expand/mwrench1.aud
^Content/ra/v2/expand/myeehaw1.aud: expand/myeehaw1.aud
^Content/ra/v2/expand/myes1.aud: expand/myes1.aud
^Content/ra/v2/cnc/desert.mix: cnc/desert.mix
basefiles: Base Freeware Content
MirrorList: http://www.openra.net/packages/ra-base-mirrors.txt
Extract:
^Content/ra/v2/allies.mix: allies.mix
^Content/ra/v2/conquer.mix: conquer.mix
^Content/ra/v2/hires.mix: hires.mix
^Content/ra/v2/interior.mix: interior.mix
^Content/ra/v2/local.mix: local.mix
^Content/ra/v2/lores.mix: lores.mix
^Content/ra/v2/russian.mix: russian.mix
^Content/ra/v2/snow.mix: snow.mix
^Content/ra/v2/sounds.mix: sounds.mix
^Content/ra/v2/speech.mix: speech.mix
^Content/ra/v2/temperat.mix: temperat.mix
aftermath: Aftermath Expansion Files
MirrorList: http://www.openra.net/packages/ra-aftermath-mirrors.txt
Extract:
^Content/ra/v2/expand/chrotnk1.aud: expand/chrotnk1.aud
^Content/ra/v2/expand/expand2.mix: expand/expand2.mix
^Content/ra/v2/expand/fixit1.aud: expand/fixit1.aud
^Content/ra/v2/expand/hires1.mix: expand/hires1.mix
^Content/ra/v2/expand/jburn1.aud: expand/jburn1.aud
^Content/ra/v2/expand/jchrge1.aud: expand/jchrge1.aud
^Content/ra/v2/expand/jcrisp1.aud: expand/jcrisp1.aud
^Content/ra/v2/expand/jdance1.aud: expand/jdance1.aud
^Content/ra/v2/expand/jjuice1.aud: expand/jjuice1.aud
^Content/ra/v2/expand/jjump1.aud: expand/jjump1.aud
^Content/ra/v2/expand/jlight1.aud: expand/jlight1.aud
^Content/ra/v2/expand/jpower1.aud: expand/jpower1.aud
^Content/ra/v2/expand/jshock1.aud: expand/jshock1.aud
^Content/ra/v2/expand/jyes1.aud: expand/jyes1.aud
^Content/ra/v2/expand/lores1.mix: expand/lores1.mix
^Content/ra/v2/expand/madchrg2.aud: expand/madchrg2.aud
^Content/ra/v2/expand/madexplo.aud: expand/madexplo.aud
^Content/ra/v2/expand/mboss1.aud: expand/mboss1.aud
^Content/ra/v2/expand/mhear1.aud: expand/mhear1.aud
^Content/ra/v2/expand/mhotdig1.aud: expand/mhotdig1.aud
^Content/ra/v2/expand/mhowdy1.aud: expand/mhowdy1.aud
^Content/ra/v2/expand/mhuh1.aud: expand/mhuh1.aud
^Content/ra/v2/expand/mlaff1.aud: expand/mlaff1.aud
^Content/ra/v2/expand/mrise1.aud: expand/mrise1.aud
^Content/ra/v2/expand/mwrench1.aud: expand/mwrench1.aud
^Content/ra/v2/expand/myeehaw1.aud: expand/myeehaw1.aud
^Content/ra/v2/expand/myes1.aud: expand/myes1.aud
cncdesert: C&C Desert Tileset
MirrorList: http://www.openra.net/packages/ra-cncdesert-mirrors.txt
Extract:
^Content/ra/v2/cnc/desert.mix: cnc/desert.mix
music: Freeware Music
MirrorList: http://www.openra.net/packages/ra-scores-mirrors.txt
Extract:
^Content/ra/v2/scores.mix: scores.mix

View File

@@ -0,0 +1,136 @@
tfd: C&C The First Decade (English)
IDFiles:
data1.hdr: bef3a08c3fc1b1caf28ca0dbb97c1f900005930e
data1.cab: 12ad6113a6890a1b4d5651a75378c963eaf513b9
Install:
extract-iscab: data1.hdr
Volumes:
2: data2.cab
3: data3.cab
4: data4.cab
5: data5.cab
Extract:
^Content/ra/v2/main.mix: Red Alert\\MAIN.MIX
^Content/ra/v2/redalert.mix: Red Alert\\REDALERT.MIX
^Content/ra/v2/expand/hires1.mix: Red Alert\\HIRES1.MIX
^Content/ra/v2/expand/lores1.mix: Red Alert\\LORES1.MIX
^Content/ra/v2/expand/expand2.mix: Red Alert\\EXPAND2.MIX
^Content/ra/v2/cnc/desert.mix: CnC\\DESERT.MIX
extract-raw: ^Content/ra/v2/redalert.mix
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
delete: ^Content/ra/v2/redalert.mix
extract-raw: ^Content/ra/v2/main.mix
^Content/ra/v2/movies1.mix:
Offset: 417051805
Length: 404691306
^Content/ra/v2/interior.mix:
Offset: 821743111
Length: 249490
^Content/ra/v2/conquer.mix:
Offset: 840028549
Length: 2192279
^Content/ra/v2/allies.mix:
Offset: 842220828
Length: 319181
^Content/ra/v2/temperat.mix:
Offset: 842540009
Length: 1043672
^Content/ra/v2/sounds.mix:
Offset: 843583681
Length: 1385637
^Content/ra/v2/snow.mix:
Offset: 844969318
Length: 1035716
^Content/ra/v2/scores.mix:
Offset: 846005034
Length: 67742203
^Content/ra/v2/russian.mix:
Offset: 913747237
Length: 274732
^Content/ra/v2/movies2.mix:
Offset: 914022190
Length: 417051731
^Content/ra/v2/expand/chrotnk1.aud:
Offset: 843615985
Length: 22900
^Content/ra/v2/expand/fixit1.aud:
Offset: 843860963
Length: 10707
^Content/ra/v2/expand/jburn1.aud:
Offset: 844007001
Length: 23091
^Content/ra/v2/expand/jchrge1.aud:
Offset: 844030092
Length: 14219
^Content/ra/v2/expand/jcrisp1.aud:
Offset: 844044311
Length: 18211
^Content/ra/v2/expand/jdance1.aud:
Offset: 844062522
Length: 14315
^Content/ra/v2/expand/jjuice1.aud:
Offset: 844076837
Length: 9699
^Content/ra/v2/expand/jjump1.aud:
Offset: 844086536
Length: 8219
^Content/ra/v2/expand/jlight1.aud:
Offset: 844094755
Length: 9875
^Content/ra/v2/expand/jpower1.aud:
Offset: 844104630
Length: 13571
^Content/ra/v2/expand/jshock1.aud:
Offset: 844118201
Length: 14771
^Content/ra/v2/expand/jyes1.aud:
Offset: 844132972
Length: 13795
^Content/ra/v2/expand/madchrg2.aud:
Offset: 844262883
Length: 19782
^Content/ra/v2/expand/madexplo.aud:
Offset: 844282665
Length: 26572
^Content/ra/v2/expand/mboss1.aud:
Offset: 844314713
Length: 20147
^Content/ra/v2/expand/mhear1.aud:
Offset: 844340048
Length: 6714
^Content/ra/v2/expand/mhotdig1.aud:
Offset: 844346762
Length: 10674
^Content/ra/v2/expand/mhowdy1.aud:
Offset: 844357436
Length: 6714
^Content/ra/v2/expand/mhuh1.aud:
Offset: 844364150
Length: 4117
^Content/ra/v2/expand/mlaff1.aud:
Offset: 844428954
Length: 24133
^Content/ra/v2/expand/mrise1.aud:
Offset: 844466487
Length: 13523
^Content/ra/v2/expand/mwrench1.aud:
Offset: 844480010
Length: 10780
^Content/ra/v2/expand/myeehaw1.aud:
Offset: 844490790
Length: 18912
^Content/ra/v2/expand/myes1.aud:
Offset: 844509702
Length: 9073
delete: ^Content/ra/v2/main.mix

View File

@@ -0,0 +1,155 @@
ra-origin: C&C The Ultimate Collection (Origin version, English)
Type: Install
RegistryKey: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\EA Games\Command and Conquer Red Alert
RegistryValue: Install Dir
IDFiles:
RA95Launcher.exe: 22bf7a1f9f1c2498823e3216541e6012f291c2c0
REDALERT.MIX: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
Install:
copy: .
^Content/ra/v2/expand/2nd_hand.aud: 2nd_hand.aud
^Content/ra/v2/expand/araziod.aud: araziod.aud
^Content/ra/v2/expand/await.aud: await.aud
^Content/ra/v2/expand/backstab.aud: backstab.aud
^Content/ra/v2/expand/bog.aud: bog.aud
^Content/ra/v2/expand/chaos2.aud: chaos2.aud
^Content/ra/v2/expand/float_v2.aud: float_v2.aud
^Content/ra/v2/expand/gloom.aud: gloom.aud
^Content/ra/v2/expand/grndwire.aud: grndwire.aud
^Content/ra/v2/expand/rpt.aud: rpt.aud
^Content/ra/v2/expand/search.aud: search.aud
^Content/ra/v2/expand/shut_it.aud: shut_it.aud
^Content/ra/v2/expand/traction.aud: traction.aud
^Content/ra/v2/expand/twinmix1.aud: twinmix1.aud
^Content/ra/v2/expand/under3.aud: under3.aud
^Content/ra/v2/expand/vr2.aud: vr2.aud
^Content/ra/v2/expand/wastelnd.aud: wastelnd.aud
^Content/ra/v2/expand/expand2.mix: EXPAND2.MIX
^Content/ra/v2/expand/hires1.mix: HIRES1.MIX
^Content/ra/v2/expand/lores1.mix: LORES1.MIX
extract-raw: REDALERT.MIX
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
extract-raw: MAIN.MIX
^Content/ra/v2/movies1.mix:
Offset: 417051805
Length: 404691306
^Content/ra/v2/interior.mix:
Offset: 821743111
Length: 249490
^Content/ra/v2/conquer.mix:
Offset: 840028549
Length: 2192279
^Content/ra/v2/allies.mix:
Offset: 842220828
Length: 319181
^Content/ra/v2/temperat.mix:
Offset: 842540009
Length: 1043672
^Content/ra/v2/sounds.mix:
Offset: 843583681
Length: 1385637
^Content/ra/v2/snow.mix:
Offset: 844969318
Length: 1035716
^Content/ra/v2/scores.mix:
Offset: 846005034
Length: 67742203
^Content/ra/v2/russian.mix:
Offset: 913747237
Length: 274732
^Content/ra/v2/movies2.mix:
Offset: 914022190
Length: 417051731
^Content/ra/v2/expand/chrotnk1.aud:
Offset: 843615985
Length: 22900
^Content/ra/v2/expand/fixit1.aud:
Offset: 843860963
Length: 10707
^Content/ra/v2/expand/jburn1.aud:
Offset: 844007001
Length: 23091
^Content/ra/v2/expand/jchrge1.aud:
Offset: 844030092
Length: 14219
^Content/ra/v2/expand/jcrisp1.aud:
Offset: 844044311
Length: 18211
^Content/ra/v2/expand/jdance1.aud:
Offset: 844062522
Length: 14315
^Content/ra/v2/expand/jjuice1.aud:
Offset: 844076837
Length: 9699
^Content/ra/v2/expand/jjump1.aud:
Offset: 844086536
Length: 8219
^Content/ra/v2/expand/jlight1.aud:
Offset: 844094755
Length: 9875
^Content/ra/v2/expand/jpower1.aud:
Offset: 844104630
Length: 13571
^Content/ra/v2/expand/jshock1.aud:
Offset: 844118201
Length: 14771
^Content/ra/v2/expand/jyes1.aud:
Offset: 844132972
Length: 13795
^Content/ra/v2/expand/madchrg2.aud:
Offset: 844262883
Length: 19782
^Content/ra/v2/expand/madexplo.aud:
Offset: 844282665
Length: 26572
^Content/ra/v2/expand/mboss1.aud:
Offset: 844314713
Length: 20147
^Content/ra/v2/expand/mhear1.aud:
Offset: 844340048
Length: 6714
^Content/ra/v2/expand/mhotdig1.aud:
Offset: 844346762
Length: 10674
^Content/ra/v2/expand/mhowdy1.aud:
Offset: 844357436
Length: 6714
^Content/ra/v2/expand/mhuh1.aud:
Offset: 844364150
Length: 4117
^Content/ra/v2/expand/mlaff1.aud:
Offset: 844428954
Length: 24133
^Content/ra/v2/expand/mrise1.aud:
Offset: 844466487
Length: 13523
^Content/ra/v2/expand/mwrench1.aud:
Offset: 844480010
Length: 10780
^Content/ra/v2/expand/myeehaw1.aud:
Offset: 844490790
Length: 18912
^Content/ra/v2/expand/myes1.aud:
Offset: 844509702
Length: 9073
cnc-origin: Command & Conquer (Origin version, English)
Type: Install
RegistryKey: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\EA Games\CNC and The Covert Operations
RegistryValue: Install Dir
IDFiles:
CNC95Launcher.exe: 1d711adf09ac08738b2599b3092a1b448169b32a
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
Install:
copy: .
^Content/ra/v2/cnc/desert.mix: DESERT.MIX

View File

@@ -0,0 +1,92 @@
soviet: Red Alert 95 (Soviet Disc, English)
IDFiles:
automenu.apm: bb61132a492bfb37069a0139f95671da3655d916
INSTALL/REDALERT.MIX: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
Install:
extract-raw: INSTALL/REDALERT.MIX
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
extract-raw: MAIN.MIX
^Content/ra/v2/conquer.mix:
Offset: 236
Length: 2177047
^Content/ra/v2/interior.mix:
Offset: 17172192
Length: 247425
^Content/ra/v2/movies2.mix:
Offset: 17419617
Length: 415334456
^Content/ra/v2/scores.mix:
Offset: 432754073
Length: 64171360
^Content/ra/v2/snow.mix:
Offset: 496925433
Length: 1030861
^Content/ra/v2/russian.mix:
Offset: 497956294
Length: 266077
^Content/ra/v2/allies.mix:
Offset: 498222371
Length: 309406
^Content/ra/v2/sounds.mix:
Offset: 498531777
Length: 1006778
^Content/ra/v2/temperat.mix:
Offset: 499538555
Length: 1038859
soviet-linux: Red Alert 95 (Soviet Disc, English)
IDFiles:
automenu.apm: bb61132a492bfb37069a0139f95671da3655d916
install/redalert.mix: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
Install:
extract-raw: install/redalert.mix
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
extract-raw: main.mix
^Content/ra/v2/conquer.mix:
Offset: 236
Length: 2177047
^Content/ra/v2/interior.mix:
Offset: 17172192
Length: 247425
^Content/ra/v2/movies2.mix:
Offset: 17419617
Length: 415334456
^Content/ra/v2/scores.mix:
Offset: 432754073
Length: 64171360
^Content/ra/v2/snow.mix:
Offset: 496925433
Length: 1030861
^Content/ra/v2/russian.mix:
Offset: 497956294
Length: 266077
^Content/ra/v2/allies.mix:
Offset: 498222371
Length: 309406
^Content/ra/v2/sounds.mix:
Offset: 498531777
Length: 1006778
^Content/ra/v2/temperat.mix:
Offset: 499538555
Length: 1038859

View File

@@ -263,875 +263,12 @@ ModContent:
TestFiles: ^Content/ra/v2/expand/await.aud, ^Content/ra/v2/expand/bog.aud, ^Content/ra/v2/expand/float_v2.aud, ^Content/ra/v2/expand/gloom.aud, ^Content/ra/v2/expand/grndwire.aud, ^Content/ra/v2/expand/rpt.aud, ^Content/ra/v2/expand/search.aud, ^Content/ra/v2/expand/traction.aud, ^Content/ra/v2/expand/wastelnd.aud
Sources: aftermath, aftermath-linux, ra-origin
Downloads:
quickinstall: Quick Install Package
MirrorList: http://www.openra.net/packages/ra-quickinstall-mirrors.txt
Extract:
^Content/ra/v2/allies.mix: allies.mix
^Content/ra/v2/conquer.mix: conquer.mix
^Content/ra/v2/hires.mix: hires.mix
^Content/ra/v2/interior.mix: interior.mix
^Content/ra/v2/local.mix: local.mix
^Content/ra/v2/lores.mix: lores.mix
^Content/ra/v2/russian.mix: russian.mix
^Content/ra/v2/snow.mix: snow.mix
^Content/ra/v2/sounds.mix: sounds.mix
^Content/ra/v2/speech.mix: speech.mix
^Content/ra/v2/temperat.mix: temperat.mix
^Content/ra/v2/expand/chrotnk1.aud: expand/chrotnk1.aud
^Content/ra/v2/expand/expand2.mix: expand/expand2.mix
^Content/ra/v2/expand/fixit1.aud: expand/fixit1.aud
^Content/ra/v2/expand/hires1.mix: expand/hires1.mix
^Content/ra/v2/expand/jburn1.aud: expand/jburn1.aud
^Content/ra/v2/expand/jchrge1.aud: expand/jchrge1.aud
^Content/ra/v2/expand/jcrisp1.aud: expand/jcrisp1.aud
^Content/ra/v2/expand/jdance1.aud: expand/jdance1.aud
^Content/ra/v2/expand/jjuice1.aud: expand/jjuice1.aud
^Content/ra/v2/expand/jjump1.aud: expand/jjump1.aud
^Content/ra/v2/expand/jlight1.aud: expand/jlight1.aud
^Content/ra/v2/expand/jpower1.aud: expand/jpower1.aud
^Content/ra/v2/expand/jshock1.aud: expand/jshock1.aud
^Content/ra/v2/expand/jyes1.aud: expand/jyes1.aud
^Content/ra/v2/expand/lores1.mix: expand/lores1.mix
^Content/ra/v2/expand/madchrg2.aud: expand/madchrg2.aud
^Content/ra/v2/expand/madexplo.aud: expand/madexplo.aud
^Content/ra/v2/expand/mboss1.aud: expand/mboss1.aud
^Content/ra/v2/expand/mhear1.aud: expand/mhear1.aud
^Content/ra/v2/expand/mhotdig1.aud: expand/mhotdig1.aud
^Content/ra/v2/expand/mhowdy1.aud: expand/mhowdy1.aud
^Content/ra/v2/expand/mhuh1.aud: expand/mhuh1.aud
^Content/ra/v2/expand/mlaff1.aud: expand/mlaff1.aud
^Content/ra/v2/expand/mrise1.aud: expand/mrise1.aud
^Content/ra/v2/expand/mwrench1.aud: expand/mwrench1.aud
^Content/ra/v2/expand/myeehaw1.aud: expand/myeehaw1.aud
^Content/ra/v2/expand/myes1.aud: expand/myes1.aud
^Content/ra/v2/cnc/desert.mix: cnc/desert.mix
basefiles: Base Freeware Content
MirrorList: http://www.openra.net/packages/ra-base-mirrors.txt
Extract:
^Content/ra/v2/allies.mix: allies.mix
^Content/ra/v2/conquer.mix: conquer.mix
^Content/ra/v2/hires.mix: hires.mix
^Content/ra/v2/interior.mix: interior.mix
^Content/ra/v2/local.mix: local.mix
^Content/ra/v2/lores.mix: lores.mix
^Content/ra/v2/russian.mix: russian.mix
^Content/ra/v2/snow.mix: snow.mix
^Content/ra/v2/sounds.mix: sounds.mix
^Content/ra/v2/speech.mix: speech.mix
^Content/ra/v2/temperat.mix: temperat.mix
aftermath: Aftermath Expansion Files
MirrorList: http://www.openra.net/packages/ra-aftermath-mirrors.txt
Extract:
^Content/ra/v2/expand/chrotnk1.aud: expand/chrotnk1.aud
^Content/ra/v2/expand/expand2.mix: expand/expand2.mix
^Content/ra/v2/expand/fixit1.aud: expand/fixit1.aud
^Content/ra/v2/expand/hires1.mix: expand/hires1.mix
^Content/ra/v2/expand/jburn1.aud: expand/jburn1.aud
^Content/ra/v2/expand/jchrge1.aud: expand/jchrge1.aud
^Content/ra/v2/expand/jcrisp1.aud: expand/jcrisp1.aud
^Content/ra/v2/expand/jdance1.aud: expand/jdance1.aud
^Content/ra/v2/expand/jjuice1.aud: expand/jjuice1.aud
^Content/ra/v2/expand/jjump1.aud: expand/jjump1.aud
^Content/ra/v2/expand/jlight1.aud: expand/jlight1.aud
^Content/ra/v2/expand/jpower1.aud: expand/jpower1.aud
^Content/ra/v2/expand/jshock1.aud: expand/jshock1.aud
^Content/ra/v2/expand/jyes1.aud: expand/jyes1.aud
^Content/ra/v2/expand/lores1.mix: expand/lores1.mix
^Content/ra/v2/expand/madchrg2.aud: expand/madchrg2.aud
^Content/ra/v2/expand/madexplo.aud: expand/madexplo.aud
^Content/ra/v2/expand/mboss1.aud: expand/mboss1.aud
^Content/ra/v2/expand/mhear1.aud: expand/mhear1.aud
^Content/ra/v2/expand/mhotdig1.aud: expand/mhotdig1.aud
^Content/ra/v2/expand/mhowdy1.aud: expand/mhowdy1.aud
^Content/ra/v2/expand/mhuh1.aud: expand/mhuh1.aud
^Content/ra/v2/expand/mlaff1.aud: expand/mlaff1.aud
^Content/ra/v2/expand/mrise1.aud: expand/mrise1.aud
^Content/ra/v2/expand/mwrench1.aud: expand/mwrench1.aud
^Content/ra/v2/expand/myeehaw1.aud: expand/myeehaw1.aud
^Content/ra/v2/expand/myes1.aud: expand/myes1.aud
cncdesert: C&C Desert Tileset
MirrorList: http://www.openra.net/packages/ra-cncdesert-mirrors.txt
Extract:
^Content/ra/v2/cnc/desert.mix: cnc/desert.mix
music: Freeware Music
MirrorList: http://www.openra.net/packages/ra-scores-mirrors.txt
Extract:
^Content/ra/v2/scores.mix: scores.mix
ra|installer/downloads.yaml
Sources:
allied: Red Alert 95 (Allied Disc, English)
IDFiles:
eahelp.GID: 13a8a4a1e7d9d6d893c38df5a39262c4689aeba5
INSTALL/REDALERT.MIX: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
Install:
extract-raw: INSTALL/REDALERT.MIX
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
extract-raw: MAIN.MIX
^Content/ra/v2/conquer.mix:
Offset: 236
Length: 2177047
^Content/ra/v2/interior.mix:
Offset: 17172192
Length: 247425
^Content/ra/v2/movies1.mix:
Offset: 17419617
Length: 369362336
^Content/ra/v2/scores.mix:
Offset: 386781953
Length: 64171360
^Content/ra/v2/snow.mix:
Offset: 450953313
Length: 1030861
^Content/ra/v2/sounds.mix:
Offset: 451984174
Length: 1006778
^Content/ra/v2/russian.mix:
Offset: 452990952
Length: 266077
^Content/ra/v2/allies.mix:
Offset: 453257029
Length: 309406
^Content/ra/v2/temperat.mix:
Offset: 453566435
Length: 1038859
allied-linux: Red Alert 95 (Allied Disc, English)
IDFiles:
eahelp.gid: 13a8a4a1e7d9d6d893c38df5a39262c4689aeba5
install/redalert.mix: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
Install:
extract-raw: install/redalert.mix
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
extract-raw: main.mix
^Content/ra/v2/conquer.mix:
Offset: 236
Length: 2177047
^Content/ra/v2/interior.mix:
Offset: 17172192
Length: 247425
^Content/ra/v2/movies1.mix:
Offset: 17419617
Length: 369362336
^Content/ra/v2/scores.mix:
Offset: 386781953
Length: 64171360
^Content/ra/v2/snow.mix:
Offset: 450953313
Length: 1030861
^Content/ra/v2/sounds.mix:
Offset: 451984174
Length: 1006778
^Content/ra/v2/russian.mix:
Offset: 452990952
Length: 266077
^Content/ra/v2/allies.mix:
Offset: 453257029
Length: 309406
^Content/ra/v2/temperat.mix:
Offset: 453566435
Length: 1038859
soviet: Red Alert 95 (Soviet Disc, English)
IDFiles:
automenu.apm: bb61132a492bfb37069a0139f95671da3655d916
INSTALL/REDALERT.MIX: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
Install:
extract-raw: INSTALL/REDALERT.MIX
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
extract-raw: MAIN.MIX
^Content/ra/v2/conquer.mix:
Offset: 236
Length: 2177047
^Content/ra/v2/interior.mix:
Offset: 17172192
Length: 247425
^Content/ra/v2/movies2.mix:
Offset: 17419617
Length: 415334456
^Content/ra/v2/scores.mix:
Offset: 432754073
Length: 64171360
^Content/ra/v2/snow.mix:
Offset: 496925433
Length: 1030861
^Content/ra/v2/russian.mix:
Offset: 497956294
Length: 266077
^Content/ra/v2/allies.mix:
Offset: 498222371
Length: 309406
^Content/ra/v2/sounds.mix:
Offset: 498531777
Length: 1006778
^Content/ra/v2/temperat.mix:
Offset: 499538555
Length: 1038859
soviet-linux: Red Alert 95 (Soviet Disc, English)
IDFiles:
automenu.apm: bb61132a492bfb37069a0139f95671da3655d916
install/redalert.mix: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
Install:
extract-raw: install/redalert.mix
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
extract-raw: main.mix
^Content/ra/v2/conquer.mix:
Offset: 236
Length: 2177047
^Content/ra/v2/interior.mix:
Offset: 17172192
Length: 247425
^Content/ra/v2/movies2.mix:
Offset: 17419617
Length: 415334456
^Content/ra/v2/scores.mix:
Offset: 432754073
Length: 64171360
^Content/ra/v2/snow.mix:
Offset: 496925433
Length: 1030861
^Content/ra/v2/russian.mix:
Offset: 497956294
Length: 266077
^Content/ra/v2/allies.mix:
Offset: 498222371
Length: 309406
^Content/ra/v2/sounds.mix:
Offset: 498531777
Length: 1006778
^Content/ra/v2/temperat.mix:
Offset: 499538555
Length: 1038859
counterstrike: Counterstrike Expansion Disc (English)
IDFiles:
README.TXT: 0efe8087383f0b159a9633f891fb5f53c6097cd4
SETUP/INSTALL/CSTRIKE.RTP: fae8ba82db71574f6ecd8fb4ff4026fcb65d2adc
Install:
extract-raw: MAIN.MIX
^Content/ra/v2/expand/2nd_hand.aud:
Offset: 209070947
Length: 3070092
^Content/ra/v2/expand/araziod.aud:
Offset: 212141039
Length: 2941132
^Content/ra/v2/expand/backstab.aud:
Offset: 215082171
Length: 3178252
^Content/ra/v2/expand/chaos2.aud:
Offset: 218260423
Length: 2860068
^Content/ra/v2/expand/shut_it.aud:
Offset: 221120491
Length: 2991979
^Content/ra/v2/expand/twinmix1.aud:
Offset: 224112470
Length: 2536972
^Content/ra/v2/expand/under3.aud:
Offset: 226649442
Length: 2812788
^Content/ra/v2/expand/vr2.aud:
Offset: 229462230
Length: 2920396
counterstrike-linux: Counterstrike Expansion Disc (English)
IDFiles:
readme.txt: 0efe8087383f0b159a9633f891fb5f53c6097cd4
setup/install/cstrike.rtp: fae8ba82db71574f6ecd8fb4ff4026fcb65d2adc
Install:
extract-raw: main.mix
^Content/ra/v2/expand/2nd_hand.aud:
Offset: 209070947
Length: 3070092
^Content/ra/v2/expand/araziod.aud:
Offset: 212141039
Length: 2941132
^Content/ra/v2/expand/backstab.aud:
Offset: 215082171
Length: 3178252
^Content/ra/v2/expand/chaos2.aud:
Offset: 218260423
Length: 2860068
^Content/ra/v2/expand/shut_it.aud:
Offset: 221120491
Length: 2991979
^Content/ra/v2/expand/twinmix1.aud:
Offset: 224112470
Length: 2536972
^Content/ra/v2/expand/under3.aud:
Offset: 226649442
Length: 2812788
^Content/ra/v2/expand/vr2.aud:
Offset: 229462230
Length: 2920396
aftermath: Aftermath Expansion Disc (English)
IDFiles:
README.TXT: 9902fb74c019df1b76ff5634e68f0371d790b5e0
SETUP/INSTALL/PATCH.RTP: 5bce93f834f9322ddaa7233242e5b6c7fea0bf17
Install:
extract-raw: SETUP/INSTALL/PATCH.RTP
^Content/ra/v2/expand/expand2.mix:
Offset: 4712984
Length: 469922
^Content/ra/v2/expand/hires1.mix:
Offset: 5182981
Length: 90264
^Content/ra/v2/expand/lores1.mix:
Offset: 5273320
Length: 57076
extract-raw: MAIN.MIX
^Content/ra/v2/expand/await.aud:
Offset: 158698809
Length: 2972788
^Content/ra/v2/expand/bog.aud:
Offset: 244351833
Length: 2386955
^Content/ra/v2/expand/float_v2.aud:
Offset: 246738788
Length: 3090115
^Content/ra/v2/expand/gloom.aud:
Offset: 249828903
Length: 2662851
^Content/ra/v2/expand/grndwire.aud:
Offset: 252491754
Length: 2573611
^Content/ra/v2/expand/rpt.aud:
Offset: 255065365
Length: 3092259
^Content/ra/v2/expand/search.aud:
Offset: 258157624
Length: 3104091
^Content/ra/v2/expand/traction.aud:
Offset: 261261715
Length: 2668003
^Content/ra/v2/expand/wastelnd.aud:
Offset: 263929718
Length: 2721563
^Content/ra/v2/expand/chrotnk1.aud:
Offset: 267714446
Length: 22900
^Content/ra/v2/expand/fixit1.aud:
Offset: 267959424
Length: 10707
^Content/ra/v2/expand/jburn1.aud:
Offset: 268105462
Length: 23091
^Content/ra/v2/expand/jchrge1.aud:
Offset: 268128553
Length: 14219
^Content/ra/v2/expand/jcrisp1.aud:
Offset: 268142772
Length: 18211
^Content/ra/v2/expand/jdance1.aud:
Offset: 268160983
Length: 14315
^Content/ra/v2/expand/jjuice1.aud:
Offset: 268175298
Length: 9699
^Content/ra/v2/expand/jjump1.aud:
Offset: 268184997
Length: 8219
^Content/ra/v2/expand/jlight1.aud:
Offset: 268193216
Length: 9875
^Content/ra/v2/expand/jpower1.aud:
Offset: 268203091
Length: 13571
^Content/ra/v2/expand/jshock1.aud:
Offset: 268216662
Length: 14771
^Content/ra/v2/expand/jyes1.aud:
Offset: 268231433
Length: 13795
^Content/ra/v2/expand/madchrg2.aud:
Offset: 268361344
Length: 19782
^Content/ra/v2/expand/madexplo.aud:
Offset: 268381126
Length: 26572
^Content/ra/v2/expand/mboss1.aud:
Offset: 268413174
Length: 20147
^Content/ra/v2/expand/mhear1.aud:
Offset: 268438509
Length: 6714
^Content/ra/v2/expand/mhotdig1.aud:
Offset: 268445223
Length: 10674
^Content/ra/v2/expand/mhowdy1.aud:
Offset: 268455897
Length: 6714
^Content/ra/v2/expand/mhuh1.aud:
Offset: 268462611
Length: 4117
^Content/ra/v2/expand/mlaff1.aud:
Offset: 268527415
Length: 24133
^Content/ra/v2/expand/mrise1.aud:
Offset: 268564948
Length: 13523
^Content/ra/v2/expand/mwrench1.aud:
Offset: 268578471
Length: 10780
^Content/ra/v2/expand/myeehaw1.aud:
Offset: 268589251
Length: 18912
^Content/ra/v2/expand/myes1.aud:
Offset: 268608163
Length: 9073
aftermath-linux: Aftermath Expansion Disc (English)
IDFiles:
readme.txt: 9902fb74c019df1b76ff5634e68f0371d790b5e0
setup/install/patch.rtp: 5bce93f834f9322ddaa7233242e5b6c7fea0bf17
Install:
extract-raw: SETUP/INSTALL/PATCH.RTP
^Content/ra/v2/expand/expand2.mix:
Offset: 4712984
Length: 469922
^Content/ra/v2/expand/hires1.mix:
Offset: 5182981
Length: 90264
^Content/ra/v2/expand/lores1.mix:
Offset: 5273320
Length: 57076
extract-raw: main.mix
^Content/ra/v2/expand/await.aud:
Offset: 158698809
Length: 2972788
^Content/ra/v2/expand/bog.aud:
Offset: 244351833
Length: 2386955
^Content/ra/v2/expand/float_v2.aud:
Offset: 246738788
Length: 3090115
^Content/ra/v2/expand/gloom.aud:
Offset: 249828903
Length: 2662851
^Content/ra/v2/expand/grndwire.aud:
Offset: 252491754
Length: 2573611
^Content/ra/v2/expand/rpt.aud:
Offset: 255065365
Length: 3092259
^Content/ra/v2/expand/search.aud:
Offset: 258157624
Length: 3104091
^Content/ra/v2/expand/traction.aud:
Offset: 261261715
Length: 2668003
^Content/ra/v2/expand/wastelnd.aud:
Offset: 263929718
Length: 2721563
^Content/ra/v2/expand/chrotnk1.aud:
Offset: 267714446
Length: 22900
^Content/ra/v2/expand/fixit1.aud:
Offset: 267959424
Length: 10707
^Content/ra/v2/expand/jburn1.aud:
Offset: 268105462
Length: 23091
^Content/ra/v2/expand/jchrge1.aud:
Offset: 268128553
Length: 14219
^Content/ra/v2/expand/jcrisp1.aud:
Offset: 268142772
Length: 18211
^Content/ra/v2/expand/jdance1.aud:
Offset: 268160983
Length: 14315
^Content/ra/v2/expand/jjuice1.aud:
Offset: 268175298
Length: 9699
^Content/ra/v2/expand/jjump1.aud:
Offset: 268184997
Length: 8219
^Content/ra/v2/expand/jlight1.aud:
Offset: 268193216
Length: 9875
^Content/ra/v2/expand/jpower1.aud:
Offset: 268203091
Length: 13571
^Content/ra/v2/expand/jshock1.aud:
Offset: 268216662
Length: 14771
^Content/ra/v2/expand/jyes1.aud:
Offset: 268231433
Length: 13795
^Content/ra/v2/expand/madchrg2.aud:
Offset: 268361344
Length: 19782
^Content/ra/v2/expand/madexplo.aud:
Offset: 268381126
Length: 26572
^Content/ra/v2/expand/mboss1.aud:
Offset: 268413174
Length: 20147
^Content/ra/v2/expand/mhear1.aud:
Offset: 268438509
Length: 6714
^Content/ra/v2/expand/mhotdig1.aud:
Offset: 268445223
Length: 10674
^Content/ra/v2/expand/mhowdy1.aud:
Offset: 268455897
Length: 6714
^Content/ra/v2/expand/mhuh1.aud:
Offset: 268462611
Length: 4117
^Content/ra/v2/expand/mlaff1.aud:
Offset: 268527415
Length: 24133
^Content/ra/v2/expand/mrise1.aud:
Offset: 268564948
Length: 13523
^Content/ra/v2/expand/mwrench1.aud:
Offset: 268578471
Length: 10780
^Content/ra/v2/expand/myeehaw1.aud:
Offset: 268589251
Length: 18912
^Content/ra/v2/expand/myes1.aud:
Offset: 268608163
Length: 9073
tfd: C&C The First Decade (English)
IDFiles:
data1.hdr: bef3a08c3fc1b1caf28ca0dbb97c1f900005930e
data1.cab: 12ad6113a6890a1b4d5651a75378c963eaf513b9
Install:
extract-iscab: data1.hdr
Volumes:
2: data2.cab
3: data3.cab
4: data4.cab
5: data5.cab
Extract:
^Content/ra/v2/main.mix: Red Alert\\MAIN.MIX
^Content/ra/v2/redalert.mix: Red Alert\\REDALERT.MIX
^Content/ra/v2/expand/hires1.mix: Red Alert\\HIRES1.MIX
^Content/ra/v2/expand/lores1.mix: Red Alert\\LORES1.MIX
^Content/ra/v2/expand/expand2.mix: Red Alert\\EXPAND2.MIX
^Content/ra/v2/cnc/desert.mix: CnC\\DESERT.MIX
extract-raw: ^Content/ra/v2/redalert.mix
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
delete: ^Content/ra/v2/redalert.mix
extract-raw: ^Content/ra/v2/main.mix
^Content/ra/v2/movies1.mix:
Offset: 417051805
Length: 404691306
^Content/ra/v2/interior.mix:
Offset: 821743111
Length: 249490
^Content/ra/v2/conquer.mix:
Offset: 840028549
Length: 2192279
^Content/ra/v2/allies.mix:
Offset: 842220828
Length: 319181
^Content/ra/v2/temperat.mix:
Offset: 842540009
Length: 1043672
^Content/ra/v2/sounds.mix:
Offset: 843583681
Length: 1385637
^Content/ra/v2/snow.mix:
Offset: 844969318
Length: 1035716
^Content/ra/v2/scores.mix:
Offset: 846005034
Length: 67742203
^Content/ra/v2/russian.mix:
Offset: 913747237
Length: 274732
^Content/ra/v2/movies2.mix:
Offset: 914022190
Length: 417051731
^Content/ra/v2/expand/chrotnk1.aud:
Offset: 843615985
Length: 22900
^Content/ra/v2/expand/fixit1.aud:
Offset: 843860963
Length: 10707
^Content/ra/v2/expand/jburn1.aud:
Offset: 844007001
Length: 23091
^Content/ra/v2/expand/jchrge1.aud:
Offset: 844030092
Length: 14219
^Content/ra/v2/expand/jcrisp1.aud:
Offset: 844044311
Length: 18211
^Content/ra/v2/expand/jdance1.aud:
Offset: 844062522
Length: 14315
^Content/ra/v2/expand/jjuice1.aud:
Offset: 844076837
Length: 9699
^Content/ra/v2/expand/jjump1.aud:
Offset: 844086536
Length: 8219
^Content/ra/v2/expand/jlight1.aud:
Offset: 844094755
Length: 9875
^Content/ra/v2/expand/jpower1.aud:
Offset: 844104630
Length: 13571
^Content/ra/v2/expand/jshock1.aud:
Offset: 844118201
Length: 14771
^Content/ra/v2/expand/jyes1.aud:
Offset: 844132972
Length: 13795
^Content/ra/v2/expand/madchrg2.aud:
Offset: 844262883
Length: 19782
^Content/ra/v2/expand/madexplo.aud:
Offset: 844282665
Length: 26572
^Content/ra/v2/expand/mboss1.aud:
Offset: 844314713
Length: 20147
^Content/ra/v2/expand/mhear1.aud:
Offset: 844340048
Length: 6714
^Content/ra/v2/expand/mhotdig1.aud:
Offset: 844346762
Length: 10674
^Content/ra/v2/expand/mhowdy1.aud:
Offset: 844357436
Length: 6714
^Content/ra/v2/expand/mhuh1.aud:
Offset: 844364150
Length: 4117
^Content/ra/v2/expand/mlaff1.aud:
Offset: 844428954
Length: 24133
^Content/ra/v2/expand/mrise1.aud:
Offset: 844466487
Length: 13523
^Content/ra/v2/expand/mwrench1.aud:
Offset: 844480010
Length: 10780
^Content/ra/v2/expand/myeehaw1.aud:
Offset: 844490790
Length: 18912
^Content/ra/v2/expand/myes1.aud:
Offset: 844509702
Length: 9073
delete: ^Content/ra/v2/main.mix
ra-origin: C&C The Ultimate Collection (Origin version, English)
Type: Install
RegistryKey: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\EA Games\Command and Conquer Red Alert
RegistryValue: Install Dir
IDFiles:
RA95Launcher.exe: 22bf7a1f9f1c2498823e3216541e6012f291c2c0
REDALERT.MIX: 0e58f4b54f44f6cd29fecf8cf379d33cf2d4caef
Install:
copy: .
^Content/ra/v2/expand/2nd_hand.aud: 2nd_hand.aud
^Content/ra/v2/expand/araziod.aud: araziod.aud
^Content/ra/v2/expand/await.aud: await.aud
^Content/ra/v2/expand/backstab.aud: backstab.aud
^Content/ra/v2/expand/bog.aud: bog.aud
^Content/ra/v2/expand/chaos2.aud: chaos2.aud
^Content/ra/v2/expand/float_v2.aud: float_v2.aud
^Content/ra/v2/expand/gloom.aud: gloom.aud
^Content/ra/v2/expand/grndwire.aud: grndwire.aud
^Content/ra/v2/expand/rpt.aud: rpt.aud
^Content/ra/v2/expand/search.aud: search.aud
^Content/ra/v2/expand/shut_it.aud: shut_it.aud
^Content/ra/v2/expand/traction.aud: traction.aud
^Content/ra/v2/expand/twinmix1.aud: twinmix1.aud
^Content/ra/v2/expand/under3.aud: under3.aud
^Content/ra/v2/expand/vr2.aud: vr2.aud
^Content/ra/v2/expand/wastelnd.aud: wastelnd.aud
^Content/ra/v2/expand/expand2.mix: EXPAND2.MIX
^Content/ra/v2/expand/hires1.mix: HIRES1.MIX
^Content/ra/v2/expand/lores1.mix: LORES1.MIX
extract-raw: REDALERT.MIX
^Content/ra/v2/hires.mix:
Offset: 650612
Length: 5817417
^Content/ra/v2/local.mix:
Offset: 6468029
Length: 3829837
^Content/ra/v2/lores.mix:
Offset: 10297866
Length: 754800
^Content/ra/v2/speech.mix:
Offset: 23042864
Length: 2003464
extract-raw: MAIN.MIX
^Content/ra/v2/movies1.mix:
Offset: 417051805
Length: 404691306
^Content/ra/v2/interior.mix:
Offset: 821743111
Length: 249490
^Content/ra/v2/conquer.mix:
Offset: 840028549
Length: 2192279
^Content/ra/v2/allies.mix:
Offset: 842220828
Length: 319181
^Content/ra/v2/temperat.mix:
Offset: 842540009
Length: 1043672
^Content/ra/v2/sounds.mix:
Offset: 843583681
Length: 1385637
^Content/ra/v2/snow.mix:
Offset: 844969318
Length: 1035716
^Content/ra/v2/scores.mix:
Offset: 846005034
Length: 67742203
^Content/ra/v2/russian.mix:
Offset: 913747237
Length: 274732
^Content/ra/v2/movies2.mix:
Offset: 914022190
Length: 417051731
^Content/ra/v2/expand/chrotnk1.aud:
Offset: 843615985
Length: 22900
^Content/ra/v2/expand/fixit1.aud:
Offset: 843860963
Length: 10707
^Content/ra/v2/expand/jburn1.aud:
Offset: 844007001
Length: 23091
^Content/ra/v2/expand/jchrge1.aud:
Offset: 844030092
Length: 14219
^Content/ra/v2/expand/jcrisp1.aud:
Offset: 844044311
Length: 18211
^Content/ra/v2/expand/jdance1.aud:
Offset: 844062522
Length: 14315
^Content/ra/v2/expand/jjuice1.aud:
Offset: 844076837
Length: 9699
^Content/ra/v2/expand/jjump1.aud:
Offset: 844086536
Length: 8219
^Content/ra/v2/expand/jlight1.aud:
Offset: 844094755
Length: 9875
^Content/ra/v2/expand/jpower1.aud:
Offset: 844104630
Length: 13571
^Content/ra/v2/expand/jshock1.aud:
Offset: 844118201
Length: 14771
^Content/ra/v2/expand/jyes1.aud:
Offset: 844132972
Length: 13795
^Content/ra/v2/expand/madchrg2.aud:
Offset: 844262883
Length: 19782
^Content/ra/v2/expand/madexplo.aud:
Offset: 844282665
Length: 26572
^Content/ra/v2/expand/mboss1.aud:
Offset: 844314713
Length: 20147
^Content/ra/v2/expand/mhear1.aud:
Offset: 844340048
Length: 6714
^Content/ra/v2/expand/mhotdig1.aud:
Offset: 844346762
Length: 10674
^Content/ra/v2/expand/mhowdy1.aud:
Offset: 844357436
Length: 6714
^Content/ra/v2/expand/mhuh1.aud:
Offset: 844364150
Length: 4117
^Content/ra/v2/expand/mlaff1.aud:
Offset: 844428954
Length: 24133
^Content/ra/v2/expand/mrise1.aud:
Offset: 844466487
Length: 13523
^Content/ra/v2/expand/mwrench1.aud:
Offset: 844480010
Length: 10780
^Content/ra/v2/expand/myeehaw1.aud:
Offset: 844490790
Length: 18912
^Content/ra/v2/expand/myes1.aud:
Offset: 844509702
Length: 9073
cnc-origin: Command & Conquer (Origin version, English)
Type: Install
RegistryKey: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\EA Games\CNC and The Covert Operations
RegistryValue: Install Dir
IDFiles:
CNC95Launcher.exe: 1d711adf09ac08738b2599b3092a1b448169b32a
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
Install:
copy: .
^Content/ra/v2/cnc/desert.mix: DESERT.MIX
cnc95: C&C Gold (GDI or Nod Disc, English)
IDFiles:
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
Install:
copy: .
^Content/ra/v2/cnc/desert.mix: DESERT.MIX
cnc95-linux: C&C Gold (GDI or Nod Disc, English)
IDFiles:
conquer.mix: 833e02a09aae694659eb312d3838367f681d1b30
Install:
copy: .
^Content/ra/v2/cnc/desert.mix: desert.mix
ra|installer/aftermath.yaml
ra|installer/allies95.yaml
ra|installer/cnc95.yaml
ra|installer/counterstrike.yaml
ra|installer/firstdecade.yaml
ra|installer/origin.yaml
ra|installer/soviet95.yaml

View File

@@ -0,0 +1,21 @@
basefiles: Base Freeware Content
MirrorList: http://www.openra.net/packages/ts-mirrors.txt
Extract:
^Content/ts/cache.mix: cache.mix
^Content/ts/conquer.mix: conquer.mix
^Content/ts/isosnow.mix: isosnow.mix
^Content/ts/isotemp.mix: isotemp.mix
^Content/ts/local.mix: local.mix
^Content/ts/sidec01.mix: sidec01.mix
^Content/ts/sidec02.mix: sidec02.mix
^Content/ts/sno.mix: sno.mix
^Content/ts/snow.mix: snow.mix
^Content/ts/sounds.mix: sounds.mix
^Content/ts/speech01.mix: speech01.mix
^Content/ts/speech02.mix: speech02.mix
^Content/ts/tem.mix: tem.mix
^Content/ts/temperat.mix: temperat.mix
music: Freeware Music
MirrorList: http://www.openra.net/packages/ts-music-mirrors.txt
Extract:
^Content/ts/scores.mix: scores.mix

View File

@@ -0,0 +1,56 @@
tfd: C&C The First Decade (English)
IDFiles:
data1.hdr: bef3a08c3fc1b1caf28ca0dbb97c1f900005930e
data1.cab: 12ad6113a6890a1b4d5651a75378c963eaf513b9
Install:
extract-iscab: data1.hdr
Volumes:
6: data6.cab
7: data7.cab
Extract:
^Content/ts/scores.mix: Tiberian Sun\SUN\SCORES.MIX
^Content/ts/tibsun.mix: Tiberian Sun\SUN\TIBSUN.MIX
extract-raw: ^Content/ts/tibsun.mix
^Content/ts/cache.mix:
Offset: 300
Length: 169176
^Content/ts/conquer.mix:
Offset: 169484
Length: 5700088
^Content/ts/isosnow.mix:
Offset: 5869580
Length: 7624750
^Content/ts/isotemp.mix:
Offset: 13494332
Length: 8617646
^Content/ts/local.mix:
Offset: 22111980
Length: 18044736
^Content/ts/sidec01.mix:
Offset: 40156716
Length: 998476
^Content/ts/sidec02.mix:
Offset: 41155196
Length: 1039996
^Content/ts/snow.mix:
Offset: 56104508
Length: 2087806
^Content/ts/sno.mix:
Offset: 58192316
Length: 7826
^Content/ts/sounds.mix:
Offset: 58200156
Length: 3224136
^Content/ts/speech01.mix:
Offset: 61424300
Length: 6028236
^Content/ts/speech02.mix:
Offset: 67452540
Length: 5596628
^Content/ts/tem.mix:
Offset: 73049180
Length: 7746
^Content/ts/temperat.mix:
Offset: 73056940
Length: 2037606
delete: ^Content/ts/tibsun.mix

View File

@@ -0,0 +1,53 @@
origin: C&C The Ultimate Collection (Origin version, English)
Type: Install
RegistryKey: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\EA Games\Command and Conquer Tiberian Sun
RegistryValue: Install Dir
IDFiles:
TSLauncher.exe: 0b3e8dfd7cb701868eccef3ba3717a1ced802707
GDFBinary_en_US.dll: 4bb56a449bd0003e7ae67625d90a11ae169319d6
Install:
copy: .
^Content/ts/scores.mix: SCORES.MIX
extract-raw: TIBSUN.MIX
^Content/ts/cache.mix:
Offset: 300
Length: 169176
^Content/ts/conquer.mix:
Offset: 169484
Length: 5700088
^Content/ts/isosnow.mix:
Offset: 5869580
Length: 7624750
^Content/ts/isotemp.mix:
Offset: 13494332
Length: 8617646
^Content/ts/local.mix:
Offset: 22111980
Length: 18044736
^Content/ts/sidec01.mix:
Offset: 40156716
Length: 998476
^Content/ts/sidec02.mix:
Offset: 41155196
Length: 1039996
^Content/ts/snow.mix:
Offset: 56104508
Length: 2087806
^Content/ts/sno.mix:
Offset: 58192316
Length: 7826
^Content/ts/sounds.mix:
Offset: 58200156
Length: 3224136
^Content/ts/speech01.mix:
Offset: 61424300
Length: 6028236
^Content/ts/speech02.mix:
Offset: 67452540
Length: 5596628
^Content/ts/tem.mix:
Offset: 73049180
Length: 7746
^Content/ts/temperat.mix:
Offset: 73056940
Length: 2037606

View File

@@ -0,0 +1,100 @@
tibsun: Tiberan Sun (GDI or Nod Disc, English)
IDFiles:
README.TXT: 45745c4a0c888317ec900208a426472779c42bf7
AUTOPLAY.WAV: 2dfce5d00f98b641849c29942b651f4e98d30e30
Install:
copy: .
^Content/ts/scores.mix: SCORES.MIX
extract-raw: INSTALL/TIBSUN.MIX
^Content/ts/cache.mix:
Offset: 300
Length: 169176
^Content/ts/conquer.mix:
Offset: 169484
Length: 5700088
^Content/ts/isosnow.mix:
Offset: 5869580
Length: 7624750
^Content/ts/isotemp.mix:
Offset: 13494332
Length: 8617646
^Content/ts/local.mix:
Offset: 22111980
Length: 18044736
^Content/ts/sidec01.mix:
Offset: 40156716
Length: 998476
^Content/ts/sidec02.mix:
Offset: 41155196
Length: 1039996
^Content/ts/snow.mix:
Offset: 56104508
Length: 2087806
^Content/ts/sno.mix:
Offset: 58192316
Length: 7826
^Content/ts/sounds.mix:
Offset: 58200156
Length: 3224136
^Content/ts/speech01.mix:
Offset: 61424300
Length: 6028236
^Content/ts/speech02.mix:
Offset: 67452540
Length: 5596628
^Content/ts/tem.mix:
Offset: 73049180
Length: 7746
^Content/ts/temperat.mix:
Offset: 73056940
Length: 2037606
tibsun-linux: Tiberan Sun (GDI or Nod Disc, English)
IDFiles:
readme.txt: 45745c4a0c888317ec900208a426472779c42bf7
autoplay.wav: 2dfce5d00f98b641849c29942b651f4e98d30e30
Install:
copy: .
^Content/ts/scores.mix: scores.mix
extract-raw: install/tibsun.mix
^Content/ts/cache.mix:
Offset: 300
Length: 169176
^Content/ts/conquer.mix:
Offset: 169484
Length: 5700088
^Content/ts/isosnow.mix:
Offset: 5869580
Length: 7624750
^Content/ts/isotemp.mix:
Offset: 13494332
Length: 8617646
^Content/ts/local.mix:
Offset: 22111980
Length: 18044736
^Content/ts/sidec01.mix:
Offset: 40156716
Length: 998476
^Content/ts/sidec02.mix:
Offset: 41155196
Length: 1039996
^Content/ts/snow.mix:
Offset: 56104508
Length: 2087806
^Content/ts/sno.mix:
Offset: 58192316
Length: 7826
^Content/ts/sounds.mix:
Offset: 58200156
Length: 3224136
^Content/ts/speech01.mix:
Offset: 61424300
Length: 6028236
^Content/ts/speech02.mix:
Offset: 67452540
Length: 5596628
^Content/ts/tem.mix:
Offset: 73049180
Length: 7746
^Content/ts/temperat.mix:
Offset: 73056940
Length: 2037606

View File

@@ -273,234 +273,9 @@ ModContent:
Sources: tibsun, tibsun-linux, tfd, origin
Download: music
Downloads:
basefiles: Base Freeware Content
MirrorList: http://www.openra.net/packages/ts-mirrors.txt
Extract:
^Content/ts/cache.mix: cache.mix
^Content/ts/conquer.mix: conquer.mix
^Content/ts/isosnow.mix: isosnow.mix
^Content/ts/isotemp.mix: isotemp.mix
^Content/ts/local.mix: local.mix
^Content/ts/sidec01.mix: sidec01.mix
^Content/ts/sidec02.mix: sidec02.mix
^Content/ts/sno.mix: sno.mix
^Content/ts/snow.mix: snow.mix
^Content/ts/sounds.mix: sounds.mix
^Content/ts/speech01.mix: speech01.mix
^Content/ts/speech02.mix: speech02.mix
^Content/ts/tem.mix: tem.mix
^Content/ts/temperat.mix: temperat.mix
music: Freeware Music
MirrorList: http://www.openra.net/packages/ts-music-mirrors.txt
Extract:
^Content/ts/scores.mix: scores.mix
ts|installer/downloads.yaml
Sources:
tibsun: Tiberan Sun (GDI or Nod Disc, English)
IDFiles:
README.TXT: 45745c4a0c888317ec900208a426472779c42bf7
AUTOPLAY.WAV: 2dfce5d00f98b641849c29942b651f4e98d30e30
Install:
copy: .
^Content/ts/scores.mix: SCORES.MIX
extract-raw: INSTALL/TIBSUN.MIX
^Content/ts/cache.mix:
Offset: 300
Length: 169176
^Content/ts/conquer.mix:
Offset: 169484
Length: 5700088
^Content/ts/isosnow.mix:
Offset: 5869580
Length: 7624750
^Content/ts/isotemp.mix:
Offset: 13494332
Length: 8617646
^Content/ts/local.mix:
Offset: 22111980
Length: 18044736
^Content/ts/sidec01.mix:
Offset: 40156716
Length: 998476
^Content/ts/sidec02.mix:
Offset: 41155196
Length: 1039996
^Content/ts/snow.mix:
Offset: 56104508
Length: 2087806
^Content/ts/sno.mix:
Offset: 58192316
Length: 7826
^Content/ts/sounds.mix:
Offset: 58200156
Length: 3224136
^Content/ts/speech01.mix:
Offset: 61424300
Length: 6028236
^Content/ts/speech02.mix:
Offset: 67452540
Length: 5596628
^Content/ts/tem.mix:
Offset: 73049180
Length: 7746
^Content/ts/temperat.mix:
Offset: 73056940
Length: 2037606
tibsun-linux: Tiberan Sun (GDI or Nod Disc, English)
IDFiles:
readme.txt: 45745c4a0c888317ec900208a426472779c42bf7
autoplay.wav: 2dfce5d00f98b641849c29942b651f4e98d30e30
Install:
copy: .
^Content/ts/scores.mix: scores.mix
extract-raw: install/tibsun.mix
^Content/ts/cache.mix:
Offset: 300
Length: 169176
^Content/ts/conquer.mix:
Offset: 169484
Length: 5700088
^Content/ts/isosnow.mix:
Offset: 5869580
Length: 7624750
^Content/ts/isotemp.mix:
Offset: 13494332
Length: 8617646
^Content/ts/local.mix:
Offset: 22111980
Length: 18044736
^Content/ts/sidec01.mix:
Offset: 40156716
Length: 998476
^Content/ts/sidec02.mix:
Offset: 41155196
Length: 1039996
^Content/ts/snow.mix:
Offset: 56104508
Length: 2087806
^Content/ts/sno.mix:
Offset: 58192316
Length: 7826
^Content/ts/sounds.mix:
Offset: 58200156
Length: 3224136
^Content/ts/speech01.mix:
Offset: 61424300
Length: 6028236
^Content/ts/speech02.mix:
Offset: 67452540
Length: 5596628
^Content/ts/tem.mix:
Offset: 73049180
Length: 7746
^Content/ts/temperat.mix:
Offset: 73056940
Length: 2037606
tfd: C&C The First Decade (English)
IDFiles:
data1.hdr: bef3a08c3fc1b1caf28ca0dbb97c1f900005930e
data1.cab: 12ad6113a6890a1b4d5651a75378c963eaf513b9
Install:
extract-iscab: data1.hdr
Volumes:
6: data6.cab
7: data7.cab
Extract:
^Content/ts/scores.mix: Tiberian Sun\SUN\SCORES.MIX
^Content/ts/tibsun.mix: Tiberian Sun\SUN\TIBSUN.MIX
extract-raw: ^Content/ts/tibsun.mix
^Content/ts/cache.mix:
Offset: 300
Length: 169176
^Content/ts/conquer.mix:
Offset: 169484
Length: 5700088
^Content/ts/isosnow.mix:
Offset: 5869580
Length: 7624750
^Content/ts/isotemp.mix:
Offset: 13494332
Length: 8617646
^Content/ts/local.mix:
Offset: 22111980
Length: 18044736
^Content/ts/sidec01.mix:
Offset: 40156716
Length: 998476
^Content/ts/sidec02.mix:
Offset: 41155196
Length: 1039996
^Content/ts/snow.mix:
Offset: 56104508
Length: 2087806
^Content/ts/sno.mix:
Offset: 58192316
Length: 7826
^Content/ts/sounds.mix:
Offset: 58200156
Length: 3224136
^Content/ts/speech01.mix:
Offset: 61424300
Length: 6028236
^Content/ts/speech02.mix:
Offset: 67452540
Length: 5596628
^Content/ts/tem.mix:
Offset: 73049180
Length: 7746
^Content/ts/temperat.mix:
Offset: 73056940
Length: 2037606
delete: ^Content/ts/tibsun.mix
origin: C&C The Ultimate Collection (Origin version, English)
Type: Install
RegistryKey: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\EA Games\Command and Conquer Tiberian Sun
RegistryValue: Install Dir
IDFiles:
TSLauncher.exe: 0b3e8dfd7cb701868eccef3ba3717a1ced802707
GDFBinary_en_US.dll: 4bb56a449bd0003e7ae67625d90a11ae169319d6
Install:
copy: .
^Content/ts/scores.mix: SCORES.MIX
extract-raw: TIBSUN.MIX
^Content/ts/cache.mix:
Offset: 300
Length: 169176
^Content/ts/conquer.mix:
Offset: 169484
Length: 5700088
^Content/ts/isosnow.mix:
Offset: 5869580
Length: 7624750
^Content/ts/isotemp.mix:
Offset: 13494332
Length: 8617646
^Content/ts/local.mix:
Offset: 22111980
Length: 18044736
^Content/ts/sidec01.mix:
Offset: 40156716
Length: 998476
^Content/ts/sidec02.mix:
Offset: 41155196
Length: 1039996
^Content/ts/snow.mix:
Offset: 56104508
Length: 2087806
^Content/ts/sno.mix:
Offset: 58192316
Length: 7826
^Content/ts/sounds.mix:
Offset: 58200156
Length: 3224136
^Content/ts/speech01.mix:
Offset: 61424300
Length: 6028236
^Content/ts/speech02.mix:
Offset: 67452540
Length: 5596628
^Content/ts/tem.mix:
Offset: 73049180
Length: 7746
^Content/ts/temperat.mix:
Offset: 73056940
Length: 2037606
ts|installer/downloads.yaml
ts|installer/firstdecade.yaml
ts|installer/origin.yaml
ts|installer/tibsun.yaml