diff --git a/OpenRa.Game/FileSystem.cs b/OpenRa.FileFormats/FileSystem.cs similarity index 85% rename from OpenRa.Game/FileSystem.cs rename to OpenRa.FileFormats/FileSystem.cs index 084d15c8b3..1640289cd4 100644 --- a/OpenRa.Game/FileSystem.cs +++ b/OpenRa.FileFormats/FileSystem.cs @@ -4,9 +4,9 @@ using System.Text; using System.IO; using OpenRa.FileFormats; -namespace OpenRa.Game +namespace OpenRa.FileFormats { - class Folder : IFolder + public class Folder : IFolder { readonly string path; @@ -19,7 +19,7 @@ namespace OpenRa.Game } } - static class FileSystem + public static class FileSystem { static List mountedFolders = new List(); diff --git a/OpenRa.FileFormats/OpenRa.FileFormats.csproj b/OpenRa.FileFormats/OpenRa.FileFormats.csproj index b029448f9a..838abf985c 100644 --- a/OpenRa.FileFormats/OpenRa.FileFormats.csproj +++ b/OpenRa.FileFormats/OpenRa.FileFormats.csproj @@ -40,6 +40,7 @@ + diff --git a/OpenRa.FileFormats/TileSet.cs b/OpenRa.FileFormats/TileSet.cs index cec71e1ad0..7bb962411f 100644 --- a/OpenRa.FileFormats/TileSet.cs +++ b/OpenRa.FileFormats/TileSet.cs @@ -13,8 +13,6 @@ namespace OpenRa.FileFormats readonly Dictionary> walk = new Dictionary>(); // cjf will fix - public readonly Package MixFile; - string NextLine( StreamReader reader ) { string ret; @@ -29,12 +27,11 @@ namespace OpenRa.FileFormats return ret; } - public TileSet( Package mixFile, string suffix ) + public TileSet( string suffix ) { Walkability walkability = new Walkability(); char tileSetChar = char.ToUpperInvariant( suffix[ 1 ] ); - MixFile = mixFile; StreamReader tileIdFile = File.OpenText( "../../../tileSet.til" ); while( true ) @@ -58,9 +55,11 @@ namespace OpenRa.FileFormats if (!walk.ContainsKey((ushort)(start + i))) walk.Add((ushort)(start + i), walkability.GetWalkability(tilename)); - Stream s = mixFile.GetContent(tilename + suffix); - if (!tiles.ContainsKey((ushort)(start + i))) - tiles.Add((ushort)(start + i), new Terrain(s)); + using( Stream s = FileSystem.Open( tilename + suffix ) ) + { + if( !tiles.ContainsKey( (ushort)( start + i ) ) ) + tiles.Add( (ushort)( start + i ), new Terrain( s ) ); + } } } diff --git a/OpenRa.Game/Actor.cs b/OpenRa.Game/Actor.cs index 04a26d767a..176876f6f8 100644 --- a/OpenRa.Game/Actor.cs +++ b/OpenRa.Game/Actor.cs @@ -13,6 +13,6 @@ namespace OpenRa.Game public abstract float2 RenderLocation { get; } public int palette; public abstract Sprite[] CurrentImages { get; } - public virtual void Tick(World world, double t) { } + public virtual void Tick(Game game, double t) { } } } diff --git a/OpenRa.Game/Building.cs b/OpenRa.Game/Building.cs index ae6c21e6a1..890afd2499 100644 --- a/OpenRa.Game/Building.cs +++ b/OpenRa.Game/Building.cs @@ -18,7 +18,7 @@ namespace OpenRa.Game animation.PlayThen( "make", delegate { animation.Play( "idle" ); } ); } - public override void Tick( World world, double t ) + public override void Tick( Game game, double t ) { animation.Tick( t ); } diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs new file mode 100644 index 0000000000..77c0173ca3 --- /dev/null +++ b/OpenRa.Game/Game.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Text; +using OpenRa.FileFormats; + +namespace OpenRa.Game +{ + class Game + { + public readonly World world; + public readonly Map map; + public readonly SpriteRenderer SpriteRenderer; + public readonly TreeCache treeCache; + public readonly TerrainRenderer terrain; + public readonly Viewport viewport; + public readonly PathFinder pathFinder; + + public Game( string mapName, Renderer renderer, int2 clientSize ) + { + SheetBuilder.Initialize( renderer.Device ); + map = new Map( new IniFile( FileSystem.Open( mapName ) ) ); + FileSystem.Mount( new Package( "../../../" + map.Theater + ".mix" ) ); + + viewport = new Viewport( clientSize, new float2( map.Size ), renderer ); + + terrain = new TerrainRenderer( renderer, map, viewport ); + world = new World( renderer, viewport ); + treeCache = new TreeCache( renderer.Device, map ); + + foreach( TreeReference treeReference in map.Trees ) + world.Add( new Tree( treeReference, treeCache, map ) ); + + pathFinder = new PathFinder( map, terrain.tileSet ); + } + } +} diff --git a/OpenRa.Game/MainWindow.cs b/OpenRa.Game/MainWindow.cs index 577d994788..ba8f3a6973 100644 --- a/OpenRa.Game/MainWindow.cs +++ b/OpenRa.Game/MainWindow.cs @@ -13,15 +13,10 @@ namespace OpenRa.Game class MainWindow : Form { readonly Renderer renderer; - readonly Map map; + //readonly Map map; - Package TileMix; - - World world; - TreeCache treeCache; - TerrainRenderer terrain; - Sidebar sidebar; - Viewport viewport; + Game game; + public readonly Sidebar sidebar; static Size GetResolution(Settings settings) { @@ -44,42 +39,29 @@ namespace OpenRa.Game Visible = true; bool windowed = !settings.GetValue("fullscreeen", false); - renderer = new Renderer(this, GetResolution(settings), windowed); - map = new Map(new IniFile(FileSystem.Open(settings.GetValue("map", "scm12ea.ini")))); - viewport = new Viewport(new float2(ClientSize), new float2(map.Size), renderer); - SheetBuilder.Initialize(renderer.Device); - FileSystem.Mount(TileMix = new Package("../../../" + map.Theater + ".mix")); - - renderer.SetPalette(new HardwarePalette(renderer.Device, map)); - terrain = new TerrainRenderer(renderer, map, TileMix, viewport); - - world = new World(renderer, viewport); - treeCache = new TreeCache(renderer.Device, map, TileMix); - - foreach (TreeReference treeReference in map.Trees) - world.Add(new Tree(treeReference, treeCache, map)); + game = new Game( settings.GetValue( "map", "scm12ea.ini" ), renderer, new int2( ClientSize ) ); SequenceProvider.ForcePrecache(); - world.Add( new Mcv( new int2( 5, 5 ), 3 ) ); - world.Add( new Mcv( new int2( 7, 5 ), 2 ) ); + game.world.Add( new Mcv( new int2( 5, 5 ), 3 ) ); + game.world.Add( new Mcv( new int2( 7, 5 ), 2 ) ); Mcv mcv = new Mcv( new int2( 9, 5 ), 1 ); - world.myUnit = mcv; - world.Add( mcv ); - world.Add( new Refinery( new int2( 7, 5 ), 2 ) ); + game.world.myUnit = mcv; + game.world.Add( mcv ); + game.world.Add( new Refinery( new int2( 7, 5 ), 2 ) ); - sidebar = new Sidebar(Race.Soviet, renderer, viewport); + sidebar = new Sidebar(Race.Soviet, renderer, game.viewport); - PathFinder.Instance = new PathFinder( map, terrain.tileSet ); + renderer.SetPalette( new HardwarePalette( renderer.Device, game.map ) ); } internal void Run() { while (Created && Visible) { - viewport.DrawRegions(); + game.viewport.DrawRegions( game ); Application.DoEvents(); } } @@ -93,9 +75,8 @@ namespace OpenRa.Game if (e.Button == MouseButtons.Left) { - int x = (int)( ( e.X + viewport.Location.X ) / 24 ); - int y = (int)( ( e.Y + viewport.Location.Y ) / 24 ); - world.myUnit.Order( new int2( x, y ) ).Apply(); + float2 xy = ( 1 / 24.0f ) * ( new float2( e.Location ) + game.viewport.Location ); + game.world.myUnit.Order( new int2( (int)xy.X, (int)xy.Y ) ).Apply(); } } @@ -106,7 +87,7 @@ namespace OpenRa.Game if (e.Button == MouseButtons.Right) { float2 p = new float2(e.Location); - viewport.Scroll(lastPos - p); + game.viewport.Scroll(lastPos - p); lastPos = p; } } diff --git a/OpenRa.Game/Mcv.cs b/OpenRa.Game/Mcv.cs index 503c141caa..2fee2e3534 100644 --- a/OpenRa.Game/Mcv.cs +++ b/OpenRa.Game/Mcv.cs @@ -16,13 +16,14 @@ namespace OpenRa.Game public void AcceptDeployOrder() { - nextOrder = delegate( World world, double t ) + nextOrder = delegate( Game game, double t ) { int desiredFacing = 12; if( facing != desiredFacing ) Turn( desiredFacing ); else { + World world = game.world; world.AddFrameEndTask( delegate { world.Remove( this ); diff --git a/OpenRa.Game/OpenRa.Game.csproj b/OpenRa.Game/OpenRa.Game.csproj index e3c8a6c27c..bab7df9e86 100644 --- a/OpenRa.Game/OpenRa.Game.csproj +++ b/OpenRa.Game/OpenRa.Game.csproj @@ -43,7 +43,7 @@ - + diff --git a/OpenRa.Game/PathFinder.cs b/OpenRa.Game/PathFinder.cs index 40602b23a8..d6bb36df76 100644 --- a/OpenRa.Game/PathFinder.cs +++ b/OpenRa.Game/PathFinder.cs @@ -8,8 +8,6 @@ namespace OpenRa.Game { class PathFinder { - public static PathFinder Instance; - double[ , ] passableCost = new double[ 128, 128 ]; Map map; @@ -28,7 +26,7 @@ namespace OpenRa.Game // returns estimate to destination, 0.0 is cell is dest public delegate double DestinationFunc( int2 cell ); - public List FindUnitPath( World world, Unit unit, DestinationFunc estimator ) + public List FindUnitPath( Unit unit, DestinationFunc estimator ) { int2 startLocation = unit.Location + map.Offset; @@ -58,10 +56,7 @@ namespace OpenRa.Game cellInfo[ here.X, here.Y ].Seen = true; if( estimator( here - offset ) == 0.0 ) - { - Log.Write( "{0}, {1}", seenCount, impassableCount ); return MakePath( cellInfo, here, offset ); - } foreach( int2 d in directions ) { @@ -106,7 +101,6 @@ namespace OpenRa.Game pathNode = cellInfo[ pathNode.X, pathNode.Y ].Path; } - Log.Write( "Path Length: {0}", ret.Count ); return ret; } diff --git a/OpenRa.Game/Region.cs b/OpenRa.Game/Region.cs index 940d69d0d3..fa535b40cc 100644 --- a/OpenRa.Game/Region.cs +++ b/OpenRa.Game/Region.cs @@ -10,7 +10,7 @@ namespace OpenRa.Game { Point location; Size size; - MethodInvoker drawFunction; + Action drawFunction; static Size MakeSize(Viewport v, DockStyle d, int size) { @@ -29,7 +29,7 @@ namespace OpenRa.Game } } - public static Region Create(Viewport v, DockStyle d, int size, MethodInvoker f) + public static Region Create(Viewport v, DockStyle d, int size, Action f) { Size s = MakeSize(v, d, size); @@ -48,17 +48,17 @@ namespace OpenRa.Game } } - Region(Point location, Size size, MethodInvoker drawFunction) + Region(Point location, Size size, Action drawFunction) { this.location = location; this.size = size; this.drawFunction = drawFunction; } - public void Draw(Renderer renderer, Viewport viewport) + public void Draw(Renderer renderer, Game game) { renderer.Device.EnableScissor(location.X, location.Y, size.Width, size.Height); - drawFunction(); + drawFunction( game ); renderer.Device.DisableScissor(); } } diff --git a/OpenRa.Game/Renderer.cs b/OpenRa.Game/Renderer.cs index da7f6d0b66..035fb5802e 100644 --- a/OpenRa.Game/Renderer.cs +++ b/OpenRa.Game/Renderer.cs @@ -5,6 +5,7 @@ using System.Windows.Forms; using System.Drawing; using BluntDirectX.Direct3D; using System.IO; +using OpenRa.FileFormats; namespace OpenRa.Game { diff --git a/OpenRa.Game/SequenceProvider.cs b/OpenRa.Game/SequenceProvider.cs index 8a7c2bd732..f0dab18c30 100644 --- a/OpenRa.Game/SequenceProvider.cs +++ b/OpenRa.Game/SequenceProvider.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Text; using System.Xml; +using OpenRa.FileFormats; namespace OpenRa.Game { diff --git a/OpenRa.Game/Sidebar.cs b/OpenRa.Game/Sidebar.cs index bf6795d20c..e78a9627c5 100644 --- a/OpenRa.Game/Sidebar.cs +++ b/OpenRa.Game/Sidebar.cs @@ -55,7 +55,7 @@ namespace OpenRa.Game DrawSprite(blank, ref p); } - public void Paint() + public void Paint( Game game ) { float2 buildPos = viewport.Location + new float2(viewport.Size.X - 128, 0); float2 unitPos = viewport.Location + new float2(viewport.Size.X - 64, 0); diff --git a/OpenRa.Game/TerrainRenderer.cs b/OpenRa.Game/TerrainRenderer.cs index 7eb57e16a7..673291e8f2 100644 --- a/OpenRa.Game/TerrainRenderer.cs +++ b/OpenRa.Game/TerrainRenderer.cs @@ -20,14 +20,14 @@ namespace OpenRa.Game Renderer renderer; Map map; - public TerrainRenderer(Renderer renderer, Map map, Package tilePackage, Viewport viewport) + public TerrainRenderer(Renderer renderer, Map map, Viewport viewport) { this.renderer = renderer; this.viewport = viewport; viewport.AddRegion(Region.Create(viewport, DockStyle.Left, viewport.Width - 128, Draw)); this.map = map; - tileSet = new TileSet(tilePackage, map.TileSuffix); + tileSet = new TileSet( map.TileSuffix ); Dictionary tileMapping = new Dictionary(); @@ -58,7 +58,7 @@ namespace OpenRa.Game indexBuffer.SetData( indices.ToArray() ); } - void Draw() + void Draw( Game game ) { int indicesPerRow = map.Width * 6; int verticesPerRow = map.Width * 4; diff --git a/OpenRa.Game/TreeCache.cs b/OpenRa.Game/TreeCache.cs index ca8f3e6d30..186f9f7118 100644 --- a/OpenRa.Game/TreeCache.cs +++ b/OpenRa.Game/TreeCache.cs @@ -11,7 +11,7 @@ namespace OpenRa.Game { Dictionary trees = new Dictionary(); - public TreeCache(GraphicsDevice device, Map map, Package package) + public TreeCache(GraphicsDevice device, Map map) { foreach (TreeReference r in map.Trees) { @@ -20,7 +20,7 @@ namespace OpenRa.Game string filename = r.Image + "." + map.Theater.Substring(0, 3); - ShpReader reader = new ShpReader(package.GetContent(filename)); + ShpReader reader = new ShpReader( FileSystem.Open( filename ) ); trees.Add(r.Image, SheetBuilder.Add(reader[0].Image, reader.Size)); } } diff --git a/OpenRa.Game/Unit.cs b/OpenRa.Game/Unit.cs index 7e76187ee7..2cc6fe1aee 100644 --- a/OpenRa.Game/Unit.cs +++ b/OpenRa.Game/Unit.cs @@ -12,7 +12,7 @@ namespace OpenRa.Game protected int2 fromCell, toCell; protected int moveFraction, moveFractionTotal; - protected delegate void TickFunc( World world, double t ); + protected delegate void TickFunc( Game game, double t ); protected TickFunc currentOrder = null; protected TickFunc nextOrder = null; @@ -54,7 +54,7 @@ namespace OpenRa.Game const int Speed = 6; - public override void Tick( World world, double t ) + public override void Tick( Game game, double t ) { animation.Tick( t ); if( currentOrder == null && nextOrder != null ) @@ -64,12 +64,12 @@ namespace OpenRa.Game } if( currentOrder != null ) - currentOrder( world, t ); + currentOrder( game, t ); } public void AcceptMoveOrder( int2 destination ) { - nextOrder = delegate( World world, double t ) + nextOrder = delegate( Game game, double t ) { int speed = (int)( t * ( Speed * 100 ) ); @@ -92,7 +92,7 @@ namespace OpenRa.Game currentOrder = null; else { - List res = PathFinder.Instance.FindUnitPath( world, this, PathFinder.DefaultEstimator( destination ) ); + List res = game.pathFinder.FindUnitPath( this, PathFinder.DefaultEstimator( destination ) ); if( res.Count != 0 ) { toCell = res[ res.Count - 1 ]; diff --git a/OpenRa.Game/Viewport.cs b/OpenRa.Game/Viewport.cs index e956b02f83..996bcf217b 100644 --- a/OpenRa.Game/Viewport.cs +++ b/OpenRa.Game/Viewport.cs @@ -37,7 +37,7 @@ namespace OpenRa.Game regions.Add(r); } - public void DrawRegions() + public void DrawRegions(Game game) { float2 r1 = new float2(2, -2) / Size; float2 r2 = new float2(-1, 1); @@ -45,7 +45,7 @@ namespace OpenRa.Game renderer.BeginFrame(r1, r2, scrollPosition); foreach (Region region in regions) - region.Draw(renderer, this); + region.Draw(renderer, game); renderer.EndFrame(); } diff --git a/OpenRa.Game/World.cs b/OpenRa.Game/World.cs index 32873da0fc..f71bcfd220 100644 --- a/OpenRa.Game/World.cs +++ b/OpenRa.Game/World.cs @@ -29,7 +29,7 @@ namespace OpenRa.Game double lastTime = Environment.TickCount / 1000.0; - void Draw() + void Draw( Game game ) { double t = Environment.TickCount / 1000.0; double dt = t - lastTime; @@ -39,7 +39,7 @@ namespace OpenRa.Game foreach (Actor a in actors) { - a.Tick( this, dt ); + a.Tick( game, dt ); Sprite[] images = a.CurrentImages; float2 loc = a.RenderLocation; diff --git a/OpenRa.Network/Connection.cs b/OpenRa.Network/Connection.cs new file mode 100644 index 0000000000..a97a13e88b --- /dev/null +++ b/OpenRa.Network/Connection.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Net; +using System.Net.Sockets; + +namespace OpenRa.Network +{ + public class Connection + { + public Connection( IPEndPoint ip ) + { + throw new NotImplementedException(); + } + + + } +} diff --git a/OpenRa.Network/OpenRa.Network.csproj b/OpenRa.Network/OpenRa.Network.csproj new file mode 100644 index 0000000000..8a27460f4f --- /dev/null +++ b/OpenRa.Network/OpenRa.Network.csproj @@ -0,0 +1,47 @@ + + + Debug + AnyCPU + 8.0.50727 + 2.0 + {1F87E186-E380-4F3C-893B-3F1F7A147821} + Library + Properties + OpenRa.Network + OpenRa.Network + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + \ No newline at end of file diff --git a/OpenRa.Network/Properties/AssemblyInfo.cs b/OpenRa.Network/Properties/AssemblyInfo.cs new file mode 100644 index 0000000000..5371bd5a45 --- /dev/null +++ b/OpenRa.Network/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle( "OpenRa.Network" )] +[assembly: AssemblyDescription( "" )] +[assembly: AssemblyConfiguration( "" )] +[assembly: AssemblyCompany( "" )] +[assembly: AssemblyProduct( "OpenRa.Network" )] +[assembly: AssemblyCopyright( "Copyright © 2007" )] +[assembly: AssemblyTrademark( "" )] +[assembly: AssemblyCulture( "" )] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible( false )] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid( "ac3f68cd-38ff-42ae-9bc1-86dc1b0dbbb9" )] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Revision and Build Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion( "1.0.0.0" )] +[assembly: AssemblyFileVersion( "1.0.0.0" )] diff --git a/OpenRa.sln b/OpenRa.sln index e050956c03..d37d347571 100644 --- a/OpenRa.sln +++ b/OpenRa.sln @@ -1,6 +1,6 @@  Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 +# Visual C# Express 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MixDecrypt", "MixDecrypt\MixDecrypt.vcproj", "{6F5D4280-3D23-41FF-AE2A-511B5553E377}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRa.FileFormats", "OpenRa.FileFormats\OpenRa.FileFormats.csproj", "{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}" @@ -23,6 +23,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRa.DataStructures", "Op EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PaletteUsage", "PaletteUsage\PaletteUsage.csproj", "{54577061-E2D2-4336-90A2-A9A7106A30CD}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRa.Network", "OpenRa.Network\OpenRa.Network.csproj", "{1F87E186-E380-4F3C-893B-3F1F7A147821}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -113,6 +115,16 @@ Global {54577061-E2D2-4336-90A2-A9A7106A30CD}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {54577061-E2D2-4336-90A2-A9A7106A30CD}.Release|Mixed Platforms.Build.0 = Release|Any CPU {54577061-E2D2-4336-90A2-A9A7106A30CD}.Release|Win32.ActiveCfg = Release|Any CPU + {1F87E186-E380-4F3C-893B-3F1F7A147821}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1F87E186-E380-4F3C-893B-3F1F7A147821}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1F87E186-E380-4F3C-893B-3F1F7A147821}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {1F87E186-E380-4F3C-893B-3F1F7A147821}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {1F87E186-E380-4F3C-893B-3F1F7A147821}.Debug|Win32.ActiveCfg = Debug|Any CPU + {1F87E186-E380-4F3C-893B-3F1F7A147821}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1F87E186-E380-4F3C-893B-3F1F7A147821}.Release|Any CPU.Build.0 = Release|Any CPU + {1F87E186-E380-4F3C-893B-3F1F7A147821}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {1F87E186-E380-4F3C-893B-3F1F7A147821}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {1F87E186-E380-4F3C-893B-3F1F7A147821}.Release|Win32.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/scg13ea.ini b/scg13ea.ini new file mode 100644 index 0000000000..ab930042e8 --- /dev/null +++ b/scg13ea.ini @@ -0,0 +1,637 @@ +[FireballLauncher] +Range=3.5 + +[HBOX] +Power=-10 + +[PBOX] +Power=-10 + +[AGUN] +Power=-40 + +[FTUR] +Power=-40 +Cost=50 + +[General] +AllyReveal=no + +[Basic] +Name=Focused Blast +Intro=SPY +Brief= +Win=APCESCPE +Lose=BMAP +Action= +Player=Greece +Theme=No theme +CarryOverMoney=0 +ToCarryOver=no +ToInherit=no +TimerInherit=no +CivEvac=no +NewINIFormat=3 +CarryOverCap=0 +EndOfGame=no +NoSpyPlane=no +SkipScore=no +OneTimeOnly=no +SkipMapSelect=no +Official=yes +FillSilos=no +TruckCrate=no +Percent=73 + +[Spain] +TechLevel=13 + +[Greece] +TechLevel=13 +Allies=Turkey,GoodGuy + +[USSR] +TechLevel=13 +Allies=BadGuy + +[England] +TechLevel=13 + +[Ukraine] +TechLevel=13 + +[Germany] +TechLevel=13 + +[France] +TechLevel=13 + +[Turkey] +Credits=1 +MaxUnit=84 +MaxInfantry=84 +TechLevel=13 +IQ=1 +Allies=Greece,GoodGuy + +[GoodGuy] +TechLevel=13 +PlayerControl=yes +Allies=Greece,Turkey + +[BadGuy] +TechLevel=13 +Allies=USSR + +[Neutral] +TechLevel=13 +Allies=Special + +[Special] +TechLevel=13 + +[TeamTypes] +mrj1=2,2,7,0,0,2,25,1,MRJ:1,3,3:2,3:0,3:51 +patrl1=2,0,7,0,0,4,-1,2,E1:2,DOG:1,5,16:5,16:2,16:3,16:4,6:0 +death=9,0,7,0,0,33,-1,4,E1:5,E2:5,E4:5,GNRL:1,1,11:14 +dmnd=2,0,7,0,0,11,-1,2,E1:2,E2:1,5,16:12,16:13,16:10,16:11,6:0 +kptrl=2,0,7,0,0,10,-1,1,E1:2,9,16:9,16:7,16:3,16:2,16:5,16:4,16:7,16:10,6:0 +nptrl=2,0,7,0,0,13,-1,1,E1:2,5,16:15,16:16,16:15,16:13,6:0 +mptrl=2,0,7,0,0,12,-1,2,E1:2,DOG:1,7,16:17,16:18,16:19,16:18,16:17,16:12,6:0 +wptrl=2,0,7,0,0,22,-1,1,E1:2,5,16:21,16:20,16:11,16:22,6:0 +arnf=1,0,7,0,0,35,-1,2,E1:3,MEDI:1,1,3:36 +arnf2=1,0,7,0,0,0,-1,1,E1:3,1,3:2 + +[Trigs] +g01+=0,1,0,1,1,-1,8,0,-1,0,28,-1,-1,1,21,-1,-1,-213 +g02+=0,1,0,1,1,-1,8,0,-1,0,28,-1,-1,2,21,-1,-1,-213 +G03+=0,1,0,1,1,-1,8,0,-1,0,28,-1,-1,3,21,-1,-1,-213 +g04+=0,1,0,1,1,-1,8,0,-1,0,28,-1,-1,4,21,-1,-1,-213 +g05+=0,1,0,1,1,-1,8,0,-1,0,28,-1,-1,5,21,-1,-1,-213 +g06+=0,1,0,1,1,-1,8,0,-1,0,28,-1,-1,6,21,-1,-1,-213 +g07+=0,1,0,1,1,-1,8,0,-1,0,28,-1,-1,7,21,-1,-1,-213 +g08+=0,1,0,1,1,-1,8,0,-1,0,28,-1,-1,8,21,-1,-1,-213 +g09+=0,1,1,1,27,-1,1,27,-1,2,28,-1,-1,9,7,9,-1,-1 +g10+=0,1,1,0,27,-1,3,27,-1,4,28,-1,-1,10,0,-1,-1,-1 +g11+=0,1,1,0,27,-1,5,27,-1,6,28,-1,-1,11,0,-1,-1,-1 +g12+=0,1,1,0,27,-1,7,27,-1,8,28,-1,-1,12,0,-1,-1,-1 +g13+=0,1,1,0,27,-1,9,27,-1,10,28,-1,-1,13,0,-1,-1,-1 +g14+=0,1,1,0,27,-1,11,27,-1,12,28,-1,-1,14,0,-1,-1,-1 +win=0,1,1,0,27,-1,13,27,-1,14,1,-1,-1,-255,0,-1,-1,-1 +los1=0,1,1,0,11,-1,1,11,-1,8,2,-1,-1,-255,0,-1,-1,-1 +los2=0,1,0,0,14,-1,0,0,-1,0,2,-1,-1,-255,0,-1,-1,-1 +mrj1=0,1,2,1,13,-1,10,1,-1,1,4,0,-1,-1,17,-1,-1,2 +trp1=0,2,0,1,1,-1,8,0,-1,0,19,-1,-1,-65449,22,-1,19,-1 +det1=0,2,0,1,0,-1,0,0,-1,0,32,-1,-1,-1,11,-1,-1,32 +trp2=0,2,0,1,1,-1,8,0,-1,0,19,-1,-1,-65449,22,-1,21,-1 +det2=0,2,0,1,0,-1,0,0,-1,0,32,-1,-1,-1,11,-1,-1,32 +revl=0,2,2,0,1,-1,1,1,-1,8,17,-1,-1,32,0,-1,-1,-1 +det3=0,2,0,1,0,-1,0,0,-1,0,32,-1,-1,-1,11,-1,-1,32 +trp3=0,2,0,1,1,-1,8,0,-1,0,19,-1,-1,-65449,22,-1,23,-1 +mrj2=2,2,0,0,23,0,0,0,-1,0,4,0,-1,-1,0,-1,-1,-1 +trp4=0,2,0,1,1,-1,8,0,-1,0,22,-1,27,-1,19,-1,-1,-65449 +det4=0,2,0,1,0,-1,0,0,-1,0,32,-1,-1,-1,11,-1,-1,32 +ptr1=0,1,0,0,7,-1,0,0,-1,0,4,1,-1,-1,0,-1,-1,-1 +det5=0,2,0,1,0,-1,0,0,-1,0,32,-1,-1,-1,11,-1,-1,32 +trp5=0,2,0,1,1,-1,8,0,-1,0,19,-1,-1,-65449,22,-1,29,-1 +det6=0,2,0,1,0,-1,0,0,-1,0,32,-1,-1,-1,11,-1,-1,32 +trp6=0,2,0,1,1,-1,8,0,-1,0,22,-1,31,-1,19,-1,-1,-65449 +det7=0,2,0,1,0,-1,0,0,-1,0,32,-1,-1,-1,11,-1,-1,32 +trp7=0,2,0,1,1,-1,8,0,-1,0,19,-1,-1,-65449,22,-1,33,-1 +rvl2=0,1,2,0,1,-1,1,1,-1,8,17,-1,-1,18,0,-1,-1,-1 +det8=0,2,0,1,0,-1,0,0,-1,0,32,-1,-1,-1,12,-1,40,-1 +trp8=0,2,0,1,1,-1,8,0,-1,0,19,-1,-1,-65449,22,-1,36,-1 +doom=0,1,2,0,1,-1,1,1,-1,8,4,2,-1,-1,0,-1,-1,-1 +dmnd=0,1,2,0,1,-1,1,1,-1,8,4,3,-1,-1,0,-1,-1,-1 +halp=0,2,0,0,6,-1,0,0,-1,0,4,2,-1,-1,0,-1,-1,-1 +set0=0,1,0,1,13,-1,0,0,-1,0,27,-1,-1,450,21,-1,-1,-182 +det9=0,2,0,1,0,-1,0,0,-1,0,32,-1,-1,-1,11,-1,-1,32 +trp9=0,2,0,1,1,-1,8,0,-1,0,19,-1,-1,-65449,22,-1,42,-1 +gas1=0,2,0,1,13,-1,290,0,-1,0,8,-1,-1,26,8,-1,-1,30 +gas2=0,2,0,1,13,-1,293,0,-1,0,8,-1,-1,28,8,-1,-1,31 +gas3=0,2,0,1,13,-1,297,0,-1,0,8,-1,-1,27,8,-1,-1,29 +set1=0,2,0,1,13,-1,1,0,-1,0,4,4,-1,-1,4,5,-1,-1 +set2=0,2,0,1,13,-1,2,0,-1,0,4,6,-1,-1,4,7,-1,-1 +def+=0,1,0,1,1,-1,8,0,-1,0,3,-1,-1,-249,22,-1,56,-65451 +rvl3=0,2,2,0,1,-1,8,1,-1,1,17,-1,-1,15,0,-1,-1,-1 +renf=1,0,0,0,7,-1,0,0,-1,0,7,8,-1,-1,0,-1,-1,-1 +rvl4=0,2,2,0,1,-1,1,1,-1,8,17,-1,-1,30,0,-1,-1,-1 +los3=1,2,0,0,7,-1,0,0,-1,0,2,-1,-1,-255,0,-1,-1,-1 +txt0=0,0,0,1,13,-1,0,0,-1,0,11,-1,-1,29,11,-1,-1,30 +txt1=2,0,0,0,13,-1,50,0,-1,0,11,-1,-1,30,0,-1,-1,-1 +def2=0,1,0,1,0,-1,0,0,-1,0,19,-1,-1,-65451,11,-1,-1,31 +actv=0,7,0,1,19,-1,10,0,-1,0,17,-1,-1,15,12,-1,50,-1 +txt3=0,1,0,0,27,-1,1,27,-1,2,11,-1,-1,64,0,-1,-1,-1 +txt4=0,1,0,0,27,-1,2,0,-1,0,11,-1,-1,64,0,-1,-1,-1 +txt5=0,1,0,0,27,-1,3,0,-1,0,11,-1,-1,64,0,-1,-1,-1 +txt6=0,1,0,0,27,-1,4,0,-1,0,11,-1,-1,64,0,-1,-1,-1 +txt7=0,1,0,0,27,-1,5,0,-1,0,11,-1,-1,64,0,-1,-1,-1 +txt8=0,1,0,0,27,-1,6,0,-1,0,11,-1,-1,64,0,-1,-1,-1 +txt9=0,1,0,0,27,-1,7,0,-1,0,11,-1,-1,64,0,-1,-1,-1 +txta=0,1,0,0,27,-1,8,0,-1,0,11,-1,-1,64,0,-1,-1,-1 + +[Map] +Theater=INTERIOR +X=9 +Y=31 +Width=90 +Height=56 + +[Waypoints] +0=6921 +1=6153 +2=7317 +3=7200 +4=8480 +5=8469 +6=9877 +7=7848 +8=8749 +9=7860 +10=7868 +11=7362 +12=8006 +13=8641 +14=11581 +15=10173 +16=10023 +17=8527 +18=9935 +19=9823 +20=7629 +21=6741 +22=6210 +23=5944 +24=5928 +25=4777 +26=7872 +27=7873 +28=7874 +29=8000 +30=8001 +31=8002 +32=5653 +33=10063 +34=11106 +35=11069 +36=10813 +50=5638 +51=7174 +98=6541 +99=8001 + +[CellTriggers] +4525=g01+ +5680=trp7 +5899=trp3 +6029=revl +6157=revl +6285=revl +6721=dmnd +6722=dmnd +6723=dmnd +6800=mrj1 +6814=trp1 +6849=dmnd +6850=dmnd +6851=dmnd +6928=mrj1 +6977=rvl4 +6978=rvl4 +6979=rvl4 +7000=g07+ +7056=mrj1 +7105=rvl4 +7106=rvl4 +7107=rvl4 +7228=trp4 +7494=g06+ +7496=rvl4 +7497=rvl4 +7498=dmnd +7499=dmnd +7624=rvl4 +7625=rvl4 +7626=dmnd +7627=dmnd +7735=dmnd +7736=dmnd +7737=rvl4 +7738=rvl4 +7752=rvl4 +7753=rvl4 +7754=dmnd +7755=dmnd +7863=dmnd +7864=dmnd +7865=rvl4 +7866=rvl4 +7991=dmnd +7992=dmnd +7993=rvl4 +7994=rvl4 +8257=trp2 +8749=G03+ +8764=g05+ +9182=trp5 +9278=def+ +9294=rvl2 +9295=rvl2 +9296=rvl2 +9422=rvl2 +9423=rvl2 +9424=rvl2 +9536=rvl3 +9537=rvl3 +9538=rvl3 +9664=rvl3 +9665=rvl3 +9666=rvl3 +9676=doom +9677=doom +9678=doom +9679=doom +9680=doom +9681=doom +9695=g08+ +9800=trp8 +9803=doom +9931=doom +10007=g02+ +10023=g04+ +10032=trp9 +10033=trp6 +10059=doom + +[MapPack] +1=EAAAIIH//qsf/4L9ANWsH/dyH4C2BQAggf/+QwD/i2EBYQFKAVABUgFMAAaDSgF3AAKBiQ +2=AKhIoBZQH+TAD/gv0A1awA/n4A/4VhARYBFMpHAYF3QBLlXgAxQhE+gWMAAv+wAJQAhVQB +3=FQGOIAKBE0AIgVoAEoGNAAKBWOZfAYMPAQ1AAv+yAJIBgVbORQKBg0EAgVTkXwKFVQEOAQ +4=xAAt1eA/+SALICgVgA7oETykcEg4MBFyAIgVbkXwOBVsiHA91eAv+SALIDgVXIRQPLTgWB +5=VeRfBIFqyIcEgWz/sQCTBIFq1kUF3ZIFcEKDagGFAAKBhAAy5V4Gya4F/loA/xWaFtSBTA +6=AEgVIABIGJAArNkAEQvoVLAWYBgQACEPaHgAFgAVEBTeyPBoFkAgSBYOxfAP9kAL4GdZpw +7=AtOSAoFmRAjtjgcwAYFXAQDlXgT/agC2B4FtAJaCAwEQZIEEYAiDDAFZ0o8IgVdBAOVeAs +8=t7CYFrAGqBZ/9NAF8A/kQA/xWagv4AVJwQAhAOgVfSjwkSwoETACKBYuaPCTj4gYgABINr +9=AYYAPoGHAQKBTgo4gYnajwH+VgD/074IEpaD/gAGANaCBQEwBhEAgWnSmwoSLBEicB6DVQ +10=GMZ9CBbQRIgU4A6hsWWhjLIAiBEAEAzywIESSBTCA6gUwAPP9aAJgK0woLgVjSIQqBhwDk +11=UM4QmBvugVIhwhAiMB6BiAAYgYYLCIGHABqDigFtAAxw7FEAGPiBQAAygUbMgwyBQQAEVz +12=zNRAH/YgCyC4FgAbZQohHU0SQMzyQIMcIxANOCCzAeyVALUjLRhA1QJIFrZ14wAuVeBffo +13=CDG2gWkBuBAMEQCBAwCQFQAQBsskDfM+DoGHAjKBTkBegUMAEIFHzIMOgUJiRoNrAYLMow +14=3tjgjt4Q7PXA3PJA3/QgA2Ds9kDdFmDzLyO0xQAv9gALIOz4gPgQYm+BUAMAiBDAmogWIo +15=4oFLYASBZCnAUDKBhAgEgU0AIhAcECiDTwFTykkQ43QQzU4GMALTNgr+SgD/4XgQ0V4HgW +16=jchwWBY9h/DemEEP9gALINMdiBTwG4gVMABINPAWjIOxCBTwAGgVHUWweBaGAq0zQSGB5y +17=IIFiAEyBTchHEBASci4QfhAIgVEAIltWUALTNgv+ogD/00oRURbXVAqBZMxFBIODAYv/Tw +18=BdAMsDFBfQgU4n0DAEgWEnyhAMgUotAMWOAYFhByaBi+ixDFIgyzISGGAaNNeyEcFWAv9s +19=AKYT0zgNyyYVEoQ4mP2yDMFEA9uuEIFZICI2/MFaA4GN/18ArxGCPgHNEhYZjs2MDxuwEJ +20=gXpjEEOqgyKDI6eujZcAkxANeyEsNEBMuoFeVeA/HeDM+MEYE/1GUPF7wQClEAzUYB1VwB +21=ESqBjCNWgYko3jLWgWkAEtFcFs2iFBACgW7/WwC3Fje4FZ7BSAcVoMskF4FAzhcWOJLHRA +22=KBGMZHBtO2FstKFzjegYNADs+IFlIiUAKBgAD+/1wAthfNPgiBDswjGM8kGTOOH/7LSAPV +23=hhUQKoGAzqESgRMi3BIINYITQoGJSwDJgBnnVAr+RAD/HwDPMhkXrnIcMbTLohiBGSAG04 +24=4JwUQFgYPOoRlRABIGVWjRng//YACyEeESGTGEUBwVBIGIzHkaMQCBgwECwTAHg04BjwAC +25=gUwAJoFQDPYQKhDoy6Qay4gby5oR/2wApg3PeAOBQyPqgUZD8h2cM9hSHIGH0J0aUQDJkh +26=rPmhqBgAESgYnAZQzNehnNlhHJphv/VAC2FuFQE8kkGzjAwSAKERyBGMhDHYEgQAiBH9qJ +27=HFACgVQiGIGPBUJSPIGAAlwa+jAE0Z4S6V4H/kIA/xm2O6Yz+B3YWcDHhgPNThzLSAbXkh +28=GBVUEAFjwwEs9eGsFEBzwMERLrXAf+SAD/G6Z06s1ECxEWxUoHy1AeEc6BS8xhH8dKBxYg +29=gVQICoFVAAJRAP9wALISgHwEACCB/+IAAJdVAQ4BPwEMAYcBaQGKAUwBUAGJAW0BhgAWgQ +30=wAAoJgARAkh2YBFQETARkABHACgXEgGs1jADAqEAKFgwGCARYgBnASgWkAYIOIAVIABoFS +31=AGaBZQAC/oIA/4FUYQCBDcovAYEQIQCBVCCigVYAxIGOIAKHEwGAAWEBTgD+gVbSowCBWc +32=iHAIMUARdABnASgRTKMQH/hACiAIFXQQDTLAIw5oFYyEsBgWEB1hDI014AECrJUgAwAoOA +33=AYEAAlAOzToC/n4A/4FW2icCgWwgooFXyEsAgVUADIGNAALTogESKhAey3wCyYQAyTgDMl +34=7+fgD/gVhBAIeEAWIBUQFLAASDZAGFAAIwooFZzkUBgYNA4jAazWMEgWjUdQMTBoGAIGKD +35=TwFmYGCBVf+LAKMAgWLIowSBZET+gwwBWCAWgVTKSwQz0DAaz2QEg2gBTQACgWRi8oGABU +36=SBTQFYgWxCTDUmMGD/hACiAhYAgRnMnwOBaGEAMLSBatB1AnDO02cGgWtANDZCzxgEcl7L +37=pwaBYSVgg4wBiwYk/2QAoAAS3BPayaIEEcaBUQG2UbSCagEQAhMcgU8hzIFRyo0F0RQHgY +38=xj8tGiBRF01Z4DNWARABVm/2IAxAYRqBEAgWn/SwDFB4FVIMSBECTu0YYHgWtBANEuCIFa +39=Y2wTbv9cAKIDEmqBayGoEQAYnoGKAnqBUP9DAMEGFABU5IFXyDsJg18BXwj4gWtpXhl0zT +40=gJGEJxAMmGCf5QAP9XyoEXQQAQDDAC/0QAxAdVRMmiCINtAQ/KNwE5dMuiCIFtQzg2RtNe +41=Bf5GAP921oUhARgBIAAEgRhAEIFayMUKEiaDTAFKKxzXngAQJoFKACCBUAJCgYoABntCgY +42=dANIFhA9RQFMuYCxIGgUwAOBBkgW1kODEA/1wAogTJSgJY3jAQycQJUibbMgqBa2HazTQB +43=EeQQNIFoAEhQFM2aC1AyMGJbMNWCB/5IAP87rFzWWLYQEMnEChnwySoNg4MBZyGugYsB0B +44=WmgUoM0hRGgw4BQADMgUYABIFBQNhwEBTGFlR5WNGaDc94Av9eAMIJFWrTJA3JxAtb0nEA +45=MaZRAFzSyZQMgUAA+FEGeUZ4+N2YDXUA/1wAxAsb1nMAybQOyToNcCbLJg9wAlC+gUQABI +46=FIAASBRSAKMAYwEFLGHGzPoA4behhYG346OP9mALoIG6zTJA/JXgd1Jl8AgWIArBCwUAQQ +47=uMuSDYVDAUcBQshvEFLGG2zPlg/JLgXNSAbdXgb75A855oFPAAaBU0nYEM7LXAcRJt9SBo +48=FjANqBQwDMgUcABFD6cBBSxntYzzgDcQCBaipoEJTbXAf+ZgD/ESaBS2Hq1cIR05IRzaAR +49=PR4w3hBQEXb/hADCEf5CAP8w2hPAUwqBhAz6Exr/yACkEulWCoECxkEA/vIA/1Xk/4QAog +50=X+dAD/gVlBAP+EAKIE/nQA/8EmAhMA/1wAxA3+nAD/gVpCAP9cAMQK/pwA/9maBv7kAP9T +51=AP/4AH4V/okE/4H/gAkAACCB//7+H/+B/4DRAQAggQD+IhAAgQHIHBBQDP5rAACBAlAJgQ +52=QABIED1g8Q/1wALxCBAQCEUATVkBDSrxD+RgAAgwMEBSAEgQAQBP56AAD/cwAvEMgeEf97 +53=AAsSIXzXwxKCAgMAFwAF/kYAAHBiQAogWkN81EgTgQNzJf9JAGIQykcREAv/SQDHE/9SAK +54=wS/2EAKxLXJhQQexAaIS3/WQDFFMxNFTAPUHtwEslIFf9DAE0VzK8TYA9AddOvE1CS8EkT +55=zCsQ0qYVzJoWz9kVABIEL+GlEs9DFu7FE80PFyBBBC/IJBP/WgCaFNK/Fv5MAADNkRPOkR +56=P+XgAAzTYYcBD/WwBJEcgqFnBmIAvIGhlACmh4ypsY/2kAKxIgac4mFXCm81IZzCwY0tsZ +57=zSUZ0v0ZgQH/QgC1GBNN9HES79cW1CwXgQPKQRnOIBrRIBr2UxfSthABAnDMyaAayqsY0E +58=Ab/dsZ0hgR0TQX00UZ80gT1FscawPUFRCBAlA5YJb/QwDZGhZL49YbggQF/0gAUhnIkBxS +59=/sqQHGfjEZD/XgC+Gto9HNgjHv9HAFQb49obggIDyTUZ/0IAzhUStjPyz1oc0dcdggQFzF +60=geQDf4SBPIWR9VgzXrEVXXkBbzyR+AcQEAIIEA1AAAgQMQBYECQAUgDSABgQHMDgDPMADI +61=LwD4WwDOUQCBAQCHgQEwkcyLADArYDHMOgD+RwAAgwMEBSB9gQXlgAD+SgAAyEcBggECyt +62=EAERT+WAAAzMIAMGwBBckvAmAPECcgK/9JAEcBMNpw7hGAzE4CMQxAezAN/1UA0QDKqwLN +63=TgIQENa9Ac0YAu9mAgDRMARA2suuAd94AoEBAH3uzQL3YgPQlwDuvQFC1WHd5i4EVB6BA8 +64=jHAIIEBdUvAdt/AkBD3+IDzyUAycAE87oBUDRgPEBTyZ0EQAzKEAXRDgDMLQLlAwHJDgZi +65=4MgdBcwiA8wdBf9DAE4CzV8FIBBgZ89gBQMZ/00ARwHN3wUQECHQAAHdKQX7UwTQkQUgSO +66=lgB1Ix8N0EyhAGUOsQSEEB4U0Gy6kH68oGya4DzK4D1y8A08YHMD/qrgPZewjY4QgmBnKe +67=/1YA0QDWrgL/ZABSCdU1B/9bAL0B/mUVAIEAgA== + +[TERRAIN] +8737=BOXES02 +8735=BOXES05 +5818=BOXES01 +6072=BOXES02 +6201=BOXES03 +6200=BOXES05 +6455=BOXES06 +6458=BOXES07 +6584=BOXES08 +5815=BOXES08 +7065=BOXES05 +6933=BOXES06 +6931=BOXES03 +9675=BOXES01 +9682=BOXES02 +9683=BOXES03 +10187=BOXES04 +10316=BOXES05 +10315=BOXES06 +10060=BOXES06 +10450=BOXES07 +10323=BOXES08 +10443=BOXES09 +10321=BOXES06 +4910=BOXES01 +4782=BOXES02 +4909=BOXES03 +5273=BOXES09 +5272=BOXES08 +5267=BOXES07 +5394=BOXES06 +5529=BOXES05 +6041=BOXES05 +6040=BOXES04 +6168=BOXES03 +5778=BOXES01 +5651=BOXES02 +6314=BOXES01 +6311=BOXES02 +6185=BOXES05 +4552=BOXES09 +4677=BOXES08 +4679=BOXES07 +4808=BOXES05 +5836=BOXES08 + +[UNITS] +0=USSR,V2RL,256,10307,160,Sleep,renf +1=USSR,V2RL,256,10305,160,Sleep,renf +2=USSR,V2RL,256,10299,96,Sleep,renf +3=USSR,V2RL,256,10297,96,Sleep,renf +4=USSR,V2RL,256,10051,160,Sleep,renf +5=USSR,V2RL,256,10049,160,Sleep,renf +6=USSR,V2RL,256,10043,96,Sleep,renf +7=USSR,V2RL,256,10041,96,Sleep,renf +8=USSR,MRJ,256,7188,96,Guard,None +9=USSR,MRJ,256,7191,160,Guard,None +10=USSR,MRJ,256,7444,32,Guard,None +11=USSR,3TNK,256,5396,0,Sleep,None +12=USSR,3TNK,256,5399,0,Sleep,None +13=USSR,3TNK,256,6039,128,Sleep,None +14=USSR,3TNK,256,6036,128,Sleep,None +15=USSR,4TNK,256,5826,128,Sleep,None +16=USSR,4TNK,256,5828,128,Sleep,None +17=USSR,4TNK,256,5830,128,Sleep,None +18=USSR,4TNK,256,5832,128,Sleep,None +19=USSR,4TNK,256,5834,128,Sleep,None + +[INFANTRY] +0=Greece,E1,256,6028,3,Guard,96,None +1=Greece,E1,256,6156,0,Guard,96,None +2=Greece,E1,256,6154,2,Guard,160,None +3=Greece,E1,256,6795,4,Guard,64,None +4=Greece,E1,256,6923,2,Guard,96,None +5=Greece,E1,256,7051,2,Guard,224,None +6=GoodGuy,E6,256,6922,2,Guard,64,los3 +7=GoodGuy,E6,256,7050,2,Guard,96,los3 +8=GoodGuy,E6,256,6025,4,Guard,96,los3 +9=GoodGuy,E6,256,6281,2,Guard,64,los3 +10=BadGuy,GNRL,256,9935,0,Guard,128,halp +11=USSR,E1,256,7446,2,Area Guard,160,None +12=USSR,E1,256,7062,1,Area Guard,192,None +13=USSR,E1,256,7699,2,Area Guard,224,None +14=USSR,E1,256,8480,1,Guard,0,None +15=USSR,E1,256,8352,4,Guard,0,None +16=USSR,DOG,256,8481,3,Guard,0,None +17=USSR,E2,256,6943,1,Guard,160,None +18=USSR,E2,256,10136,3,Area Guard,0,None +19=USSR,E1,256,9493,0,Guard,160,None +20=USSR,E1,256,9494,3,Guard,96,None +21=USSR,E4,256,10024,2,Area Guard,96,None +22=USSR,E1,256,9878,1,Area Guard,96,None +23=USSR,E1,256,5654,1,Guard,160,None +24=USSR,E1,256,5781,2,Guard,192,None +25=Greece,MEDI,256,6922,1,Guard,96,None +26=USSR,CHAN,256,10009,3,Guard,192,None +27=USSR,CHAN,256,9875,0,Guard,96,None +28=BadGuy,E1,256,10191,1,Guard,0,None +29=BadGuy,E1,256,10191,0,Guard,0,None +30=BadGuy,E1,256,10191,4,Guard,0,None +31=BadGuy,E1,256,10191,3,Guard,0,None +32=BadGuy,E1,256,10191,2,Guard,0,None +33=BadGuy,E2,256,10190,3,Guard,0,None +34=BadGuy,E2,256,10190,1,Guard,0,None +35=BadGuy,E2,256,10190,0,Guard,0,None +36=BadGuy,E2,256,10190,2,Guard,0,None +37=USSR,CHAN,256,4653,0,Guard,192,None +38=USSR,CHAN,256,4646,0,Guard,96,None +39=USSR,CHAN,256,7464,4,Guard,0,None +40=USSR,CHAN,256,8877,2,Guard,0,None +41=USSR,CHAN,256,8104,4,Guard,0,None +42=USSR,CHAN,256,10022,0,Guard,96,None +43=USSR,CHAN,256,9694,1,Guard,0,None +44=USSR,CHAN,256,10336,1,Guard,0,None +45=USSR,CHAN,256,7383,3,Guard,160,None +46=USSR,CHAN,256,6612,3,Guard,96,None +47=USSR,CHAN,256,6102,4,Guard,224,None +48=BadGuy,E2,256,10190,4,Guard,0,None +49=BadGuy,E4,256,10192,2,Guard,0,None +50=BadGuy,E4,256,10192,1,Guard,0,None +51=BadGuy,E4,256,10192,3,Guard,0,None +52=BadGuy,E4,256,10192,0,Guard,0,None +53=BadGuy,E4,256,10192,4,Guard,0,None +54=USSR,CHAN,256,5816,4,Guard,96,None +55=USSR,CHAN,256,6456,0,Guard,192,None +56=Greece,MEDI,256,6282,2,Guard,64,None +57=Greece,E1,256,6283,2,Guard,128,None +58=Greece,E1,256,7052,2,Guard,96,None +59=USSR,E1,256,8864,3,Guard,32,None +60=USSR,CHAN,256,5961,4,Guard,160,None +61=USSR,CHAN,256,6082,1,Guard,96,None +62=USSR,E1,256,5945,2,Area Guard,192,None +63=USSR,E1,256,6070,4,Guard,32,None +64=USSR,E1,256,6329,2,Area Guard,96,None +65=USSR,E1,256,7469,3,Area Guard,96,None +66=USSR,E1,256,7847,0,Guard,160,None +67=USSR,E1,256,8874,2,Area Guard,96,None +68=USSR,E1,256,8616,1,Area Guard,192,None +69=USSR,E1,256,7362,2,Guard,64,None +70=USSR,E1,256,7361,4,Guard,160,None +71=USSR,E2,256,7362,4,Guard,160,None +72=USSR,DOG,256,6328,4,Area Guard,224,None +73=USSR,DOG,256,5817,0,Area Guard,160,None +74=USSR,E1,256,9822,2,Area Guard,160,None +75=USSR,E1,256,8526,2,Guard,160,None +76=USSR,E1,256,7381,2,Guard,96,None +77=USSR,E1,256,6355,1,Guard,96,None +78=USSR,E1,256,6226,2,Guard,160,None +79=USSR,E1,256,7124,3,Guard,160,None +80=USSR,DOG,256,6357,2,Area Guard,160,None +81=USSR,DOG,256,8385,1,Area Guard,160,None +82=USSR,E1,256,6183,0,Area Guard,224,None +83=USSR,E1,256,6058,1,Guard,160,None +84=USSR,E1,256,4905,0,Area Guard,160,None +85=USSR,E1,256,4903,2,Area Guard,96,None +86=USSR,E1,256,4519,0,Area Guard,96,None +87=USSR,E1,256,8508,3,Guard,32,None +88=USSR,E1,256,8637,4,Guard,96,None +89=USSR,E1,256,10301,4,Guard,128,None +90=USSR,E1,256,10046,2,Guard,32,None +91=USSR,E1,256,10170,4,Guard,96,None +92=USSR,E1,256,7494,3,Guard,160,None +93=USSR,E1,256,7495,4,Guard,96,None +94=USSR,E1,256,5573,2,Guard,128,None +95=USSR,E2,256,5574,2,Guard,160,None +96=USSR,E2,256,5574,3,Guard,96,None +97=USSR,E1,256,5575,0,Guard,64,None +98=USSR,E1,256,5699,1,Guard,96,None +99=USSR,E1,256,5706,1,Guard,160,None +100=USSR,DOG,256,5927,1,Area Guard,192,None +101=USSR,DOG,256,4805,1,Guard,96,None +102=USSR,E1,256,8655,3,Guard,0,None +103=USSR,E1,256,7001,4,Guard,160,None +104=USSR,E1,256,6211,1,Guard,96,None +105=USSR,E1,256,6210,3,Guard,160,None +106=USSR,DOG,256,9893,1,Area Guard,96,None +107=USSR,DOG,256,10429,0,Guard,32,None +108=Greece,SPY,256,6793,4,Guard,64,None +109=USSR,E1,256,7868,4,Guard,160,None +110=Greece,E1,256,6027,3,Guard,96,None +111=Greece,E1,256,6796,0,Guard,32,None +112=USSR,E1,256,5782,0,Guard,64,None +113=USSR,E1,256,8006,3,Guard,160,None +114=USSR,E1,256,8006,1,Guard,64,None +115=USSR,DOG,256,8006,2,Guard,96,None +116=USSR,E1,256,7868,1,Guard,0,None +117=USSR,E2,256,10175,2,Guard,32,None +118=USSR,E2,256,10302,4,Guard,160,None +119=USSR,E2,256,10428,4,Guard,96,None +120=USSR,E2,256,10173,3,Guard,160,None +121=USSR,E2,256,10045,0,Guard,192,None +122=USSR,E2,256,10304,0,Guard,96,None +123=Greece,E1,256,6924,0,Guard,128,None +124=Greece,E1,256,6923,4,Guard,160,None +125=Greece,E1,256,6284,0,Guard,96,None +126=USSR,DOG,256,9800,0,Guard,96,None +127=USSR,E1,256,5915,4,Sticky,160,None +128=USSR,E1,256,7978,0,Area Guard,0,None + +[STRUCTURES] +0=USSR,FTUR,256,8388,0,det4,0,0 +1=USSR,FTUR,256,7614,0,det2,0,0 +2=USSR,BRL3,256,10564,0,None,1,0 +3=USSR,BARL,256,10563,0,None,1,0 +4=USSR,BRL3,256,10552,0,None,1,0 +5=USSR,BARL,256,10553,0,None,1,0 +6=USSR,BARL,256,10554,0,None,1,0 +7=USSR,BRL3,256,7192,0,None,1,0 +8=USSR,BRL3,256,7064,0,None,1,0 +9=USSR,BARL,256,7059,0,None,1,0 +10=USSR,BRL3,256,7060,0,None,1,0 +11=USSR,BRL3,256,7448,0,None,1,0 +12=USSR,BARL,256,7575,0,None,1,0 +13=USSR,BRL3,256,7572,0,ptr1,1,0 +14=USSR,BARL,256,7443,0,None,1,0 +15=USSR,BARL,256,6935,0,None,1,0 +16=USSR,BRL3,256,6934,0,None,1,0 +17=USSR,FTUR,256,5916,0,det1,0,0 +18=USSR,FTUR,256,6161,0,det3,0,0 +19=USSR,APWR,256,4448,0,None,0,0 +20=USSR,APWR,256,4064,0,None,0,0 +21=USSR,APWR,256,4832,0,None,0,0 +22=USSR,FTUR,256,8763,0,det6,0,0 +23=USSR,FTUR,256,7239,0,det5,0,0 +24=USSR,FTUR,256,7856,0,det7,0,0 +25=USSR,FTUR,256,10320,0,det8,0,0 +26=USSR,FTUR,256,10318,0,det8,0,0 +27=USSR,APWR,256,4445,0,None,0,0 +28=USSR,APWR,256,4061,0,None,0,0 +29=USSR,APWR,256,4442,0,None,0,0 +30=USSR,BRL3,256,11070,0,None,1,0 +31=USSR,BARL,256,10942,0,None,1,0 +32=USSR,BRL3,256,10686,0,None,1,0 +33=USSR,BARL,256,10559,0,None,1,0 +34=USSR,BRL3,256,10560,0,None,1,0 +35=USSR,BRL3,256,10562,0,None,1,0 +36=USSR,FTUR,256,5062,0,det9,0,0 +37=USSR,BRL3,256,10165,0,None,1,0 +38=USSR,BARL,256,10164,0,None,1,0 +39=Turkey,FACT,256,4058,0,None,0,0 +40=Turkey,APWR,256,4055,0,None,0,0 +41=USSR,BRL3,256,10155,0,None,1,0 +42=USSR,BRL3,256,10319,0,det8,1,0 + +[Base] +Player=Turkey +Count=1 +000=FTUR,10174 + +[OverlayPack] +1=IAAAIIH//sQR/4MVFRX+fgD/gRb+Ygb//2MGRhL+8wD/gf+ADwAAIIH//iAD/4EW/t0c/4 +2=H/gA== + +[Briefing] +1=LANDCOM 16 HQS.@TOP SECRET.@TO: FIELD COMMANDER A9@@CONGRATULATIONS. +2=CAPTURING TECH CENTERS HAS REVEALED AN UNDERGROUND WEAPONS FACILITY. +3=PLACE EXPLOSIVE CHARGES ON ALL GENERATORS. RESULTING EXPOSIONS SHOULD +4=DESTROY FACILITY.@GET OUT BEFORE NERVE GAS IS USED.@@TRANSMISSION ENDS. + +[Digest] +1=8Iu6v/h1Jz1xySGedVw2HRJsUB0= +