Merge pull request #11311 from GraionDilach/expand-custombuildtime

Revamp custom build times.
This commit is contained in:
Oliver Brakmann
2016-08-21 12:12:27 +02:00
committed by GitHub
21 changed files with 215 additions and 194 deletions

View File

@@ -323,7 +323,6 @@
<Compile Include="Traits\Crates\RevealMapCrateAction.cs" />
<Compile Include="Traits\Crates\SupportPowerCrateAction.cs" />
<Compile Include="Traits\Crushable.cs" />
<Compile Include="Traits\CustomBuildTimeValue.cs" />
<Compile Include="Traits\CustomSellValue.cs" />
<Compile Include="Traits\CustomSelectionSize.cs" />
<Compile Include="Traits\DamagedByTerrain.cs" />

View File

@@ -64,14 +64,53 @@ namespace OpenRA.Mods.Common.Scripting
return a;
}
[Desc("Returns the build time (in ticks) of the requested unit type.")]
public int BuildTime(string type)
[Desc("Returns the build time (in ticks) of the requested unit type.",
"An optional second value can be used to exactly specify the producing queue type.")]
public int BuildTime(string type, string queue = null)
{
ActorInfo ai;
if (!Context.World.Map.Rules.Actors.TryGetValue(type, out ai))
throw new LuaException("Unknown actor type '{0}'".F(type));
return ai.GetBuildTime();
var bi = ai.TraitInfoOrDefault<BuildableInfo>();
if (bi == null)
return 0;
var time = bi.BuildDuration;
if (time == -1)
{
var valued = ai.TraitInfoOrDefault<ValuedInfo>();
if (valued == null)
return 0;
else
time = valued.Cost;
}
int pbi;
if (queue != null)
{
var pqueue = Context.World.Map.Rules.Actors.Values.SelectMany(a => a.TraitInfos<ProductionQueueInfo>()
.Where(x => x.Type == queue)).FirstOrDefault();
if (pqueue == null)
throw new LuaException("The specified queue '{0}' does not exist!".F(queue));
pbi = pqueue.BuildDurationModifier;
}
else
{
var pqueue = Context.World.Map.Rules.Actors.Values.SelectMany(a => a.TraitInfos<ProductionQueueInfo>()
.Where(x => bi.Queue.Contains(x.Type))).FirstOrDefault();
if (pqueue == null)
throw new LuaException("No actors can produce actor '{0}'!".F(type));
pbi = pqueue.BuildDurationModifier;
}
time = time * bi.BuildDurationModifier * pbi / 10000;
return time;
}
[Desc("Returns the cruise altitude of the requested unit type (zero if it is ground-based).")]

View File

@@ -37,6 +37,12 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Palette used for the production icon.")]
[PaletteReference] public readonly string IconPalette = "chrome";
[Desc("Base build time in frames (-1 indicates to use the unit's Value).")]
public readonly int BuildDuration = -1;
[Desc("Percentage modifier to apply to the build duration.")]
public readonly int BuildDurationModifier = 60;
// TODO: UI fluff; doesn't belong here
public readonly int BuildPaletteOrder = 9999;
}

View File

@@ -1,40 +0,0 @@
#region Copyright & License Information
/*
* Copyright 2007-2016 The OpenRA Developers (see AUTHORS)
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using OpenRA.Traits;
namespace OpenRA.Mods.Common.Traits
{
[Desc("Overrides the build time calculated by actor value.")]
public class CustomBuildTimeValueInfo : TraitInfo<CustomBuildTimeValue>
{
[FieldLoader.Require]
[Desc("Measured in ticks.")]
public readonly int Value = 0;
}
public class CustomBuildTimeValue { }
public static class CustomBuildTimeValueExts
{
const int FramesPerMin = 25 * 60;
public static int GetBuildTime(this ActorInfo a)
{
var csv = a.TraitInfoOrDefault<CustomBuildTimeValueInfo>();
if (csv != null)
return csv.Value;
var cost = a.HasTraitInfo<ValuedInfo>() ? a.TraitInfo<ValuedInfo>().Cost : 0;
return cost * FramesPerMin / 1000;
}
}
}

View File

@@ -118,21 +118,16 @@ namespace OpenRA.Mods.Common.Traits
return false;
}
public override int GetBuildTime(string unitString)
{
return GetBuildTime(self.World.Map.Rules.Actors[unitString]);
}
public override int GetBuildTime(ActorInfo unit, BuildableInfo bi = null)
public override int GetBuildTime(ActorInfo unit, BuildableInfo bi)
{
if (developerMode.FastBuild)
return 0;
var time = unit.GetBuildTime() * Info.BuildSpeed / 100;
var time = base.GetBuildTime(unit, bi);
if (info.SpeedUp)
{
var type = (bi ?? unit.TraitInfo<BuildableInfo>()).BuildAtProductionType ?? info.Type;
var type = bi.BuildAtProductionType ?? info.Type;
var selfsameProductionsCount = self.World.ActorsWithTrait<Production>()
.Count(p => p.Actor.Owner == self.Owner && p.Trait.Info.Produces.Contains(type));

View File

@@ -35,7 +35,7 @@ namespace OpenRA.Mods.Common.Traits
public readonly bool Sticky = true;
[Desc("This percentage value is multiplied with actor cost to translate into build time (lower means faster).")]
public readonly int BuildSpeed = 40;
public readonly int BuildDurationModifier = 100;
[Desc("The build time is multiplied with this value on low power.")]
public readonly int LowPowerSlowdown = 3;
@@ -309,17 +309,19 @@ namespace OpenRA.Mods.Common.Traits
}
}
public virtual int GetBuildTime(string unitString)
{
return GetBuildTime(self.World.Map.Rules.Actors[unitString]);
}
public virtual int GetBuildTime(ActorInfo unit, BuildableInfo bi = null)
public virtual int GetBuildTime(ActorInfo unit, BuildableInfo bi)
{
if (developerMode.FastBuild)
return 0;
var time = unit.GetBuildTime() * Info.BuildSpeed / 100;
var time = bi.BuildDuration;
if (time == -1)
{
var valued = unit.TraitInfoOrDefault<ValuedInfo>();
time = valued != null ? valued.Cost : 0;
}
time = time * bi.BuildDurationModifier * Info.BuildDurationModifier / 10000;
return time;
}
@@ -415,6 +417,8 @@ namespace OpenRA.Mods.Common.Traits
public bool Started { get; private set; }
public int Slowdown { get; private set; }
readonly ActorInfo ai;
readonly BuildableInfo bi;
readonly PowerManager pm;
public ProductionItem(ProductionQueue queue, string item, int cost, PowerManager pm, Action onComplete)
@@ -425,13 +429,15 @@ namespace OpenRA.Mods.Common.Traits
OnComplete = onComplete;
Queue = queue;
this.pm = pm;
ai = Queue.Actor.World.Map.Rules.Actors[Item];
bi = ai.TraitInfo<BuildableInfo>();
}
public void Tick(PlayerResources pr)
{
if (!Started)
{
var time = Queue.GetBuildTime(Item);
var time = Queue.GetBuildTime(ai, bi);
if (time > 0)
RemainingTime = TotalTime = time;

View File

@@ -292,7 +292,7 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
// DisplayTimer was replaced by DisplayTimerStances
if (engineVersion < 20160710)
if (engineVersion < 20160820)
{
if (node.Key == "DisplayTimer")
{
@@ -305,6 +305,39 @@ namespace OpenRA.Mods.Common.UtilityCommands
}
}
if (engineVersion < 20160821)
{
// Shifted custom build time properties to Buildable
if (depth == 0)
{
var cbtv = node.Value.Nodes.FirstOrDefault(n => n.Key == "CustomBuildTimeValue");
if (cbtv != null)
{
var bi = node.Value.Nodes.FirstOrDefault(n => n.Key == "Buildable");
if (bi == null)
node.Value.Nodes.Add(bi = new MiniYamlNode("Buildable", ""));
var value = cbtv.Value.Nodes.First(n => n.Key == "Value");
value.Key = "BuildDuration";
bi.Value.Nodes.Add(value);
bi.Value.Nodes.Add(new MiniYamlNode("BuildDurationModifier", "40"));
}
node.Value.Nodes.RemoveAll(n => n.Key == "CustomBuildTimeValue");
node.Value.Nodes.RemoveAll(n => n.Key == "-CustomBuildTimeValue");
}
// rename ProductionQueue.BuildSpeed
if (node.Key == "BuildSpeed")
{
node.Key = "BuildDurationModifier";
var oldValue = FieldLoader.GetValue<int>(node.Key, node.Value.Value);
oldValue = oldValue * 100 / 40;
node.Value.Value = oldValue.ToString();
}
}
UpgradeActorRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
}

View File

@@ -25,7 +25,6 @@ FACT:
Type: Building.GDI
Factions: gdi
Group: Building
BuildSpeed: 40
LowPowerSlowdown: 2
QueuedAudio: Building
ReadyAudio: ConstructionComplete
@@ -33,7 +32,6 @@ FACT:
Type: Building.Nod
Factions: nod
Group: Building
BuildSpeed: 40
LowPowerSlowdown: 2
QueuedAudio: Building
ReadyAudio: ConstructionComplete
@@ -41,7 +39,6 @@ FACT:
Type: Defence.GDI
Factions: gdi
Group: Defence
BuildSpeed: 40
LowPowerSlowdown: 3
QueuedAudio: Building
ReadyAudio: ConstructionComplete
@@ -49,7 +46,6 @@ FACT:
Type: Defence.Nod
Factions: nod
Group: Defence
BuildSpeed: 40
LowPowerSlowdown: 3
QueuedAudio: Building
ReadyAudio: ConstructionComplete
@@ -260,7 +256,6 @@ PYLE:
Type: Infantry.GDI
Group: Infantry
RequireOwner: false
BuildSpeed: 40
LowPowerSlowdown: 3
ProductionBar:
Power:
@@ -301,7 +296,6 @@ HAND:
Type: Infantry.Nod
Group: Infantry
RequireOwner: false
BuildSpeed: 40
LowPowerSlowdown: 3
ProductionBar:
Power:
@@ -347,7 +341,6 @@ AFLD:
Type: Vehicle.Nod
Group: Vehicle
RequireOwner: false
BuildSpeed: 40
LowPowerSlowdown: 3
ReadyAudio:
ProductionBar:
@@ -394,7 +387,6 @@ WEAP:
Type: Vehicle.GDI
RequireOwner: false
Group: Vehicle
BuildSpeed: 40
LowPowerSlowdown: 3
ProductionBar:
Power:
@@ -432,13 +424,11 @@ HPAD:
Type: Aircraft.GDI
Factions: gdi
Group: Aircraft
BuildSpeed: 40
LowPowerSlowdown: 3
ProductionQueue@Nod:
Type: Aircraft.Nod
Factions: nod
Group: Aircraft
BuildSpeed: 40
LowPowerSlowdown: 3
ProductionBar@GDI:
ProductionType: Aircraft.GDI
@@ -652,8 +642,6 @@ GUN:
Inherits: ^Defense
Valued:
Cost: 600
CustomBuildTimeValue:
Value: 1440
Tooltip:
Name: Turret
Description: Basic Anti-Tank base defense.\n Strong vs Tanks, vehicles\n Weak vs Infantry
@@ -661,6 +649,8 @@ GUN:
BuildPaletteOrder: 45
Prerequisites: barracks
Queue: Defence.GDI, Defence.Nod
BuildDuration: 1440
BuildDurationModifier: 40
Building:
Health:
HP: 400
@@ -693,8 +683,6 @@ SAM:
Inherits: ^Defense
Valued:
Cost: 650
CustomBuildTimeValue:
Value: 1700
Tooltip:
Name: SAM Site
Description: Anti-Aircraft base defense.\n Strong vs Aircraft\n Cannot target Ground units.
@@ -702,6 +690,8 @@ SAM:
BuildPaletteOrder: 50
Prerequisites: hand
Queue: Defence.Nod
BuildDuration: 1700
BuildDurationModifier: 40
Building:
Footprint: xx
Dimensions: 2,1
@@ -735,8 +725,6 @@ OBLI:
Inherits: ^Defense
Valued:
Cost: 1500
CustomBuildTimeValue:
Value: 3120
Tooltip:
Name: Obelisk of Light
Description: Advanced base defense.\nRequires power to operate.\n Strong vs all Ground units\n Cannot target Aircraft
@@ -744,6 +732,8 @@ OBLI:
BuildPaletteOrder: 60
Prerequisites: tmpl, ~techlevel.high
Queue: Defence.Nod
BuildDuration: 3120
BuildDurationModifier: 40
Selectable:
Bounds: 24,24
SelectionDecorations:
@@ -777,8 +767,6 @@ GTWR:
Inherits: ^Defense
Valued:
Cost: 600
CustomBuildTimeValue:
Value: 1440
Tooltip:
Name: Guard Tower
Description: Basic defensive structure.\n Strong vs Infantry\n Weak vs Tanks
@@ -786,6 +774,8 @@ GTWR:
BuildPaletteOrder: 40
Prerequisites: barracks
Queue: Defence.GDI, Defence.Nod
BuildDuration: 1440
BuildDurationModifier: 40
Building:
Health:
HP: 400
@@ -812,8 +802,6 @@ ATWR:
Inherits: ^Defense
Valued:
Cost: 1000
CustomBuildTimeValue:
Value: 2880
Tooltip:
Name: Advanced Guard Tower
Description: All-purpose defensive structure.\n Strong vs Aircraft, Tanks\n Weak vs Infantry
@@ -821,6 +809,8 @@ ATWR:
BuildPaletteOrder: 60
Prerequisites: anyhq, ~techlevel.medium
Queue: Defence.GDI
BuildDuration: 2880
BuildDurationModifier: 40
Selectable:
Bounds: 24,24
SelectionDecorations:
@@ -904,8 +894,6 @@ BRIK:
Inherits: ^Wall
Valued:
Cost: 150
CustomBuildTimeValue:
Value: 500
CustomSellValue:
Value: 0
Tooltip:
@@ -915,6 +903,8 @@ BRIK:
BuildPaletteOrder: 30
Prerequisites: vehicleproduction
Queue: Defence.GDI, Defence.Nod
BuildDuration: 500
BuildDurationModifier: 40
Health:
HP: 250
Armor:

View File

@@ -69,7 +69,6 @@ BIO:
Type: Biolab
Group: Infantry
RequireOwner: false
BuildSpeed: 40
LowPowerSlowdown: 3
ProductionBar:
RallyPoint:

View File

@@ -2,8 +2,6 @@ carryall.reinforce:
Inherits: ^Plane
Valued:
Cost: 1100
CustomBuildTimeValue:
Value: 648
Tooltip:
Name: Carryall
Description: Large winged, planet-bound ship\n Automatically lifts harvesters.
@@ -40,6 +38,9 @@ carryall.reinforce:
Step: 5
Delay: 3
HealIfBelow: 50
Buildable:
BuildDuration: 648
BuildDurationModifier: 40
carryall:
Inherits: carryall.reinforce

View File

@@ -3,10 +3,10 @@ light_inf:
Buildable:
Queue: Infantry
BuildPaletteOrder: 10
BuildDuration: 54
BuildDurationModifier: 40
Valued:
Cost: 50
CustomBuildTimeValue:
Value: 54
Tooltip:
Name: Light Infantry
Description: General-purpose infantry\n Strong vs Infantry\n Weak vs Vehicles, Artillery
@@ -26,10 +26,10 @@ engineer:
Queue: Infantry
BuildPaletteOrder: 50
Prerequisites: upgrade.barracks, ~techlevel.medium
BuildDuration: 108
BuildDurationModifier: 40
Valued:
Cost: 400
CustomBuildTimeValue:
Value: 108
Tooltip:
Name: Engineer
Description: Infiltrates and captures enemy structures\n Strong vs Buildings\n Weak vs Everything
@@ -55,10 +55,10 @@ trooper:
Queue: Infantry
BuildPaletteOrder: 20
Prerequisites: upgrade.barracks, ~techlevel.medium
BuildDuration: 73
BuildDurationModifier: 40
Valued:
Cost: 90
CustomBuildTimeValue:
Value: 73
Tooltip:
Name: Trooper
Description: Anti-tank/Anti-aircraft infantry\n Strong vs Tanks, Aircraft\n Weak vs Infantry, Artillery
@@ -82,10 +82,10 @@ thumper:
Queue: Infantry
BuildPaletteOrder: 60
Prerequisites: upgrade.barracks, ~techlevel.high
BuildDuration: 108
BuildDurationModifier: 40
Valued:
Cost: 200
CustomBuildTimeValue:
Value: 108
Tooltip:
Name: Thumper
Description: Attracts nearby worms\n Unarmed
@@ -171,10 +171,10 @@ grenadier:
Queue: Infantry
BuildPaletteOrder: 80
Prerequisites: ~barracks.atreides, upgrade.barracks, high_tech_factory, ~techlevel.medium
BuildDuration: 81 ## Wasn't converted, copied from Sardauker who has same value in TibEd.
BuildDurationModifier: 40
Valued:
Cost: 80
CustomBuildTimeValue:
Value: 81 ## Wasn't converted, copied from Sardauker who has same value in TibEd.
Tooltip:
Name: Grenadier
Description: Infantry armed with grenades. \n Strong vs Buildings, Infantry\n Weak vs Vehicles
@@ -200,10 +200,10 @@ sardaukar:
Queue: Infantry
BuildPaletteOrder: 80
Prerequisites: ~barracks.harkonnen, palace, ~techlevel.high
BuildDuration: 81
BuildDurationModifier: 40
Valued:
Cost: 200
CustomBuildTimeValue:
Value: 81
Tooltip:
Name: Sardaukar
Description: Elite assault infantry\n Strong vs Infantry, Vehicles\n Weak vs Artillery

View File

@@ -192,10 +192,10 @@ upgrade.conyard:
Prerequisites: construction_yard
Queue: Upgrade
BuildLimit: 1
BuildDuration: 590
BuildDurationModifier: 40
Valued:
Cost: 1000
CustomBuildTimeValue:
Value: 590
RenderSprites:
Image: conyard.harkonnen
FactionImages:
@@ -214,10 +214,10 @@ upgrade.barracks:
Prerequisites: barracks
Queue: Upgrade
BuildLimit: 1
BuildDuration: 290
BuildDurationModifier: 40
Valued:
Cost: 500
CustomBuildTimeValue:
Value: 290
RenderSprites:
Image: barracks.harkonnen
FactionImages:
@@ -237,10 +237,10 @@ upgrade.light:
Prerequisites: light_factory
Queue: Upgrade
BuildLimit: 1
BuildDuration: 215
BuildDurationModifier: 40
Valued:
Cost: 400
CustomBuildTimeValue:
Value: 215
RenderSprites:
Image: light.harkonnen
FactionImages:
@@ -260,10 +260,10 @@ upgrade.heavy:
Prerequisites: heavy_factory
Queue: Upgrade
BuildLimit: 1
BuildDuration: 380
BuildDurationModifier: 40
Valued:
Cost: 800
CustomBuildTimeValue:
Value: 380
RenderSprites:
Image: heavy.harkonnen
FactionImages:
@@ -283,10 +283,10 @@ upgrade.hightech:
Prerequisites: ~hightech.atreides, ~techlevel.superweapons
Queue: Upgrade
BuildLimit: 1
BuildDuration: 720
BuildDurationModifier: 40
Valued:
Cost: 1500
CustomBuildTimeValue:
Value: 720
RenderSprites:
Image: hightech.atreides
ProvidesPrerequisite@upgradename:

View File

@@ -3,7 +3,7 @@ Player:
TechTree:
ClassicProductionQueue@Building:
Type: Building
BuildSpeed: 100
BuildDurationModifier: 250
LowPowerSlowdown: 3
QueuedAudio: Building
ReadyAudio: BuildingReady
@@ -11,7 +11,7 @@ Player:
SpeedUp: true
ClassicProductionQueue@Upgrade:
Type: Upgrade
BuildSpeed: 100
BuildDurationModifier: 250
LowPowerSlowdown: 0
QueuedAudio: Upgrading
ReadyAudio: NewOptions
@@ -19,34 +19,34 @@ Player:
SpeedUp: true
ClassicProductionQueue@Infantry:
Type: Infantry
BuildSpeed: 100
BuildDurationModifier: 250
LowPowerSlowdown: 3
BlockedAudio: NoRoom
SpeedUp: true
ClassicProductionQueue@Vehicle:
Type: Vehicle
BuildSpeed: 100
BuildDurationModifier: 250
LowPowerSlowdown: 3
QueuedAudio: Building
BlockedAudio: NoRoom
SpeedUp: true
ClassicProductionQueue@Armor:
Type: Armor
BuildSpeed: 100
BuildDurationModifier: 250
LowPowerSlowdown: 3
QueuedAudio: Building
BlockedAudio: NoRoom
SpeedUp: true
ClassicProductionQueue@Starport:
Type: Starport
BuildSpeed: 85
BuildDurationModifier: 212
LowPowerSlowdown: 0
BlockedAudio: NoRoom
QueuedAudio: OrderPlaced
ReadyAudio:
ClassicProductionQueue@Aircraft:
Type: Aircraft
BuildSpeed: 125
BuildDurationModifier: 312
LowPowerSlowdown: 3
QueuedAudio: Building
BlockedAudio: NoRoom

View File

@@ -26,8 +26,9 @@ concretea:
Dimensions: 2,2
Valued:
Cost: 20
CustomBuildTimeValue:
Value: 54
Buildable:
BuildDuration: 54
BuildDurationModifier: 40
concreteb:
Inherits: ^concrete
@@ -36,10 +37,10 @@ concreteb:
Dimensions: 3,3
Valued:
Cost: 50
CustomBuildTimeValue:
Value: 81
Buildable:
Prerequisites: construction_yard, upgrade.conyard
BuildDuration: 81
BuildDurationModifier: 40
construction_yard:
Inherits: ^Building
@@ -111,12 +112,12 @@ wind_trap:
Queue: Building
Prerequisites: construction_yard
BuildPaletteOrder: 10
BuildDuration: 180
BuildDurationModifier: 40
Selectable:
Bounds: 64,64
Valued:
Cost: 225
CustomBuildTimeValue:
Value: 180
Tooltip:
Name: Wind Trap
Description: Provides power for other structures
@@ -150,12 +151,12 @@ barracks:
Prerequisites: construction_yard, wind_trap
Queue: Building
BuildPaletteOrder: 40
BuildDuration: 231
BuildDurationModifier: 40
Selectable:
Bounds: 64,64
Valued:
Cost: 225
CustomBuildTimeValue:
Value: 231
Tooltip:
Name: Barracks
Description: Trains infantry
@@ -225,12 +226,12 @@ refinery:
Prerequisites: construction_yard, wind_trap
Queue: Building
BuildPaletteOrder: 20
BuildDuration: 540
BuildDurationModifier: 40
Selectable:
Bounds: 96,64
Valued:
Cost: 1500
CustomBuildTimeValue:
Value: 540
Tooltip:
Name: Spice Refinery
Description: Harvesters unload Spice here for processing
@@ -280,12 +281,12 @@ silo:
Prerequisites: construction_yard, refinery
Queue: Building
BuildPaletteOrder: 30
BuildDuration: 135
BuildDurationModifier: 40
Selectable:
Bounds: 32,32
Valued:
Cost: 120
CustomBuildTimeValue:
Value: 135
Tooltip:
Name: Silo
Description: Stores excess harvested Spice
@@ -327,12 +328,12 @@ light_factory:
Prerequisites: construction_yard, refinery
Queue: Building
BuildPaletteOrder: 70
BuildDuration: 277
BuildDurationModifier: 40
Selectable:
Bounds: 96,64
Valued:
Cost: 500
CustomBuildTimeValue:
Value: 277
Tooltip:
Name: Light Factory
Description: Produces light vehicles
@@ -406,12 +407,12 @@ heavy_factory:
Prerequisites: construction_yard, refinery
Queue: Building
BuildPaletteOrder: 100
BuildDuration: 648
BuildDurationModifier: 40
Selectable:
Bounds: 96,68,0,12
Valued:
Cost: 1000
CustomBuildTimeValue:
Value: 648
Tooltip:
Name: Heavy Factory
Description: Produces heavy vehicles
@@ -492,12 +493,12 @@ outpost:
Prerequisites: construction_yard, barracks, ~techlevel.medium
Queue: Building
BuildPaletteOrder: 50
BuildDuration: 270
BuildDurationModifier: 40
Selectable:
Bounds: 96,72,0,-8
Valued:
Cost: 750
CustomBuildTimeValue:
Value: 270
Tooltip:
Name: Outpost
Description: Provides a radar map of the battlefield\n Requires power to operate
@@ -535,10 +536,10 @@ starport:
Prerequisites: construction_yard, heavy_factory, outpost, ~techlevel.high
Queue: Building
BuildPaletteOrder: 80
BuildDuration: 540
BuildDurationModifier: 40
Valued:
Cost: 1500
CustomBuildTimeValue:
Value: 540
Building:
Footprint: xxx x=x =x=
Dimensions: 3,3
@@ -605,13 +606,13 @@ wall:
Queue: Building
Prerequisites: construction_yard, barracks
BuildPaletteOrder: 60
BuildDuration: 54
BuildDurationModifier: 40
SoundOnDamageTransition:
DamagedSounds:
DestroyedSounds: EXPLSML4.WAV
Valued:
Cost: 20
CustomBuildTimeValue:
Value: 54
CustomSellValue:
Value: 0
Tooltip:
@@ -657,10 +658,10 @@ medium_gun_turret:
Queue: Building
Prerequisites: construction_yard, barracks
BuildPaletteOrder: 90
BuildDuration: 231
BuildDurationModifier: 40
Valued:
Cost: 550
CustomBuildTimeValue:
Value: 231
Tooltip:
Name: Gun Turret
Description: Defensive structure\n Strong vs Tanks\n Weak vs Infantry, Aircraft
@@ -699,10 +700,10 @@ large_gun_turret:
Queue: Building
Prerequisites: construction_yard, outpost, upgrade.conyard, ~techlevel.medium
BuildPaletteOrder: 120
BuildDuration: 270
BuildDurationModifier: 40
Valued:
Cost: 750
CustomBuildTimeValue:
Value: 270
Tooltip:
Name: Rocket Turret
Description: Defensive structure\n Strong vs Infantry, Aircraft\n Weak vs Tanks\n\n Requires power to operate
@@ -744,10 +745,10 @@ repair_pad:
Queue: Building
Prerequisites: construction_yard, heavy_factory, upgrade.heavy, ~techlevel.medium
BuildPaletteOrder: 130
BuildDuration: 324
BuildDurationModifier: 40
Valued:
Cost: 800
CustomBuildTimeValue:
Value: 324
Tooltip:
Name: Repair Pad
Description: Repairs vehicles\n Allows construction of MCVs
@@ -791,12 +792,12 @@ high_tech_factory:
Prerequisites: construction_yard, outpost, ~techlevel.medium
Queue: Building
BuildPaletteOrder: 110
BuildDuration: 405
BuildDurationModifier: 40
Selectable:
Bounds: 96,68,0,12
Valued:
Cost: 1150
CustomBuildTimeValue:
Value: 405
Tooltip:
Name: High Tech Factory
Description: Unlocks advanced technology
@@ -860,12 +861,12 @@ research_centre:
Queue: Building
Prerequisites: construction_yard, outpost, heavy_factory, upgrade.heavy, ~techlevel.high
BuildPaletteOrder: 140
BuildDuration: 270
BuildDurationModifier: 40
Selectable:
Bounds: 96,64,0,16
Valued:
Cost: 1000
CustomBuildTimeValue:
Value: 270
Tooltip:
Name: Ix Lab
Description: Unlocks experimental tanks
@@ -900,12 +901,12 @@ palace:
Prerequisites: construction_yard, research_centre, ~techlevel.high
Queue: Building
BuildPaletteOrder: 150
BuildDuration: 810
BuildDurationModifier: 40
Selectable:
Bounds: 96,96
Valued:
Cost: 1600
CustomBuildTimeValue:
Value: 810
Tooltip:
Name: Palace
Description: Unlocks elite infantry

View File

@@ -4,10 +4,10 @@ mcv:
Prerequisites: repair_pad, upgrade.heavy, ~techlevel.medium
Queue: Armor
BuildPaletteOrder: 110
BuildDuration: 648
BuildDurationModifier: 40
Valued:
Cost: 2000
CustomBuildTimeValue:
Value: 648
Tooltip:
Name: Mobile Construction Vehicle
Description: Deploys into another Construction Yard\n Unarmed
@@ -52,10 +52,10 @@ harvester:
Queue: Armor
Prerequisites: refinery
BuildPaletteOrder: 10
BuildDuration: 540
BuildDurationModifier: 40
Valued:
Cost: 1200
CustomBuildTimeValue:
Value: 540
Tooltip:
Name: Spice Harvester
Description: Collects Spice for processing\n Unarmed
@@ -102,10 +102,10 @@ trike:
Queue: Vehicle
BuildPaletteOrder: 10
Prerequisites: ~light.regulartrikes
BuildDuration: 194
BuildDurationModifier: 40
Valued:
Cost: 300
CustomBuildTimeValue:
Value: 194
Tooltip:
Name: Trike
Description: Fast scout\n Strong vs Infantry\n Weak vs Tanks, Aircraft
@@ -142,10 +142,10 @@ quad:
Queue: Vehicle
Prerequisites: upgrade.light, ~techlevel.medium
BuildPaletteOrder: 20
BuildDuration: 277
BuildDurationModifier: 40
Valued:
Cost: 400
CustomBuildTimeValue:
Value: 277
Tooltip:
Name: Missile Quad
Description: Missile Scout\n Strong vs Vehicles\n Weak vs Infantry
@@ -177,10 +177,10 @@ siege_tank:
Queue: Armor
Prerequisites: upgrade.heavy, ~techlevel.medium
BuildPaletteOrder: 50
BuildDuration: 324
BuildDurationModifier: 40
Valued:
Cost: 700
CustomBuildTimeValue:
Value: 324
Tooltip:
Name: Siege Tank
Description: Siege Artillery\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft
@@ -226,10 +226,10 @@ missile_tank:
Queue: Armor
Prerequisites: ~heavy.missiletank, upgrade.heavy, research_centre, ~techlevel.high
BuildPaletteOrder: 60
BuildDuration: 441
BuildDurationModifier: 40
Valued:
Cost: 900
CustomBuildTimeValue:
Value: 441
Mobile:
Speed: 64
TurnSpeed: 5
@@ -261,10 +261,10 @@ sonic_tank:
Queue: Armor
BuildPaletteOrder: 100
Prerequisites: ~heavy.atreides, research_centre, ~techlevel.high
BuildDuration: 486
BuildDurationModifier: 40
Valued:
Cost: 1000
CustomBuildTimeValue:
Value: 486
Tooltip:
Name: Sonic Tank
Description: Fires sonic shocks\n Strong vs Infantry, Vehicles\n Weak vs Artillery, Aircraft
@@ -298,10 +298,10 @@ devastator:
Queue: Armor
BuildPaletteOrder: 100
Prerequisites: ~heavy.harkonnen, research_centre, ~techlevel.high
BuildDuration: 540
BuildDurationModifier: 40
Valued:
Cost: 1050
CustomBuildTimeValue:
Value: 540
Tooltip:
Name: Devastator
Description: Super Heavy Tank\n Strong vs Tanks\n Weak vs Artillery, Aircraft
@@ -343,10 +343,10 @@ raider:
Queue: Vehicle
BuildPaletteOrder: 10
Prerequisites: ~light.ordos
BuildDuration: 194
BuildDurationModifier: 40
Valued:
Cost: 350
CustomBuildTimeValue:
Value: 194
Tooltip:
Name: Raider Trike
Description: Improved Scout\n Strong vs Infantry, Light Vehicles
@@ -380,10 +380,10 @@ stealth_raider:
Buildable:
Prerequisites: ~light.ordos, upgrade.light, high_tech_factory, ~techlevel.medium
BuildPaletteOrder: 30
BuildDuration: 194 ## Copied from Raider, not included in conversion. Both have same "BuildSpeed" in TibEd
BuildDurationModifier: 40
Valued:
Cost: 400
CustomBuildTimeValue:
Value: 194 ## Copied from Raider, not included in conversion. Both have same "BuildSpeed" in TibEd
Tooltip:
Name: Stealth Raider Trike
Description: Invisible Raider Trike\n Strong vs Infantry, Light Vehicles
@@ -402,8 +402,6 @@ deviator:
Inherits: ^Tank
Valued:
Cost: 1000
CustomBuildTimeValue:
Value: 486
Tooltip:
Name: Deviator
Description: Fires a warhead which changes\nthe allegiance of enemy vehicles
@@ -411,6 +409,8 @@ deviator:
Queue: Armor
BuildPaletteOrder: 50
Prerequisites: ~heavy.ordos, research_centre, ~techlevel.high
BuildDuration: 486
BuildDurationModifier: 40
Mobile:
TurnSpeed: 3
Speed: 53
@@ -439,10 +439,10 @@ deviator:
Buildable:
Queue: Armor
BuildPaletteOrder: 40
BuildDuration: 373
BuildDurationModifier: 40
Valued:
Cost: 700
CustomBuildTimeValue:
Value: 373
Tooltip:
Name: Combat Tank
Description: Main Battle Tank\n Strong vs Tanks\n Weak vs Infantry, Aircraft\n \n Atreides: +Range\n Harkonnen: +Health\n Ordos: +Speed

View File

@@ -53,8 +53,6 @@ SILO:
Prerequisites: ~disabled
Player:
ClassicProductionQueue@Building:
BuildSpeed: 40
Shroud:
FogLocked: True
FogEnabled: True

View File

@@ -86,7 +86,7 @@ FORTCRATE:
Player:
ClassicProductionQueue@Infantry:
BuildSpeed: 100
BuildDurationModifier: 250
-EnemyWatcher:
Shroud:
FogLocked: True

View File

@@ -11,9 +11,9 @@ World:
Player:
ClassicProductionQueue@Infantry:
BuildSpeed: 100
BuildDurationModifier: 250
ClassicProductionQueue@Vehicle:
BuildSpeed: 100
BuildDurationModifier: 250
Shroud:
FogLocked: True
FogEnabled: True

View File

@@ -3,38 +3,32 @@ Player:
TechTree:
ClassicProductionQueue@Building:
Type: Building
BuildSpeed: 40
LowPowerSlowdown: 3
QueuedAudio: Building
ReadyAudio: ConstructionComplete
SpeedUp: True
ClassicProductionQueue@Defense:
Type: Defense
BuildSpeed: 40
LowPowerSlowdown: 3
QueuedAudio: Building
ReadyAudio: ConstructionComplete
SpeedUp: True
ClassicProductionQueue@Vehicle:
Type: Vehicle
BuildSpeed: 40
LowPowerSlowdown: 3
QueuedAudio: Building
SpeedUp: True
ClassicProductionQueue@Infantry:
Type: Infantry
BuildSpeed: 40
LowPowerSlowdown: 3
SpeedUp: True
ClassicProductionQueue@Ship:
Type: Ship
BuildSpeed: 40
LowPowerSlowdown: 3
QueuedAudio: Building
SpeedUp: True
ClassicProductionQueue@Aircraft:
Type: Aircraft
BuildSpeed: 40
LowPowerSlowdown: 3
QueuedAudio: Building
SpeedUp: True

View File

@@ -152,10 +152,10 @@ V2RL:
Queue: Vehicle
BuildPaletteOrder: 190
Prerequisites: fix, stek, ~vehicles.soviet, ~techlevel.high
BuildDuration: 2500
BuildDurationModifier: 40
Valued:
Cost: 2000
CustomBuildTimeValue:
Value: 2500
Tooltip:
Name: Mammoth Tank
Description: Big and slow tank, with anti-air capability.\n Strong vs Vehicles, Infantry, Aircraft\n Weak vs Nothing
@@ -288,8 +288,8 @@ MCV:
Queue: Vehicle
BuildPaletteOrder: 90
Prerequisites: fix, ~techlevel.medium
CustomBuildTimeValue:
Value: 2000
BuildDuration: 2000
BuildDurationModifier: 40
Valued:
Cost: 2000
Tooltip:

View File

@@ -4,31 +4,31 @@ Player:
GlobalUpgradeManager:
ClassicProductionQueue@Building:
Type: Building
BuildSpeed: 48
BuildDurationModifier: 120
LowPowerSlowdown: 3
QueuedAudio: Building
ReadyAudio: ConstructionComplete
SpeedUp: True
ClassicProductionQueue@Defense:
Type: Defense
BuildSpeed: 48
BuildDurationModifier: 120
LowPowerSlowdown: 3
QueuedAudio: Building
ReadyAudio: ConstructionComplete
SpeedUp: True
ClassicProductionQueue@Vehicle:
Type: Vehicle
BuildSpeed: 48
BuildDurationModifier: 120
LowPowerSlowdown: 3
SpeedUp: True
ClassicProductionQueue@Infantry:
Type: Infantry
BuildSpeed: 48
BuildDurationModifier: 120
LowPowerSlowdown: 3
SpeedUp: True
ClassicProductionQueue@Air:
Type: Air
BuildSpeed: 48
BuildDurationModifier: 120
LowPowerSlowdown: 3
SpeedUp: True
PlaceBuilding: