Merge pull request #7096 from ScottNZ/countries

Closes #5928
This commit is contained in:
Matthias Mailänder
2014-12-22 19:20:43 +01:00
33 changed files with 793 additions and 138 deletions

View File

@@ -18,6 +18,12 @@ namespace OpenRA.Traits
[Desc("This is the internal name for owner checks.")] [Desc("This is the internal name for owner checks.")]
public readonly string Race = null; public readonly string Race = null;
[Desc("The side that the country belongs to. For example, England belongs to the 'Allies' side.")]
public readonly string Side = null;
[Translate]
public readonly string Description = null;
public readonly bool Selectable = true; public readonly bool Selectable = true;
} }

View File

@@ -47,6 +47,7 @@ namespace OpenRA.Widgets
public readonly string TooltipContainer; public readonly string TooltipContainer;
public readonly string TooltipTemplate = "BUTTON_TOOLTIP"; public readonly string TooltipTemplate = "BUTTON_TOOLTIP";
[Translate] public string TooltipText; [Translate] public string TooltipText;
public Func<string> GetTooltipText;
// Equivalent to OnMouseUp, but without an input arg // Equivalent to OnMouseUp, but without an input arg
public Action OnClick = () => {}; public Action OnClick = () => {};
@@ -68,6 +69,7 @@ namespace OpenRA.Widgets
OnKeyPress = _ => OnClick(); OnKeyPress = _ => OnClick();
IsDisabled = () => Disabled; IsDisabled = () => Disabled;
IsHighlighted = () => Highlighted; IsHighlighted = () => Highlighted;
GetTooltipText = () => TooltipText;
tooltipContainer = Exts.Lazy(() => tooltipContainer = Exts.Lazy(() =>
Ui.Root.Get<TooltipContainerWidget>(TooltipContainer)); Ui.Root.Get<TooltipContainerWidget>(TooltipContainer));
} }
@@ -102,6 +104,7 @@ namespace OpenRA.Widgets
TooltipTemplate = other.TooltipTemplate; TooltipTemplate = other.TooltipTemplate;
TooltipText = other.TooltipText; TooltipText = other.TooltipText;
GetTooltipText = other.GetTooltipText;
TooltipContainer = other.TooltipContainer; TooltipContainer = other.TooltipContainer;
tooltipContainer = Exts.Lazy(() => tooltipContainer = Exts.Lazy(() =>
Ui.Root.Get<TooltipContainerWidget>(TooltipContainer)); Ui.Root.Get<TooltipContainerWidget>(TooltipContainer));
@@ -177,19 +180,23 @@ namespace OpenRA.Widgets
public override void MouseEntered() public override void MouseEntered()
{ {
if (TooltipContainer == null) return; if (TooltipContainer == null || GetTooltipText() == null)
return;
tooltipContainer.Value.SetTooltip(TooltipTemplate, tooltipContainer.Value.SetTooltip(TooltipTemplate,
new WidgetArgs() {{ "button", this }}); new WidgetArgs { { "button", this } });
} }
public override void MouseExited() public override void MouseExited()
{ {
if (TooltipContainer == null) return; if (TooltipContainer == null || !tooltipContainer.IsValueCreated)
return;
tooltipContainer.Value.RemoveTooltip(); tooltipContainer.Value.RemoveTooltip();
} }
public override int2 ChildOrigin { get { return RenderOrigin + public override int2 ChildOrigin { get { return RenderOrigin +
((Depressed) ? new int2(VisualHeight, VisualHeight) : new int2(0, 0)); } } (Depressed ? new int2(VisualHeight, VisualHeight) : new int2(0, 0)); } }
public override void Draw() public override void Draw()
{ {

View File

@@ -33,5 +33,17 @@ namespace OpenRA.Widgets
{ {
return FieldLoader.GetValue<T>(key, data[key]); return FieldLoader.GetValue<T>(key, data[key]);
} }
public static bool TryGet<T>(string key, out T result)
{
string s;
if (!data.TryGetValue(key, out s))
{
result = default(T);
return false;
}
result = FieldLoader.GetValue<T>(key, s);
return true;
}
} }
} }

View File

@@ -19,12 +19,19 @@ namespace OpenRA.Widgets
{ {
Widget panel; Widget panel;
MaskWidget fullscreenMask; MaskWidget fullscreenMask;
Widget panelRoot;
public string PanelRoot;
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public DropDownButtonWidget(Ruleset modRules) public DropDownButtonWidget(Ruleset modRules)
: base(modRules) { } : base(modRules) { }
protected DropDownButtonWidget(DropDownButtonWidget widget) : base(widget) { } protected DropDownButtonWidget(DropDownButtonWidget widget)
: base(widget)
{
PanelRoot = widget.PanelRoot;
}
public override void Draw() public override void Draw()
{ {
@@ -34,7 +41,7 @@ namespace OpenRA.Widgets
var image = ChromeProvider.GetImage("scrollbar", IsDisabled() ? "down_pressed" : "down_arrow"); var image = ChromeProvider.GetImage("scrollbar", IsDisabled() ? "down_pressed" : "down_arrow");
var rb = RenderBounds; var rb = RenderBounds;
var color = GetColor(); var color = GetColor();
var colordisabled = GetColorDisabled(); var colorDisabled = GetColorDisabled();
WidgetUtils.DrawRGBA( image, WidgetUtils.DrawRGBA( image,
stateOffset + new float2( rb.Right - rb.Height + 4, stateOffset + new float2( rb.Right - rb.Height + 4,
@@ -42,7 +49,7 @@ namespace OpenRA.Widgets
WidgetUtils.FillRectWithColor(new Rectangle(stateOffset.X + rb.Right - rb.Height, WidgetUtils.FillRectWithColor(new Rectangle(stateOffset.X + rb.Right - rb.Height,
stateOffset.Y + rb.Top + 3, 1, rb.Height - 6), stateOffset.Y + rb.Top + 3, 1, rb.Height - 6),
IsDisabled() ? colordisabled : color); IsDisabled() ? colorDisabled : color);
} }
public override Widget Clone() { return new DropDownButtonWidget(this); } public override Widget Clone() { return new DropDownButtonWidget(this); }
@@ -61,8 +68,8 @@ namespace OpenRA.Widgets
if (panel == null) if (panel == null)
return; return;
Ui.Root.RemoveChild(fullscreenMask); panelRoot.RemoveChild(fullscreenMask);
Ui.Root.RemoveChild(panel); panelRoot.RemoveChild(panel);
panel = fullscreenMask = null; panel = fullscreenMask = null;
} }
@@ -80,11 +87,17 @@ namespace OpenRA.Widgets
if (onCancel != null) if (onCancel != null)
fullscreenMask.OnMouseDown += _ => onCancel(); fullscreenMask.OnMouseDown += _ => onCancel();
Ui.Root.AddChild(fullscreenMask); panelRoot = PanelRoot == null ? Ui.Root : Ui.Root.Get(PanelRoot);
panelRoot.AddChild(fullscreenMask);
var oldBounds = panel.Bounds; var oldBounds = panel.Bounds;
panel.Bounds = new Rectangle(RenderOrigin.X, RenderOrigin.Y + Bounds.Height, oldBounds.Width, oldBounds.Height); panel.Bounds = new Rectangle(
Ui.Root.AddChild(panel); RenderOrigin.X - panelRoot.RenderOrigin.X,
RenderOrigin.Y + Bounds.Height - panelRoot.RenderOrigin.Y,
oldBounds.Width,
oldBounds.Height);
panelRoot.AddChild(panel);
} }
public void ShowDropDown<T>(string panelTemplate, int maxHeight, IEnumerable<T> options, Func<T, ScrollItemWidget, ScrollItemWidget> setupItem) public void ShowDropDown<T>(string panelTemplate, int maxHeight, IEnumerable<T> options, Func<T, ScrollItemWidget, ScrollItemWidget> setupItem)
@@ -116,14 +129,14 @@ namespace OpenRA.Widgets
var panel = (ScrollPanelWidget)Ui.LoadWidget(panelTemplate, null, new WidgetArgs() var panel = (ScrollPanelWidget)Ui.LoadWidget(panelTemplate, null, new WidgetArgs()
{{ "substitutions", substitutions }}); {{ "substitutions", substitutions }});
var headerTemplate = panel.Get<ScrollItemWidget>("HEADER"); var headerTemplate = panel.GetOrNull<ScrollItemWidget>("HEADER");
var itemTemplate = panel.Get<ScrollItemWidget>("TEMPLATE"); var itemTemplate = panel.Get<ScrollItemWidget>("TEMPLATE");
panel.RemoveChildren(); panel.RemoveChildren();
foreach (var kv in groups) foreach (var kv in groups)
{ {
var group = kv.Key; var group = kv.Key;
if (group.Length > 0) if (group.Length > 0 && headerTemplate != null)
{ {
var header = ScrollItemWidget.Setup(headerTemplate, () => true, () => {}); var header = ScrollItemWidget.Setup(headerTemplate, () => true, () => {});
header.Get<LabelWidget>("LABEL").GetText = () => group; header.Get<LabelWidget>("LABEL").GetText = () => group;

View File

@@ -223,6 +223,7 @@
<Compile Include="Widgets\Logic\AssetBrowserLogic.cs" /> <Compile Include="Widgets\Logic\AssetBrowserLogic.cs" />
<Compile Include="Widgets\Logic\ButtonTooltipLogic.cs" /> <Compile Include="Widgets\Logic\ButtonTooltipLogic.cs" />
<Compile Include="Widgets\Logic\ColorPickerLogic.cs" /> <Compile Include="Widgets\Logic\ColorPickerLogic.cs" />
<Compile Include="Widgets\Logic\CountryTooltipLogic.cs" />
<Compile Include="Widgets\Logic\DisconnectWatcherLogic.cs" /> <Compile Include="Widgets\Logic\DisconnectWatcherLogic.cs" />
<Compile Include="Widgets\Logic\Ingame\IngameRadarDisplayLogic.cs" /> <Compile Include="Widgets\Logic\Ingame\IngameRadarDisplayLogic.cs" />
<Compile Include="Widgets\Logic\Ingame\LoadIngamePlayerOrObserverUILogic.cs" /> <Compile Include="Widgets\Logic\Ingame\LoadIngamePlayerOrObserverUILogic.cs" />

View File

@@ -19,9 +19,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{ {
var label = widget.Get<LabelWidget>("LABEL"); var label = widget.Get<LabelWidget>("LABEL");
var font = Game.Renderer.Fonts[label.Font]; var font = Game.Renderer.Fonts[label.Font];
var labelWidth = font.Measure(button.TooltipText).X; var text = button.GetTooltipText();
var labelWidth = font.Measure(text).X;
label.GetText = () => button.TooltipText; label.GetText = () => text;
label.Bounds.Width = labelWidth; label.Bounds.Width = labelWidth;
widget.Bounds.Width = 2 * label.Bounds.X + labelWidth; widget.Bounds.Width = 2 * label.Bounds.X + labelWidth;

View File

@@ -0,0 +1,52 @@
#region Copyright & License Information
/*
* Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation. For more information,
* see COPYING.
*/
#endregion
using System;
using System.Linq;
using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets.Logic
{
public class CountryTooltipLogic
{
[ObjectCreator.UseCtor]
public CountryTooltipLogic(Widget widget, ButtonWidget button)
{
var lines = button.GetTooltipText().Replace("\\n", "\n").Split('\n');
var header = widget.Get<LabelWidget>("HEADER");
var headerLine = lines[0];
var headerFont = Game.Renderer.Fonts[header.Font];
var headerSize = headerFont.Measure(headerLine);
header.Bounds.Width += headerSize.X;
header.Bounds.Height += headerSize.Y;
header.GetText = () => headerLine;
if (lines.Length > 1)
{
var description = widget.Get<LabelWidget>("DESCRIPTION");
var descriptionLines = lines.Skip(1).ToArray();
var descriptionFont = Game.Renderer.Fonts[description.Font];
description.Bounds.Y += header.Bounds.Y + header.Bounds.Height;
description.Bounds.Width += descriptionLines.Select(l => descriptionFont.Measure(l).X).Max();
description.Bounds.Height += descriptionFont.Measure(descriptionLines.First()).Y * descriptionLines.Length;
description.GetText = () => string.Join("\n", descriptionLines);
widget.Bounds.Width = Math.Max(header.Bounds.X + header.Bounds.Width, description.Bounds.X + description.Bounds.Width);
widget.Bounds.Height = description.Bounds.Y + description.Bounds.Height;
}
else
{
widget.Bounds.Width = header.Bounds.X + header.Bounds.Width;
widget.Bounds.Height = header.Bounds.Y + header.Bounds.Height;
}
}
}
}

View File

@@ -18,7 +18,11 @@ namespace OpenRA.Mods.RA.Widgets.Logic
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public AddRaceSuffixLogic(Widget widget, World world) public AddRaceSuffixLogic(Widget widget, World world)
{ {
var suffix = "-" + world.LocalPlayer.Country.Race; string race;
if (!ChromeMetrics.TryGet("RaceSuffix-" + world.LocalPlayer.Country.Race, out race))
race = world.LocalPlayer.Country.Race;
var suffix = "-" + race;
if (widget is ButtonWidget) if (widget is ButtonWidget)
((ButtonWidget)widget).Background += suffix; ((ButtonWidget)widget).Background += suffix;
else if (widget is ImageWidget) else if (widget is ImageWidget)

View File

@@ -49,7 +49,8 @@ namespace OpenRA.Mods.RA.Widgets.Logic
readonly Widget chatTemplate; readonly Widget chatTemplate;
readonly ScrollPanelWidget players; readonly ScrollPanelWidget players;
readonly Dictionary<string, string> countryNames;
readonly Dictionary<string, LobbyCountry> countries = new Dictionary<string, LobbyCountry>();
readonly ColorPreviewManagerWidget colorPreview; readonly ColorPreviewManagerWidget colorPreview;
@@ -142,10 +143,9 @@ namespace OpenRA.Mods.RA.Widgets.Logic
colorPreview = lobby.Get<ColorPreviewManagerWidget>("COLOR_MANAGER"); colorPreview = lobby.Get<ColorPreviewManagerWidget>("COLOR_MANAGER");
colorPreview.Color = Game.Settings.Player.Color; colorPreview.Color = Game.Settings.Player.Color;
countryNames = modRules.Actors["world"].Traits.WithInterface<CountryInfo>() countries.Add("random", new LobbyCountry { Name = "Any" });
.Where(c => c.Selectable) foreach (var c in modRules.Actors["world"].Traits.WithInterface<CountryInfo>().Where(c => c.Selectable))
.ToDictionary(a => a.Race, a => a.Name); countries.Add(c.Race, new LobbyCountry { Name = c.Name, Side = c.Side, Description = c.Description });
countryNames.Add("random", "Any");
var gameStarting = false; var gameStarting = false;
Func<bool> configurationDisabled = () => !Game.IsHost || gameStarting || Func<bool> configurationDisabled = () => !Game.IsHost || gameStarting ||
@@ -691,7 +691,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
LobbyUtils.SetupEditableNameWidget(template, slot, client, orderManager); LobbyUtils.SetupEditableNameWidget(template, slot, client, orderManager);
LobbyUtils.SetupEditableColorWidget(template, slot, client, orderManager, colorPreview); LobbyUtils.SetupEditableColorWidget(template, slot, client, orderManager, colorPreview);
LobbyUtils.SetupEditableFactionWidget(template, slot, client, orderManager, countryNames); LobbyUtils.SetupEditableFactionWidget(template, slot, client, orderManager, countries);
LobbyUtils.SetupEditableTeamWidget(template, slot, client, orderManager, Map); LobbyUtils.SetupEditableTeamWidget(template, slot, client, orderManager, Map);
LobbyUtils.SetupEditableSpawnWidget(template, slot, client, orderManager, Map); LobbyUtils.SetupEditableSpawnWidget(template, slot, client, orderManager, Map);
LobbyUtils.SetupEditableReadyWidget(template, slot, client, orderManager, Map); LobbyUtils.SetupEditableReadyWidget(template, slot, client, orderManager, Map);
@@ -707,7 +707,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
LobbyUtils.SetupKickWidget(template, slot, client, orderManager, lobby, LobbyUtils.SetupKickWidget(template, slot, client, orderManager, lobby,
() => panel = PanelType.Kick, () => panel = PanelType.Players); () => panel = PanelType.Kick, () => panel = PanelType.Players);
LobbyUtils.SetupColorWidget(template, slot, client); LobbyUtils.SetupColorWidget(template, slot, client);
LobbyUtils.SetupFactionWidget(template, slot, client, countryNames); LobbyUtils.SetupFactionWidget(template, slot, client, countries);
LobbyUtils.SetupTeamWidget(template, slot, client); LobbyUtils.SetupTeamWidget(template, slot, client);
LobbyUtils.SetupSpawnWidget(template, slot, client); LobbyUtils.SetupSpawnWidget(template, slot, client);
LobbyUtils.SetupReadyWidget(template, slot, client); LobbyUtils.SetupReadyWidget(template, slot, client);
@@ -810,4 +810,11 @@ namespace OpenRA.Mods.RA.Widgets.Logic
public Action OnClick; public Action OnClick;
} }
} }
public class LobbyCountry
{
public string Name;
public string Description;
public string Side;
}
} }

View File

@@ -105,21 +105,25 @@ namespace OpenRA.Mods.RA.Widgets.Logic
} }
public static void ShowRaceDropDown(DropDownButtonWidget dropdown, Session.Client client, public static void ShowRaceDropDown(DropDownButtonWidget dropdown, Session.Client client,
OrderManager orderManager, Dictionary<string, string> countryNames) OrderManager orderManager, Dictionary<string, LobbyCountry> countries)
{ {
Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (race, itemTemplate) => Func<string, ScrollItemWidget, ScrollItemWidget> setupItem = (race, itemTemplate) =>
{ {
var item = ScrollItemWidget.Setup(itemTemplate, var item = ScrollItemWidget.Setup(itemTemplate,
() => client.Country == race, () => client.Country == race,
() => orderManager.IssueOrder(Order.Command("race {0} {1}".F(client.Index, race)))); () => orderManager.IssueOrder(Order.Command("race {0} {1}".F(client.Index, race))));
item.Get<LabelWidget>("LABEL").GetText = () => countryNames[race]; var country = countries[race];
item.Get<LabelWidget>("LABEL").GetText = () => country.Name;
var flag = item.Get<ImageWidget>("FLAG"); var flag = item.Get<ImageWidget>("FLAG");
flag.GetImageCollection = () => "flags"; flag.GetImageCollection = () => "flags";
flag.GetImageName = () => race; flag.GetImageName = () => race;
item.GetTooltipText = () => country.Description;
return item; return item;
}; };
dropdown.ShowDropDown("RACE_DROPDOWN_TEMPLATE", 150, countryNames.Keys, setupItem); var options = countries.GroupBy(c => c.Value.Side).ToDictionary(g => g.Key ?? "", g => g.Select(c => c.Key));
dropdown.ShowDropDown("RACE_DROPDOWN_TEMPLATE", 150, options, setupItem);
} }
public static void ShowColorDropDown(DropDownButtonWidget color, Session.Client client, public static void ShowColorDropDown(DropDownButtonWidget color, Session.Client client,
@@ -389,21 +393,25 @@ namespace OpenRA.Mods.RA.Widgets.Logic
color.GetColor = () => c.Color.RGB; color.GetColor = () => c.Color.RGB;
} }
public static void SetupEditableFactionWidget(Widget parent, Session.Slot s, Session.Client c, OrderManager orderManager, Dictionary<string,string> countryNames) public static void SetupEditableFactionWidget(Widget parent, Session.Slot s, Session.Client c, OrderManager orderManager,
Dictionary<string, LobbyCountry> countries)
{ {
var dropdown = parent.Get<DropDownButtonWidget>("FACTION"); var dropdown = parent.Get<DropDownButtonWidget>("FACTION");
dropdown.IsDisabled = () => s.LockRace || orderManager.LocalClient.IsReady; dropdown.IsDisabled = () => s.LockRace || orderManager.LocalClient.IsReady;
dropdown.OnMouseDown = _ => ShowRaceDropDown(dropdown, c, orderManager, countryNames); dropdown.OnMouseDown = _ => ShowRaceDropDown(dropdown, c, orderManager, countries);
SetupFactionWidget(dropdown, s, c, countryNames); var factionDescription = countries[c.Country].Description;
dropdown.GetTooltipText = () => factionDescription;
SetupFactionWidget(dropdown, s, c, countries);
} }
public static void SetupFactionWidget(Widget parent, Session.Slot s, Session.Client c, Dictionary<string,string> countryNames) public static void SetupFactionWidget(Widget parent, Session.Slot s, Session.Client c,
Dictionary<string, LobbyCountry> countries)
{ {
var factionname = parent.Get<LabelWidget>("FACTIONNAME"); var factionName = parent.Get<LabelWidget>("FACTIONNAME");
factionname.GetText = () => countryNames[c.Country]; factionName.GetText = () => countries[c.Country].Name;
var factionflag = parent.Get<ImageWidget>("FACTIONFLAG"); var factionFlag = parent.Get<ImageWidget>("FACTIONFLAG");
factionflag.GetImageName = () => c.Country; factionFlag.GetImageName = () => c.Country;
factionflag.GetImageCollection = () => "flags"; factionFlag.GetImageCollection = () => "flags";
} }
public static void SetupEditableTeamWidget(Widget parent, Session.Slot s, Session.Client c, OrderManager orderManager, MapPreview map) public static void SetupEditableTeamWidget(Widget parent, Session.Slot s, Session.Client c, OrderManager orderManager, MapPreview map)

View File

@@ -169,6 +169,7 @@ Container@SETTINGS_PANEL:
Y: 205 Y: 205
Width: 70 Width: 70
Height: 25 Height: 25
IgnoreChildMouseOver: true
Children: Children:
ColorBlock@COLORBLOCK: ColorBlock@COLORBLOCK:
X: 5 X: 5

View File

@@ -51,6 +51,7 @@ ScrollPanel@LOBBY_PLAYER_BIN:
X: 190 X: 190
Width: 80 Width: 80
Height: 25 Height: 25
IgnoreChildMouseOver: true
Children: Children:
ColorBlock@COLORBLOCK: ColorBlock@COLORBLOCK:
X: 5 X: 5
@@ -61,6 +62,7 @@ ScrollPanel@LOBBY_PLAYER_BIN:
X: 280 X: 280
Width: 130 Width: 130
Height: 25 Height: 25
IgnoreChildMouseOver: true
Children: Children:
Image@FACTIONFLAG: Image@FACTIONFLAG:
Width: 23 Width: 23

Binary file not shown.

View File

@@ -336,11 +336,22 @@ strategic: strategic.png
player_owned: 96,0,32,32 player_owned: 96,0,32,32
flags: buttons.png flags: buttons.png
allies: 30,112,30,15
soviet: 0,112,30,15 soviet: 0,112,30,15
allies: 30,112,30,15
random: 60,112,30,15 random: 60,112,30,15
spectator: 60,112,30,15 spectator: 60,112,30,15
russia: 0,127,30,15
ukraine: 30,127,30,15
england: 60,127,30,15
germany: 0,142,30,15
spain: 30,142,30,15
france: 60,142,30,15
turkey: 0,157,30,15
greece: 30,157,30,15
music: musicplayer.png music: musicplayer.png
pause: 0,0,25,25 pause: 0,0,25,25
stop: 28,0,25,25 stop: 28,0,25,25
@@ -351,10 +362,10 @@ music: musicplayer.png
slowmo: 168,0,25,25 slowmo: 168,0,25,25
scrollbar: buttons.png scrollbar: buttons.png
down_arrow: 16,140,16,16 down_arrow: 116,140,16,16
down_pressed: 16,140,16,16 down_pressed: 116,140,16,16
up_arrow: 32,140,16,16 up_arrow: 132,140,16,16
up_pressed: 32,140,16,16 up_pressed: 132,140,16,16
# A copy of dialog3 (pressed button) # A copy of dialog3 (pressed button)
progressbar-bg: dialog.png progressbar-bg: dialog.png
@@ -728,10 +739,10 @@ checkbox: dialog.png
corner-br: 767,127,1,1 corner-br: 767,127,1,1
checkbox-bits: buttons.png checkbox-bits: buttons.png
checked: 0,157,16,16 checked: 100,157,16,16
checked-disabled: 0,173,16,16 checked-disabled: 100,173,16,16
crossed: 16,157,16,16 crossed: 116,157,16,16
crossed-disabled: 16,173,16,16 crossed-disabled: 116,173,16,16
checkbox-hover: dialog.png checkbox-hover: dialog.png
background: 641,129,126,126 background: 641,129,126,126

View File

@@ -51,6 +51,7 @@ ScrollPanel@LOBBY_PLAYER_BIN:
X: 190 X: 190
Width: 80 Width: 80
Height: 25 Height: 25
IgnoreChildMouseOver: true
Children: Children:
ColorBlock@COLORBLOCK: ColorBlock@COLORBLOCK:
X: 5 X: 5
@@ -61,6 +62,10 @@ ScrollPanel@LOBBY_PLAYER_BIN:
X: 280 X: 280
Width: 130 Width: 130
Height: 25 Height: 25
IgnoreChildMouseOver: true
TooltipContainer: TOOLTIP_CONTAINER
TooltipTemplate: FACTION_DESCRIPTION_TOOLTIP
PanelRoot: FACTION_DROPDOWN_PANEL_ROOT # ensure that tooltips for the options are on top of the dropdown panel
Children: Children:
Image@FACTIONFLAG: Image@FACTIONFLAG:
Width: 30 Width: 30
@@ -326,12 +331,27 @@ ScrollPanel@LOBBY_PLAYER_BIN:
ScrollPanel@RACE_DROPDOWN_TEMPLATE: ScrollPanel@RACE_DROPDOWN_TEMPLATE:
Width: DROPDOWN_WIDTH Width: DROPDOWN_WIDTH
Children: Children:
ScrollItem@HEADER:
BaseName: scrollheader
Width: PARENT_RIGHT-27
Height: 13
X: 2
Y: 0
Visible: false
Children:
Label@LABEL:
Font: TinyBold
Width: PARENT_RIGHT
Height: 10
Align: Center
ScrollItem@TEMPLATE: ScrollItem@TEMPLATE:
Width: PARENT_RIGHT-27 Width: PARENT_RIGHT-27
Height: 25 Height: 25
X: 2 X: 2
Y: 0 Y: 0
Visible: false Visible: false
TooltipContainer: TOOLTIP_CONTAINER
TooltipTemplate: FACTION_DESCRIPTION_TOOLTIP
Children: Children:
Image@FLAG: Image@FLAG:
X: 5 X: 5
@@ -342,4 +362,3 @@ ScrollPanel@RACE_DROPDOWN_TEMPLATE:
X: 40 X: 40
Width: 60 Width: 60
Height: 25 Height: 25

View File

@@ -48,7 +48,7 @@ Background@SERVER_LOBBY:
Text: Team Text: Team
Align: Center Align: Center
Font: Bold Font: Bold
Label@LABEL_LOBBY_TEAM: Label@LABEL_LOBBY_SPAWN:
X: 478 X: 478
Width: 48 Width: 48
Height: 25 Height: 25
@@ -141,5 +141,5 @@ Background@SERVER_LOBBY:
Text: Disconnect Text: Disconnect
Font: Bold Font: Bold
Key: escape Key: escape
Container@FACTION_DROPDOWN_PANEL_ROOT:
TooltipContainer@TOOLTIP_CONTAINER: TooltipContainer@TOOLTIP_CONTAINER:

View File

@@ -182,6 +182,7 @@ Background@SETTINGS_PANEL:
Y: 205 Y: 205
Width: 70 Width: 70
Height: 25 Height: 25
IgnoreChildMouseOver: true
Children: Children:
ColorBlock@COLORBLOCK: ColorBlock@COLORBLOCK:
X: 5 X: 5

View File

@@ -186,3 +186,22 @@ Background@SUPPORT_POWER_TOOLTIP:
Y: 22 Y: 22
Font: TinyBold Font: TinyBold
VAlign: Top VAlign: Top
Background@FACTION_DESCRIPTION_TOOLTIP:
Logic: CountryTooltipLogic
Background: dialog4
Children:
Label@HEADER:
X: 7
Y: 6
Width: 8
Height: 12
Font: Bold
VAlign: Top
Label@DESCRIPTION:
X: 14
Y: 0
Width: 15
Height: 14
Font: TinyBold
VAlign: Top

View File

@@ -982,6 +982,18 @@ Rules:
HIJACKER: HIJACKER:
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled
FACF:
Buildable:
Prerequisites: ~disabled
WEAF:
Buildable:
Prerequisites: ~disabled
SYRF:
Buildable:
Prerequisites: ~disabled
DOMF:
Buildable:
Prerequisites: ~disabled
Sequences: Sequences:

View File

@@ -1578,6 +1578,18 @@ Rules:
SHOK: SHOK:
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled
FACF:
Buildable:
Prerequisites: ~disabled
WEAF:
Buildable:
Prerequisites: ~disabled
SYRF:
Buildable:
Prerequisites: ~disabled
DOMF:
Buildable:
Prerequisites: ~disabled
Sequences: Sequences:

View File

@@ -1262,8 +1262,10 @@ Rules:
ParachuteSequence: parach ParachuteSequence: parach
AFLD.mission: AFLD.mission:
Inherits: AFLD Inherits: AFLD
-AirstrikePower: -AirstrikePower@spyplane:
-ParatroopersPower: -ParatroopersPower@paratroopers
-ParatroopersPower@armordrop:
-AirstrikePower@parabombs:
-SupportPowerChargeBar: -SupportPowerChargeBar:
RenderBuilding: RenderBuilding:
Image: AFLD Image: AFLD
@@ -1351,6 +1353,18 @@ Rules:
DTRK: DTRK:
Buildable: Buildable:
Prerequisites: ~disabled Prerequisites: ~disabled
FACF:
Buildable:
Prerequisites: ~disabled
WEAF:
Buildable:
Prerequisites: ~disabled
SYRF:
Buildable:
Prerequisites: ~disabled
DOMF:
Buildable:
Prerequisites: ~disabled
Sequences: Sequences:

View File

@@ -24,3 +24,10 @@ Metrics:
SpawnColor: 255,255,255 SpawnColor: 255,255,255
SpawnContrastColor: 0,0,0 SpawnContrastColor: 0,0,0
SpawnLabelOffset: 0,1 SpawnLabelOffset: 0,1
RaceSuffix-allies: allies
RaceSuffix-england: allies
RaceSuffix-france: allies
RaceSuffix-germany: allies
RaceSuffix-soviet: soviet
RaceSuffix-russia: soviet
RaceSuffix-ukraine: soviet

View File

@@ -62,8 +62,8 @@ Player:
ttnk: 10% ttnk: 10%
stnk: 5% stnk: 5%
SquadSize: 20 SquadSize: 20
SupportPowerDecision@Airstrike: SupportPowerDecision@spyplane:
OrderName: AirstrikePowerInfoOrder OrderName: SovietSpyPlane
MinimumAttractiveness: 1 MinimumAttractiveness: 1
Consideration@1: Consideration@1:
Against: Enemy Against: Enemy
@@ -71,8 +71,8 @@ Player:
Attractiveness: 1 Attractiveness: 1
TargetMetric: None TargetMetric: None
CheckRadius: 5c0 CheckRadius: 5c0
SupportPowerDecision@Paratroopers: SupportPowerDecision@paratroopers:
OrderName: ParatroopersPowerInfoOrder OrderName: SovietParatroopers
MinimumAttractiveness: 5 MinimumAttractiveness: 5
Consideration@1: Consideration@1:
Against: Enemy Against: Enemy
@@ -86,7 +86,31 @@ Player:
Attractiveness: -10 Attractiveness: -10
TargetMetric: None TargetMetric: None
CheckRadius: 10c0 CheckRadius: 10c0
SupportPowerDecision@NukePower: SupportPowerDecision@armordrop:
OrderName: RussiaArmorDrop
MinimumAttractiveness: 5
Consideration@1:
Against: Enemy
Types: Structure
Attractiveness: 1
TargetMetric: None
CheckRadius: 10c0
Consideration@2:
Against: Enemy
Types: Vehicle, Tank, Infantry, Defense
Attractiveness: -10
TargetMetric: None
CheckRadius: 10c0
SupportPowerDecision@parabombs:
OrderName: UkraineParabombs
MinimumAttractiveness: 1
Consideration@1:
Against: Enemy
Types: Structure
Attractiveness: 1
TargetMetric: None
CheckRadius: 5c0
SupportPowerDecision@nukepower:
OrderName: NukePowerInfoOrder OrderName: NukePowerInfoOrder
MinimumAttractiveness: 3000 MinimumAttractiveness: 3000
Consideration@1: Consideration@1:
@@ -180,8 +204,8 @@ Player:
ca: 10% ca: 10%
pt: 10% pt: 10%
SquadSize: 40 SquadSize: 40
SupportPowerDecision@Airstrike: SupportPowerDecision@spyplane:
OrderName: AirstrikePowerInfoOrder OrderName: SovietSpyPlane
MinimumAttractiveness: 1 MinimumAttractiveness: 1
Consideration@1: Consideration@1:
Against: Enemy Against: Enemy
@@ -189,8 +213,8 @@ Player:
Attractiveness: 1 Attractiveness: 1
TargetMetric: None TargetMetric: None
CheckRadius: 5c0 CheckRadius: 5c0
SupportPowerDecision@Paratroopers: SupportPowerDecision@paratroopers:
OrderName: ParatroopersPowerInfoOrder OrderName: SovietParatroopers
MinimumAttractiveness: 5 MinimumAttractiveness: 5
Consideration@1: Consideration@1:
Against: Enemy Against: Enemy
@@ -204,7 +228,31 @@ Player:
Attractiveness: -10 Attractiveness: -10
TargetMetric: None TargetMetric: None
CheckRadius: 10c0 CheckRadius: 10c0
SupportPowerDecision@NukePower: SupportPowerDecision@armordrop:
OrderName: RussiaArmorDrop
MinimumAttractiveness: 5
Consideration@1:
Against: Enemy
Types: Structure
Attractiveness: 1
TargetMetric: None
CheckRadius: 10c0
Consideration@2:
Against: Enemy
Types: Vehicle, Tank, Infantry, Defense
Attractiveness: -10
TargetMetric: None
CheckRadius: 10c0
SupportPowerDecision@parabombs:
OrderName: UkraineParabombs
MinimumAttractiveness: 1
Consideration@1:
Against: Enemy
Types: Structure
Attractiveness: 1
TargetMetric: None
CheckRadius: 5c0
SupportPowerDecision@nukepower:
OrderName: NukePowerInfoOrder OrderName: NukePowerInfoOrder
MinimumAttractiveness: 3000 MinimumAttractiveness: 3000
Consideration@1: Consideration@1:
@@ -297,8 +345,8 @@ Player:
ca: 10% ca: 10%
pt: 10% pt: 10%
SquadSize: 10 SquadSize: 10
SupportPowerDecision@Airstrike: SupportPowerDecision@spyplane:
OrderName: AirstrikePowerInfoOrder OrderName: SovietSpyPlane
MinimumAttractiveness: 1 MinimumAttractiveness: 1
Consideration@1: Consideration@1:
Against: Enemy Against: Enemy
@@ -306,8 +354,8 @@ Player:
Attractiveness: 1 Attractiveness: 1
TargetMetric: None TargetMetric: None
CheckRadius: 5c0 CheckRadius: 5c0
SupportPowerDecision@Paratroopers: SupportPowerDecision@paratroopers:
OrderName: ParatroopersPowerInfoOrder OrderName: SovietParatroopers
MinimumAttractiveness: 5 MinimumAttractiveness: 5
Consideration@1: Consideration@1:
Against: Enemy Against: Enemy
@@ -321,7 +369,31 @@ Player:
Attractiveness: -10 Attractiveness: -10
TargetMetric: None TargetMetric: None
CheckRadius: 10c0 CheckRadius: 10c0
SupportPowerDecision@NukePower: SupportPowerDecision@armordrop:
OrderName: RussiaArmorDrop
MinimumAttractiveness: 5
Consideration@1:
Against: Enemy
Types: Structure
Attractiveness: 1
TargetMetric: None
CheckRadius: 10c0
Consideration@2:
Against: Enemy
Types: Vehicle, Tank, Infantry, Defense
Attractiveness: -10
TargetMetric: None
CheckRadius: 10c0
SupportPowerDecision@parabombs:
OrderName: UkraineParabombs
MinimumAttractiveness: 1
Consideration@1:
Against: Enemy
Types: Structure
Attractiveness: 1
TargetMetric: None
CheckRadius: 5c0
SupportPowerDecision@nukepower:
OrderName: NukePowerInfoOrder OrderName: NukePowerInfoOrder
MinimumAttractiveness: 3000 MinimumAttractiveness: 3000
Consideration@1: Consideration@1:
@@ -389,8 +461,8 @@ Player:
ca: 20% ca: 20%
pt: 10% pt: 10%
SquadSize: 1 SquadSize: 1
SupportPowerDecision@Airstrike: SupportPowerDecision@spyplane:
OrderName: AirstrikePowerInfoOrder OrderName: SovietSpyPlane
MinimumAttractiveness: 1 MinimumAttractiveness: 1
Consideration@1: Consideration@1:
Against: Enemy Against: Enemy
@@ -398,8 +470,8 @@ Player:
Attractiveness: 1 Attractiveness: 1
TargetMetric: None TargetMetric: None
CheckRadius: 5c0 CheckRadius: 5c0
SupportPowerDecision@Paratroopers: SupportPowerDecision@paratroopers:
OrderName: ParatroopersPowerInfoOrder OrderName: SovietParatroopers
MinimumAttractiveness: 5 MinimumAttractiveness: 5
Consideration@1: Consideration@1:
Against: Enemy Against: Enemy
@@ -413,7 +485,31 @@ Player:
Attractiveness: -10 Attractiveness: -10
TargetMetric: None TargetMetric: None
CheckRadius: 10c0 CheckRadius: 10c0
SupportPowerDecision@NukePower: SupportPowerDecision@armordrop:
OrderName: RussiaArmorDrop
MinimumAttractiveness: 5
Consideration@1:
Against: Enemy
Types: Structure
Attractiveness: 1
TargetMetric: None
CheckRadius: 10c0
Consideration@2:
Against: Enemy
Types: Vehicle, Tank, Infantry, Defense
Attractiveness: -10
TargetMetric: None
CheckRadius: 10c0
SupportPowerDecision@parabombs:
OrderName: UkraineParabombs
MinimumAttractiveness: 1
Consideration@1:
Against: Enemy
Types: Structure
Attractiveness: 1
TargetMetric: None
CheckRadius: 5c0
SupportPowerDecision@nukepower:
OrderName: NukePowerInfoOrder OrderName: NukePowerInfoOrder
MinimumAttractiveness: 3000 MinimumAttractiveness: 3000
Consideration@1: Consideration@1:

View File

@@ -147,6 +147,15 @@
TimedUpgradeBar: TimedUpgradeBar:
Upgrade: invulnerability Upgrade: invulnerability
MustBeDestroyed: MustBeDestroyed:
Parachutable:
ParachuteOffset: 0,0,200
KilledOnImpassableTerrain: true
ParachuteSequence: parach
ShadowSequence:
GroundCorpseSequence:
GroundCorpsePalette:
WaterCorpseSequence:
WaterCorpsePalette:
^Infantry: ^Infantry:
AppearsOnRadar: AppearsOnRadar:

View File

@@ -194,7 +194,7 @@ SPY:
Queue: Infantry Queue: Infantry
BuildAtProductionType: Soldier BuildAtProductionType: Soldier
BuildPaletteOrder: 90 BuildPaletteOrder: 90
Prerequisites: dome, ~tent, ~techlevel.medium Prerequisites: ~!infantry.england, dome, ~tent, ~techlevel.medium
Valued: Valued:
Cost: 500 Cost: 500
-Tooltip: -Tooltip:
@@ -226,6 +226,17 @@ SPY:
Weapon: SilencedPPK Weapon: SilencedPPK
AttackFrontal: AttackFrontal:
SPY.England:
Inherits: SPY
RenderDisguise:
Image: spy
Buildable:
Prerequisites: ~infantry.england, dome, ~tent, ~techlevel.medium
Valued:
Cost: 250
DisguiseToolTip:
Name: British Spy
E7: E7:
Inherits: ^Infantry Inherits: ^Infantry
Buildable: Buildable:

View File

@@ -78,10 +78,6 @@ CRATE:
RevealMapCrateAction: RevealMapCrateAction:
SelectionShares: 1 SelectionShares: 1
Effect: reveal-map Effect: reveal-map
SupportPowerCrateAction@parabombs:
SelectionShares: 5
Proxy: powerproxy.parabombs
Effect: parabombs
DuplicateUnitCrateAction: DuplicateUnitCrateAction:
SelectionShares: 10 SelectionShares: 10
MaxAmount: 5 MaxAmount: 5
@@ -94,51 +90,51 @@ CRATE:
GiveUnitCrateAction@jeep: GiveUnitCrateAction@jeep:
SelectionShares: 7 SelectionShares: 7
Units: jeep Units: jeep
ValidRaces: allies ValidRaces: allies, england, france, germany
Prerequisites: techlevel.low Prerequisites: techlevel.low
GiveUnitCrateAction@arty: GiveUnitCrateAction@arty:
SelectionShares: 6 SelectionShares: 6
Units: arty Units: arty
ValidRaces: allies ValidRaces: allies, england, france, germany
Prerequisites: techlevel.medium, dome Prerequisites: techlevel.medium, dome
GiveUnitCrateAction@v2rl: GiveUnitCrateAction@v2rl:
SelectionShares: 6 SelectionShares: 6
Units: v2rl Units: v2rl
ValidRaces: soviet ValidRaces: soviet, russia, ukraine
Prerequisites: techlevel.medium, dome Prerequisites: techlevel.medium, dome
GiveUnitCrateAction@1tnk: GiveUnitCrateAction@1tnk:
SelectionShares: 5 SelectionShares: 5
Units: 1tnk Units: 1tnk
ValidRaces: allies ValidRaces: allies, england, france, germany
Prerequisites: techlevel.low Prerequisites: techlevel.low
GiveUnitCrateAction@2tnk: GiveUnitCrateAction@2tnk:
SelectionShares: 4 SelectionShares: 4
Units: 2tnk Units: 2tnk
ValidRaces: allies ValidRaces: allies, england, france, germany
Prerequisites: techlevel.medium, fix Prerequisites: techlevel.medium, fix
GiveUnitCrateAction@3tnk: GiveUnitCrateAction@3tnk:
SelectionShares: 4 SelectionShares: 4
Units: 3tnk Units: 3tnk
ValidRaces: soviet ValidRaces: soviet, russia, ukraine
Prerequisites: techlevel.medium, fix Prerequisites: techlevel.medium, fix
GiveUnitCrateAction@4tnk: GiveUnitCrateAction@4tnk:
SelectionShares: 3 SelectionShares: 3
Units: 4tnk Units: 4tnk
ValidRaces: soviet ValidRaces: soviet, russia, ukraine
Prerequisites: techlevel.unrestricted, fix, techcenter Prerequisites: techlevel.unrestricted, fix, techcenter
GiveUnitCrateAction@squadlight: GiveUnitCrateAction@squadlight:
SelectionShares: 7 SelectionShares: 7
Units: e1,e1,e1,e3,e3 Units: e1,e1,e1,e3,e3
ValidRaces: allies, soviet ValidRaces: allies, england, france, germany, soviet, russia, ukraine
GiveUnitCrateAction@squadheavyallies: GiveUnitCrateAction@squadheavyallies:
SelectionShares: 7 SelectionShares: 7
Units: e1,e1,e1,e1,e3,e3,e3,e6,medi Units: e1,e1,e1,e1,e3,e3,e3,e6,medi
ValidRaces: allies ValidRaces: allies, england, france, germany
TimeDelay: 4500 TimeDelay: 4500
GiveUnitCrateAction@squadheavysoviet: GiveUnitCrateAction@squadheavysoviet:
SelectionShares: 7 SelectionShares: 7
Units: e1,e1,e4,e4,e3,e3,e3 Units: e1,e1,e4,e4,e3,e3,e3
ValidRaces: soviet ValidRaces: soviet, russia, ukraine
TimeDelay: 4500 TimeDelay: 4500
GrantUpgradeCrateAction@invuln: GrantUpgradeCrateAction@invuln:
SelectionShares: 5 SelectionShares: 5

View File

@@ -56,7 +56,7 @@ GAP:
Buildable: Buildable:
Queue: Defense Queue: Defense
BuildPaletteOrder: 110 BuildPaletteOrder: 110
Prerequisites: atek, ~structures.allies, ~techlevel.unrestricted Prerequisites: atek, ~!structures.france, ~structures.allies, ~techlevel.unrestricted
Building: Building:
Footprint: _ x Footprint: _ x
Dimensions: 1,2 Dimensions: 1,2
@@ -81,6 +81,19 @@ GAP:
MustBeDestroyed: MustBeDestroyed:
RequiredForShortGame: false RequiredForShortGame: false
GAP.France:
Inherits: GAP
RenderBuilding:
Image: gap
Tooltip:
Name: Advanced Gap Generator
Buildable:
Prerequisites: atek, ~structures.france, ~techlevel.unrestricted
RevealsShroud:
Range: 10c0
CreatesShroud:
Range: 10c0
SPEN: SPEN:
Inherits: ^Building Inherits: ^Building
InfiltrateForSupportPower: InfiltrateForSupportPower:
@@ -133,6 +146,30 @@ SPEN:
ProductionBar: ProductionBar:
Power: Power:
Amount: -30 Amount: -30
ProvidesCustomPrerequisite@soviet:
Race: soviet, russia, ukraine
Prerequisite: ships.soviet
ProvidesCustomPrerequisite@sovietvanilla:
Race: soviet
Prerequisite: ships.sovietvanilla
ProvidesCustomPrerequisite@russia:
Race: russia
Prerequisite: ships.russia
ProvidesCustomPrerequisite@ukraine:
Race: ukraine
Prerequisite: ships.ukraine
ProvidesCustomPrerequisite@sovietstructure:
RequiresPrerequisites: structures.soviet
Prerequisite: ships.soviet
ProvidesCustomPrerequisite@sovietvanillastructure:
RequiresPrerequisites: structures.sovietvanilla
Prerequisite: ships.sovietvanilla
ProvidesCustomPrerequisite@russianstructure:
RequiresPrerequisites: structures.russia
Prerequisite: ships.russia
ProvidesCustomPrerequisite@ukrainianstructure:
RequiresPrerequisites: structures.ukraine
Prerequisite: ships.ukraine
SYRD: SYRD:
Inherits: ^Building Inherits: ^Building
@@ -186,6 +223,36 @@ SYRD:
ProductionBar: ProductionBar:
Power: Power:
Amount: -30 Amount: -30
ProvidesCustomPrerequisite@allies:
Race: allies, england, france, germany
Prerequisite: ships.allies
ProvidesCustomPrerequisite@alliesvanilla:
Race: allies
Prerequisite: ships.alliesvanilla
ProvidesCustomPrerequisite@england:
Race: england
Prerequisite: ships.england
ProvidesCustomPrerequisite@france:
Race: france
Prerequisite: ships.france
ProvidesCustomPrerequisite@germany:
Race: germany
Prerequisite: ships.germany
ProvidesCustomPrerequisite@alliedstructure:
RequiresPrerequisites: structures.allies
Prerequisite: ships.allies
ProvidesCustomPrerequisite@alliedvanillastructure:
RequiresPrerequisites: structures.alliesvanilla
Prerequisite: ships.alliesvanilla
ProvidesCustomPrerequisite@englishstructure:
RequiresPrerequisites: structures.england
Prerequisite: ships.england
ProvidesCustomPrerequisite@frenchstructure:
RequiresPrerequisites: structures.france
Prerequisite: ships.france
ProvidesCustomPrerequisite@germanstructure:
RequiresPrerequisites: structures.germany
Prerequisite: ships.germany
IRON: IRON:
Inherits: ^Building Inherits: ^Building
@@ -238,7 +305,7 @@ PDOX:
Buildable: Buildable:
Queue: Defense Queue: Defense
BuildPaletteOrder: 120 BuildPaletteOrder: 120
Prerequisites: atek, ~structures.allies, ~techlevel.unrestricted Prerequisites: atek, ~structures.allies, ~!structures.germany, ~techlevel.unrestricted
BuildLimit: 1 BuildLimit: 1
Valued: Valued:
Cost: 1500 Cost: 1500
@@ -278,6 +345,20 @@ PDOX:
MustBeDestroyed: MustBeDestroyed:
RequiredForShortGame: false RequiredForShortGame: false
PDOX.Germany:
Inherits: PDOX
Buildable:
Prerequisites: atek, ~structures.germany, ~techlevel.unrestricted
RenderBuilding:
Image: pdox
Tooltip:
Name: Advanced Chronosphere
Description: Teleports a large group of units across the\nmap for a short time. Requires power to operate.\n Special Ability: Chronoshift\n\nMaximum 1 can be built
ChronoshiftPower:
Description: Advanced Chronoshift
LongDesc: Teleports a large group of units across the\nmap for 20 seconds.
Range: 2
TSLA: TSLA:
Inherits: ^Defense Inherits: ^Defense
Buildable: Buildable:
@@ -691,17 +772,59 @@ WEAP:
Production: Production:
Produces: Vehicle Produces: Vehicle
ProvidesCustomPrerequisite@allies: ProvidesCustomPrerequisite@allies:
Race: allies Race: allies, england, france, germany
Prerequisite: vehicles.allies Prerequisite: vehicles.allies
ProvidesCustomPrerequisite@alliesvanilla:
Race: allies
Prerequisite: vehicles.alliesvanilla
ProvidesCustomPrerequisite@england:
Race: england
Prerequisite: vehicles.england
ProvidesCustomPrerequisite@france:
Race: france
Prerequisite: vehicles.france
ProvidesCustomPrerequisite@germany:
Race: germany
Prerequisite: vehicles.germany
ProvidesCustomPrerequisite@soviet: ProvidesCustomPrerequisite@soviet:
Race: soviet Race: soviet, russia, ukraine
Prerequisite: vehicles.soviet Prerequisite: vehicles.soviet
ProvidesCustomPrerequisite@sovietvanilla:
Race: soviet
Prerequisite: vehicles.sovietvanilla
ProvidesCustomPrerequisite@russia:
Race: russia
Prerequisite: vehicles.russia
ProvidesCustomPrerequisite@ukraine:
Race: ukraine
Prerequisite: vehicles.ukraine
ProvidesCustomPrerequisite@alliedstructure: ProvidesCustomPrerequisite@alliedstructure:
RequiresPrerequisites: structures.allies RequiresPrerequisites: structures.allies
Prerequisite: vehicles.allies Prerequisite: vehicles.allies
ProvidesCustomPrerequisite@alliedvanillastructure:
RequiresPrerequisites: structures.alliesvanilla
Prerequisite: vehicles.alliesvanilla
ProvidesCustomPrerequisite@englishstructure:
RequiresPrerequisites: structures.england
Prerequisite: vehicles.england
ProvidesCustomPrerequisite@frenchstructure:
RequiresPrerequisites: structures.france
Prerequisite: vehicles.france
ProvidesCustomPrerequisite@germanstructure:
RequiresPrerequisites: structures.germany
Prerequisite: vehicles.germany
ProvidesCustomPrerequisite@sovietstructure: ProvidesCustomPrerequisite@sovietstructure:
RequiresPrerequisites: structures.soviet RequiresPrerequisites: structures.soviet
Prerequisite: vehicles.soviet Prerequisite: vehicles.soviet
ProvidesCustomPrerequisite@sovietvanillastructure:
RequiresPrerequisites: structures.sovietvanilla
Prerequisite: vehicles.sovietvanilla
ProvidesCustomPrerequisite@russianstructure:
RequiresPrerequisites: structures.russia
Prerequisite: vehicles.russia
ProvidesCustomPrerequisite@ukrainianstructure:
RequiresPrerequisites: structures.ukraine
Prerequisite: vehicles.ukraine
PrimaryBuilding: PrimaryBuilding:
ProductionBar: ProductionBar:
Power: Power:
@@ -717,11 +840,32 @@ FACT:
BuildPaletteOrder: 1000 BuildPaletteOrder: 1000
Prerequisites: ~disabled Prerequisites: ~disabled
ProvidesCustomPrerequisite@allies: ProvidesCustomPrerequisite@allies:
Race: allies Race: allies, england, france, germany
Prerequisite: structures.allies Prerequisite: structures.allies
ProvidesCustomPrerequisite@alliesvanilla:
Race: allies
Prerequisite: structures.alliesvanilla
ProvidesCustomPrerequisite@england:
Race: england
Prerequisite: structures.england
ProvidesCustomPrerequisite@france:
Race: france
Prerequisite: structures.france
ProvidesCustomPrerequisite@germany:
Race: germany
Prerequisite: structures.germany
ProvidesCustomPrerequisite@soviet: ProvidesCustomPrerequisite@soviet:
Race: soviet Race: soviet, russia, ukraine
Prerequisite: structures.soviet Prerequisite: structures.soviet
ProvidesCustomPrerequisite@sovietvanilla:
Race: soviet
Prerequisite: structures.sovietvanilla
ProvidesCustomPrerequisite@russia:
Race: russia
Prerequisite: structures.russia
ProvidesCustomPrerequisite@ukraine:
Race: ukraine
Prerequisite: structures.ukraine
Health: Health:
HP: 1500 HP: 1500
Armor: Armor:
@@ -863,6 +1007,36 @@ HPAD:
PrimaryBuilding: PrimaryBuilding:
Power: Power:
Amount: -10 Amount: -10
ProvidesCustomPrerequisite@allies:
Race: allies, england, france, germany
Prerequisite: aircraft.allies
ProvidesCustomPrerequisite@alliesvanilla:
Race: allies
Prerequisite: aircraft.alliesvanilla
ProvidesCustomPrerequisite@england:
Race: england
Prerequisite: aircraft.england
ProvidesCustomPrerequisite@france:
Race: france
Prerequisite: aircraft.france
ProvidesCustomPrerequisite@germany:
Race: germany
Prerequisite: aircraft.germany
ProvidesCustomPrerequisite@alliedstructure:
RequiresPrerequisites: structures.allies
Prerequisite: aircraft.allies
ProvidesCustomPrerequisite@alliedvanillastructure:
RequiresPrerequisites: structures.alliesvanilla
Prerequisite: aircraft.alliesvanilla
ProvidesCustomPrerequisite@englishstructure:
RequiresPrerequisites: structures.england
Prerequisite: aircraft.england
ProvidesCustomPrerequisite@frenchstructure:
RequiresPrerequisites: structures.france
Prerequisite: aircraft.france
ProvidesCustomPrerequisite@germanstructure:
RequiresPrerequisites: structures.germany
Prerequisite: aircraft.germany
AFLD: AFLD:
Inherits: ^Building Inherits: ^Building
@@ -893,7 +1067,33 @@ AFLD:
Production: Production:
Produces: Aircraft, Plane Produces: Aircraft, Plane
Reservable: Reservable:
AirstrikePower: ProvidesCustomPrerequisite@soviet:
Race: soviet, russia, ukraine
Prerequisite: aircraft.soviet
ProvidesCustomPrerequisite@sovietvanilla:
Race: soviet
Prerequisite: aircraft.sovietvanilla
ProvidesCustomPrerequisite@russia:
Race: russia
Prerequisite: aircraft.russia
ProvidesCustomPrerequisite@ukraine:
Race: ukraine
Prerequisite: aircraft.ukraine
ProvidesCustomPrerequisite@sovietstructure:
RequiresPrerequisites: structures.soviet
Prerequisite: aircraft.soviet
ProvidesCustomPrerequisite@sovietvanillastructure:
RequiresPrerequisites: structures.sovietvanilla
Prerequisite: aircraft.sovietvanilla
ProvidesCustomPrerequisite@russianstructure:
RequiresPrerequisites: structures.russia
Prerequisite: aircraft.russia
ProvidesCustomPrerequisite@ukrainianstructure:
RequiresPrerequisites: structures.ukraine
Prerequisite: aircraft.ukraine
AirstrikePower@spyplane:
OrderName: SovietSpyPlane
Prerequisites: aircraft.sovietvanilla
Icon: spyplane Icon: spyplane
ChargeTime: 180 ChargeTime: 180
Description: Spy Plane Description: Spy Plane
@@ -906,7 +1106,9 @@ AFLD:
QuantizedFacings: 8 QuantizedFacings: 8
DisplayBeacon: true DisplayBeacon: true
BeaconPoster: camicon BeaconPoster: camicon
ParatroopersPower: ParatroopersPower@paratroopers:
OrderName: SovietParatroopers
Prerequisites: aircraft.sovietvanilla
Icon: paratroopers Icon: paratroopers
ChargeTime: 360 ChargeTime: 360
Description: Paratroopers Description: Paratroopers
@@ -918,6 +1120,35 @@ AFLD:
CameraActor: camera.paradrop CameraActor: camera.paradrop
DisplayBeacon: true DisplayBeacon: true
BeaconPoster: pinficon BeaconPoster: pinficon
ParatroopersPower@armordrop:
OrderName: RussiaArmorDrop
Prerequisites: aircraft.russia
Icon: armordrop
ChargeTime: 450
Description: Armor Airdrop
LongDesc: Badgers drop a pair of\nHeavy Tanks anywhere on the map.
DropItems: 3TNK,3TNK
SquadSize: 2
SelectTargetSound: slcttgt1.aud
AllowImpassableCells: false
QuantizedFacings: 8
CameraActor: camera.paradrop
DisplayBeacon: true
BeaconPoster: armordropicon
AirstrikePower@parabombs:
OrderName: UkraineParabombs
Prerequisites: aircraft.ukraine
Icon: parabombs
ChargeTime: 270
Description: Parabombs
LongDesc: A Badger drops a load of parachuted\nbombs on your target.
SelectTargetSound: slcttgt1.aud
CameraActor: camera
CameraRemoveDelay: 150
UnitType: badr.bomber
QuantizedFacings: 8
DisplayBeacon: true
BeaconPoster: pbmbicon
ProductionBar: ProductionBar:
SupportPowerChargeBar: SupportPowerChargeBar:
PrimaryBuilding: PrimaryBuilding:
@@ -1050,6 +1281,30 @@ BARR:
ProductionBar: ProductionBar:
ProvidesCustomPrerequisite: ProvidesCustomPrerequisite:
Prerequisite: barracks Prerequisite: barracks
ProvidesCustomPrerequisite@soviet:
Race: soviet, russia, ukraine
Prerequisite: infantry.soviet
ProvidesCustomPrerequisite@sovietvanilla:
Race: soviet
Prerequisite: infantry.sovietvanilla
ProvidesCustomPrerequisite@russia:
Race: russia
Prerequisite: infantry.russia
ProvidesCustomPrerequisite@ukraine:
Race: ukraine
Prerequisite: infantry.ukraine
ProvidesCustomPrerequisite@sovietstructure:
RequiresPrerequisites: structures.soviet
Prerequisite: infantry.soviet
ProvidesCustomPrerequisite@sovietvanillastructure:
RequiresPrerequisites: structures.sovietvanilla
Prerequisite: infantry.sovietvanilla
ProvidesCustomPrerequisite@russianstructure:
RequiresPrerequisites: structures.russia
Prerequisite: infantry.russia
ProvidesCustomPrerequisite@ukrainianstructure:
RequiresPrerequisites: structures.ukraine
Prerequisite: infantry.ukraine
Power: Power:
Amount: -20 Amount: -20
@@ -1119,8 +1374,38 @@ TENT:
Produces: Infantry, Soldier Produces: Infantry, Soldier
PrimaryBuilding: PrimaryBuilding:
ProductionBar: ProductionBar:
ProvidesCustomPrerequisite: ProvidesCustomPrerequisite@barracks:
Prerequisite: barracks Prerequisite: barracks
ProvidesCustomPrerequisite@allies:
Race: allies, england, france, germany
Prerequisite: infantry.allies
ProvidesCustomPrerequisite@alliesvanilla:
Race: allies
Prerequisite: infantry.alliesvanilla
ProvidesCustomPrerequisite@england:
Race: england
Prerequisite: infantry.england
ProvidesCustomPrerequisite@france:
Race: france
Prerequisite: infantry.france
ProvidesCustomPrerequisite@germany:
Race: germany
Prerequisite: infantry.germany
ProvidesCustomPrerequisite@alliedstructure:
RequiresPrerequisites: structures.allies
Prerequisite: infantry.allies
ProvidesCustomPrerequisite@alliedvanillastructure:
RequiresPrerequisites: structures.alliesvanilla
Prerequisite: infantry.alliesvanilla
ProvidesCustomPrerequisite@englishstructure:
RequiresPrerequisites: structures.england
Prerequisite: infantry.england
ProvidesCustomPrerequisite@frenchstructure:
RequiresPrerequisites: structures.france
Prerequisite: infantry.france
ProvidesCustomPrerequisite@germanstructure:
RequiresPrerequisites: structures.germany
Prerequisite: infantry.germany
Power: Power:
Amount: -20 Amount: -20
@@ -1157,21 +1442,24 @@ FIX:
FACF: FACF:
Inherits: ^Building Inherits: ^Building
Valued: Valued:
Cost: 50 Cost: 200
Buildable: Buildable:
BuildPaletteOrder: 940 BuildPaletteOrder: 940
Queue: Defense Queue: Defense
Prerequisites: ~disabled Prerequisites: ~structures.alliesvanilla, ~techlevel.medium
Tooltip: Tooltip:
Icon: fake-icon Icon: fake-icon
Name: Fake Construction Yard Name: Fake Construction Yard
Description: Looks like a Construction Yard. Description: Looks like a Construction Yard.
GenericName: Construction Yard
GenericVisibility: Enemy
GenericStancePrefix: False
Building: Building:
Footprint: xxx xxx xxx Footprint: xxx xxx xxx
Dimensions: 3,3 Dimensions: 3,3
-GivesBuildableArea: -GivesBuildableArea:
Health: Health:
HP: 30 HP: 100
RevealsShroud: RevealsShroud:
Range: 4c0 Range: 4c0
Bib: Bib:
@@ -1179,28 +1467,29 @@ FACF:
Image: FACT Image: FACT
Fake: Fake:
-EmitInfantryOnSell: -EmitInfantryOnSell:
Power:
Amount: -2
-MustBeDestroyed: -MustBeDestroyed:
WEAF: WEAF:
Inherits: ^Building Inherits: ^Building
Valued: Valued:
Cost: 50 Cost: 200
Buildable: Buildable:
BuildPaletteOrder: 920 BuildPaletteOrder: 920
Prerequisites: ~disabled Prerequisites: ~structures.alliesvanilla, ~techlevel.medium
Queue: Defense Queue: Defense
Tooltip: Tooltip:
Icon: fake-icon Icon: fake-icon
Name: Fake War Factory Name: Fake War Factory
Description: Looks like a War Factory. Description: Looks like a War Factory.
GenericName: War Factory
GenericVisibility: Enemy
GenericStancePrefix: False
Building: Building:
Footprint: xxx xxx Footprint: xxx xxx
Dimensions: 3,2 Dimensions: 3,2
-GivesBuildableArea: -GivesBuildableArea:
Health: Health:
HP: 30 HP: 100
RevealsShroud: RevealsShroud:
Range: 4c0 Range: 4c0
Bib: Bib:
@@ -1209,22 +1498,23 @@ WEAF:
Image: WEAP Image: WEAP
Fake: Fake:
-EmitInfantryOnSell: -EmitInfantryOnSell:
Power:
Amount: -2
-MustBeDestroyed: -MustBeDestroyed:
SYRF: SYRF:
Inherits: ^Building Inherits: ^Building
Valued: Valued:
Cost: 50 Cost: 200
Buildable: Buildable:
BuildPaletteOrder: 900 BuildPaletteOrder: 900
Queue: Defense Queue: Defense
Prerequisites: ~disabled Prerequisites: ~structures.alliesvanilla, ~techlevel.medium
Tooltip: Tooltip:
Icon: fake-icon Icon: fake-icon
Name: Fake Shipyard Name: Fake Shipyard
Description: Looks like a Shipyard. Description: Looks like a Shipyard.
GenericName: Shipyard
GenericVisibility: Enemy
GenericStancePrefix: False
TargetableBuilding: TargetableBuilding:
TargetTypes: Ground, Water TargetTypes: Ground, Water
Building: Building:
@@ -1234,21 +1524,19 @@ SYRF:
TerrainTypes: Water TerrainTypes: Water
-GivesBuildableArea: -GivesBuildableArea:
Health: Health:
HP: 30 HP: 100
RevealsShroud: RevealsShroud:
Range: 4c0 Range: 4c0
RenderBuilding: RenderBuilding:
Image: SYRD Image: SYRD
Fake: Fake:
-EmitInfantryOnSell: -EmitInfantryOnSell:
Power:
Amount: -2
-MustBeDestroyed: -MustBeDestroyed:
SPEF: SPEF:
Inherits: ^Building Inherits: ^Building
Valued: Valued:
Cost: 50 Cost: 200
TargetableBuilding: TargetableBuilding:
TargetTypes: Ground, Water TargetTypes: Ground, Water
Buildable: Buildable:
@@ -1259,6 +1547,9 @@ SPEF:
Icon: fake-icon Icon: fake-icon
Name: Fake Sub Pen Name: Fake Sub Pen
Description: Looks like a Sub Pen. Description: Looks like a Sub Pen.
GenericName: Sub Pen
GenericVisibility: Enemy
GenericStancePrefix: False
Building: Building:
Footprint: xxx xxx xxx Footprint: xxx xxx xxx
Dimensions: 3,3 Dimensions: 3,3
@@ -1266,35 +1557,36 @@ SPEF:
TerrainTypes: Water TerrainTypes: Water
-GivesBuildableArea: -GivesBuildableArea:
Health: Health:
HP: 30 HP: 100
RevealsShroud: RevealsShroud:
Range: 4c0 Range: 4c0
RenderBuilding: RenderBuilding:
Image: SPEN Image: SPEN
Fake: Fake:
-EmitInfantryOnSell: -EmitInfantryOnSell:
Power:
Amount: -2
-MustBeDestroyed: -MustBeDestroyed:
DOMF: DOMF:
Inherits: ^Building Inherits: ^Building
Valued: Valued:
Cost: 50 Cost: 200
Tooltip: Tooltip:
Icon: fake-icon Icon: fake-icon
Name: Fake Radar Dome Name: Fake Radar Dome
Description: Looks like a Radar Dome. Description: Looks like a Radar Dome.
GenericName: Radar Dome
GenericVisibility: Enemy
GenericStancePrefix: False
Buildable: Buildable:
BuildPaletteOrder: 930 BuildPaletteOrder: 930
Queue: Defense Queue: Defense
Prerequisites: ~disabled Prerequisites: ~structures.alliesvanilla, ~techlevel.medium
Building: Building:
Footprint: xx xx Footprint: xx xx
Dimensions: 2,2 Dimensions: 2,2
-GivesBuildableArea: -GivesBuildableArea:
Health: Health:
HP: 30 HP: 100
RevealsShroud: RevealsShroud:
Range: 4c0 Range: 4c0
Bib: Bib:
@@ -1302,8 +1594,6 @@ DOMF:
Image: DOME Image: DOME
Fake: Fake:
-EmitInfantryOnSell: -EmitInfantryOnSell:
Power:
Amount: -2
-MustBeDestroyed: -MustBeDestroyed:
SBAG: SBAG:

View File

@@ -420,7 +420,7 @@ MNLY.AP:
Mine: MINP Mine: MINP
MineImmune: MineImmune:
LimitedAmmo: LimitedAmmo:
Ammo: 3 Ammo: 5
DetectCloaked: DetectCloaked:
Range: 5 Range: 5
CloakTypes: Mine CloakTypes: Mine
@@ -454,7 +454,7 @@ MNLY.AT:
Mine: MINV Mine: MINV
MineImmune: MineImmune:
LimitedAmmo: LimitedAmmo:
Ammo: 3 Ammo: 5
DetectCloaked: DetectCloaked:
Range: 5 Range: 5
CloakTypes: Mine CloakTypes: Mine
@@ -635,7 +635,7 @@ DTRK:
Buildable: Buildable:
Queue: Vehicle Queue: Vehicle
BuildPaletteOrder: 170 BuildPaletteOrder: 170
Prerequisites: stek, ~vehicles.soviet, ~techlevel.unrestricted Prerequisites: stek, ~vehicles.ukraine, ~techlevel.unrestricted
Valued: Valued:
Cost: 2500 Cost: 2500
Tooltip: Tooltip:
@@ -666,7 +666,7 @@ CTNK:
Buildable: Buildable:
Queue: Vehicle Queue: Vehicle
BuildPaletteOrder: 210 BuildPaletteOrder: 210
Prerequisites: atek, pdox, ~vehicles.allies, ~techlevel.unrestricted Prerequisites: atek, pdox, ~vehicles.germany, ~techlevel.unrestricted
Valued: Valued:
Cost: 1350 Cost: 1350
Tooltip: Tooltip:
@@ -704,9 +704,9 @@ QTNK:
Buildable: Buildable:
Queue: Vehicle Queue: Vehicle
BuildPaletteOrder: 200 BuildPaletteOrder: 200
Prerequisites: fix, stek, ~vehicles.soviet, ~techlevel.unrestricted Prerequisites: fix, stek, ~vehicles.russia, ~techlevel.unrestricted
Valued: Valued:
Cost: 2500 Cost: 2000
Tooltip: Tooltip:
Name: MAD Tank Name: MAD Tank
Description: Deals seismic damage to nearby vehicles\nand structures.\n Strong vs Vehicles, Buildings\n Weak vs Infantry Description: Deals seismic damage to nearby vehicles\nand structures.\n Strong vs Vehicles, Buildings\n Weak vs Infantry
@@ -734,7 +734,7 @@ STNK:
Buildable: Buildable:
Queue: Vehicle Queue: Vehicle
BuildPaletteOrder: 140 BuildPaletteOrder: 140
Prerequisites: atek, ~vehicles.allies, ~techlevel.unrestricted Prerequisites: atek, ~vehicles.england, ~techlevel.unrestricted
Valued: Valued:
Cost: 1350 Cost: 1350
Tooltip: Tooltip:

View File

@@ -95,9 +95,38 @@ World:
Country@0: Country@0:
Name: Allies Name: Allies
Race: allies Race: allies
Side: Allies
Description: Allies: Deception\nSpecial Ability: Can build fake structures
Country@1: Country@1:
Name: England
Race: england
Side: Allies
Description: England: Espionage\nSpecial Unit: British Spy\nSpecial Unit: Phase Transport
Country@2:
Name: France
Race: france
Side: Allies
Description: France: Concealment\nSpecial Structure: Advanced Gap Generator\nSpecial Unit: Mobile Gap Generator
Country@3:
Name: Germany
Race: germany
Side: Allies
Description: Germany: Technology\nSpecial Structure: Advanced Chronosphere\nSpecial Unit: Chrono Tank
Country@4:
Name: Soviet Name: Soviet
Race: soviet Race: soviet
Side: Soviet
Description: Soviet: Infantry\nSpecial Ability: Paradrop\nSpecial Ability: Spy Plane
Country@5:
Name: Russia
Race: russia
Side: Soviet
Description: Russia: Tanks\nSpecial Ability: Armor Airdrop\nSpecial Unit: MAD Tank
Country@6:
Name: Ukraine
Race: ukraine
Side: Soviet
Description: Ukraine: Demolitions\nSpecial Ability: Parabombs\nSpecial Unit: Demolition Truck
DomainIndex: DomainIndex:
SmudgeLayer@SCORCH: SmudgeLayer@SCORCH:
Type: Scorch Type: Scorch
@@ -139,12 +168,12 @@ World:
MPStartUnits@mcvonly: MPStartUnits@mcvonly:
Class: none Class: none
ClassName: MCV Only ClassName: MCV Only
Races: soviet, allies Races: allies, england, france, germany, soviet, russia, ukraine
BaseActor: mcv BaseActor: mcv
MPStartUnits@lightallies: MPStartUnits@lightallies:
Class: light Class: light
ClassName: Light Support ClassName: Light Support
Races: allies Races: allies, england, france, germany
BaseActor: mcv BaseActor: mcv
SupportActors: e1,e1,e1,e3,e3,jeep,1tnk SupportActors: e1,e1,e1,e3,e3,jeep,1tnk
InnerSupportRadius: 3 InnerSupportRadius: 3
@@ -152,7 +181,7 @@ World:
MPStartUnits@lightsoviet: MPStartUnits@lightsoviet:
Class: light Class: light
ClassName: Light Support ClassName: Light Support
Races: soviet Races: soviet, russia, ukraine
BaseActor: mcv BaseActor: mcv
SupportActors: e1,e1,e1,e3,e3,apc,ftrk SupportActors: e1,e1,e1,e3,e3,apc,ftrk
InnerSupportRadius: 3 InnerSupportRadius: 3
@@ -160,7 +189,7 @@ World:
MPStartUnits@heavyallies: MPStartUnits@heavyallies:
Class: heavy Class: heavy
ClassName: Heavy Support ClassName: Heavy Support
Races: allies Races: allies, england, france, germany
BaseActor: mcv BaseActor: mcv
SupportActors: e1,e1,e1,e3,e3,jeep,1tnk,2tnk,2tnk,2tnk SupportActors: e1,e1,e1,e3,e3,jeep,1tnk,2tnk,2tnk,2tnk
InnerSupportRadius: 3 InnerSupportRadius: 3
@@ -168,7 +197,7 @@ World:
MPStartUnits@heavysoviet: MPStartUnits@heavysoviet:
Class: heavy Class: heavy
ClassName: Heavy Support ClassName: Heavy Support
Races: soviet Races: soviet, russia, ukraine
BaseActor: mcv BaseActor: mcv
SupportActors: e1,e1,e1,e3,e3,apc,ftrk,3tnk,3tnk SupportActors: e1,e1,e1,e3,e3,apc,ftrk,3tnk,3tnk
InnerSupportRadius: 3 InnerSupportRadius: 3

View File

@@ -141,6 +141,10 @@ beacon:
Start: 0 Start: 0
Length: * Length: *
Offset: 0,-42 Offset: 0,-42
armordropicon: lores-pinficon
Start: 0
Length: *
Offset: 0,-42
clock: beaconclock clock: beaconclock
Start: 0 Start: 0
Length: * Length: *
@@ -516,6 +520,8 @@ icon:
Start: 0 Start: 0
paratroopers: pinficon paratroopers: pinficon
Start: 0 Start: 0
armordrop: armordropicon
Start: 0
gps: gpssicon gps: gpssicon
Start: 0 Start: 0
parabombs: pbmbicon parabombs: pbmbicon

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -1,7 +1,12 @@
GenericVoice: GenericVoice:
Variants: Variants:
soviet: .r01,.r03
allies: .v01,.v03 allies: .v01,.v03
england: .v01,.v03
france: .v01,.v03
germany: .v01,.v03
soviet: .r01,.r03
russia: .r01,.r03
ukraine: .r01,.r03
Voices: Voices:
Select: await1,ready,report1,yessir1 Select: await1,ready,report1,yessir1
Move: ackno,affirm1,noprob,overout,ritaway,roger,ugotit Move: ackno,affirm1,noprob,overout,ritaway,roger,ugotit
@@ -12,8 +17,13 @@ GenericVoice:
VehicleVoice: VehicleVoice:
Variants: Variants:
soviet: .r00,.r02
allies: .v00,.v02 allies: .v00,.v02
england: .v00,.v02
france: .v00,.v02
germany: .v00,.v02
soviet: .r00,.r02
russia: .r00,.r02
ukraine: .r00,.r02
Voices: Voices:
Select: vehic1,yessir1,report1,await1 Select: vehic1,yessir1,report1,await1
Move: ackno,affirm1 Move: ackno,affirm1

View File

@@ -1109,9 +1109,8 @@ ParaBomb:
Velocity: 43 Velocity: 43
Acceleration: 0 Acceleration: 0
Warhead@1Dam: SpreadDamage Warhead@1Dam: SpreadDamage
Spread: 256 Spread: 768
Damage: 50 Damage: 300
Falloff: 1000, 368, 135, 50, 18, 7, 0
DeathType: 4 DeathType: 4
Versus: Versus:
None: 30 None: 30