git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1321 993157c7-ee19-0410-b2c4-bb4e9862e678

This commit is contained in:
(no author)
2007-07-23 05:25:57 +00:00
parent d4f72cb5c3
commit a6502022e9
24 changed files with 839 additions and 76 deletions

View File

@@ -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<IFolder> mountedFolders = new List<IFolder>();

View File

@@ -40,6 +40,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Blowfish.cs" />
<Compile Include="FileSystem.cs" />
<Compile Include="Format40.cs" />
<Compile Include="Format80.cs" />
<Compile Include="IniFile.cs" />

View File

@@ -13,8 +13,6 @@ namespace OpenRa.FileFormats
readonly Dictionary<ushort, Dictionary<int, int>> walk =
new Dictionary<ushort, Dictionary<int, int>>(); // 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 ) );
}
}
}

View File

@@ -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) { }
}
}

View File

@@ -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 );
}

36
OpenRa.Game/Game.cs Normal file
View File

@@ -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 );
}
}
}

View File

@@ -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;
}
}

View File

@@ -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 );

View File

@@ -43,7 +43,7 @@
<Compile Include="Actor.cs" />
<Compile Include="Animation.cs" />
<Compile Include="Building.cs" />
<Compile Include="FileSystem.cs" />
<Compile Include="Game.cs" />
<Compile Include="Harvester.cs" />
<Compile Include="Log.cs" />
<Compile Include="PathFinder.cs" />

View File

@@ -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<int2> FindUnitPath( World world, Unit unit, DestinationFunc estimator )
public List<int2> 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;
}

View File

@@ -10,7 +10,7 @@ namespace OpenRa.Game
{
Point location;
Size size;
MethodInvoker drawFunction;
Action<Game> 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<Game> 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<Game> 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();
}
}

View File

@@ -5,6 +5,7 @@ using System.Windows.Forms;
using System.Drawing;
using BluntDirectX.Direct3D;
using System.IO;
using OpenRa.FileFormats;
namespace OpenRa.Game
{

View File

@@ -2,6 +2,7 @@ using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using OpenRa.FileFormats;
namespace OpenRa.Game
{

View File

@@ -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);

View File

@@ -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<TileReference, Sprite> tileMapping =
new Dictionary<TileReference, Sprite>();
@@ -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;

View File

@@ -11,7 +11,7 @@ namespace OpenRa.Game
{
Dictionary<string, Sprite> trees = new Dictionary<string, Sprite>();
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));
}
}

View File

@@ -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<int2> res = PathFinder.Instance.FindUnitPath( world, this, PathFinder.DefaultEstimator( destination ) );
List<int2> res = game.pathFinder.FindUnitPath( this, PathFinder.DefaultEstimator( destination ) );
if( res.Count != 0 )
{
toCell = res[ res.Count - 1 ];

View File

@@ -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();
}

View File

@@ -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;

View File

@@ -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();
}
}
}

View File

@@ -0,0 +1,47 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{1F87E186-E380-4F3C-893B-3F1F7A147821}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OpenRa.Network</RootNamespace>
<AssemblyName>OpenRa.Network</AssemblyName>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Connection.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -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" )]

View File

@@ -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

637
scg13ea.ini Normal file
View File

@@ -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=<none>
Win=APCESCPE
Lose=BMAP
Action=<none>
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=