More data, and minor updates to Build Calculator for June 2025 Playtest
This commit is contained in:
@@ -25,6 +25,11 @@
|
||||
Build Calculator hasn't been thoroughly tested. Bugs and inaccurate results assumed.
|
||||
<br/>
|
||||
Currently not considering running out of alloy and ether to harvest.
|
||||
<br/>
|
||||
<br/>
|
||||
Build Calculator was built based on a much older version of the game and was only quickly modified for the June 2025 Playtest version, so the above disclaimer is only more true.
|
||||
<br/>
|
||||
Expect even more oddities and invalid data then the above warning implies.
|
||||
</Message>
|
||||
</AlertComponent>
|
||||
|
||||
|
||||
@@ -32,6 +32,11 @@
|
||||
}
|
||||
@if (FilterService.GetFaction() == DataType.FACTION_Aru)
|
||||
{
|
||||
|
||||
<option value="@DataType.IMMORTAL_Atzlan"
|
||||
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Atzlan))">
|
||||
Atzlan
|
||||
</option>
|
||||
<option value="@DataType.IMMORTAL_Mala"
|
||||
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Mala))">
|
||||
Mala
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
|
||||
|
||||
var color = (hotkey.KeyText.Equals("SPACE") && KeyService.IsHoldingSpace()) || KeyService.GetAllPressedKeys().Contains(hotkey.KeyText)
|
||||
? "#0a0f12"
|
||||
? hotkey.GetColor()
|
||||
: hotkey.GetColor();
|
||||
|
||||
var x = hotkey.PositionX * Size;
|
||||
var y = hotkey.PositionY * Size + (hotkey.PositionY == 0 ? 5 : -50);
|
||||
|
||||
var width = Size;
|
||||
var width = Size * hotkey.Width;
|
||||
var height = hotkey.PositionY == 0 ? 50 : Size;
|
||||
|
||||
var borderRadius = hotkey.PositionY == 0 ? 12 : 0;
|
||||
@@ -52,7 +52,7 @@
|
||||
var keyText = hotkey.KeyText.Equals("CAPSLOCK") ? "Caps"
|
||||
: hotkey.KeyText.Equals("CONTROL") ? "Ctrl"
|
||||
: hotkey.KeyText.Equals("SHIFT") ? "Shift"
|
||||
: hotkey.KeyText.Equals("TAB") ? "Tab"
|
||||
: hotkey.KeyText.Equals("X") ? "X"
|
||||
: hotkey.KeyText.Equals("SPACE") ? "Space" : hotkey.KeyText;
|
||||
|
||||
|
||||
@@ -292,9 +292,9 @@
|
||||
controlGroup = "Z";
|
||||
}
|
||||
|
||||
if (KeyService.GetAllPressedKeys().Contains("TAB"))
|
||||
if (KeyService.GetAllPressedKeys().Contains("X"))
|
||||
{
|
||||
controlGroup = "TAB";
|
||||
controlGroup = "X";
|
||||
}
|
||||
|
||||
if (KeyService.GetAllPressedKeys().Contains("C"))
|
||||
|
||||
@@ -20,12 +20,7 @@ public class BuildToCompareModel
|
||||
Faction.Equals(DataType.FACTION_QRath)
|
||||
? DataType.BUPGRADE_MiningLevel2_QRath
|
||||
: DataType.BUPGRADE_MiningLevel2_Aru];
|
||||
|
||||
public EntityModel GetTownHallMining3Entity => DATA.Get()[
|
||||
Faction.Equals(DataType.FACTION_QRath)
|
||||
? DataType.BUPGRADE_MiningLevel3_QRath
|
||||
: DataType.BUPGRADE_MiningLevel3_Aru];
|
||||
|
||||
|
||||
public int NumberOfTownHallExpansions
|
||||
{
|
||||
get => numberOfTownHallExpansions;
|
||||
|
||||
@@ -243,7 +243,7 @@ public abstract class DATA
|
||||
{
|
||||
DataType.IMMORTAL_Atzlan,
|
||||
new EntityModel(DataType.IMMORTAL_Atzlan, EntityType.Immortal)
|
||||
.AddPart(new EntityInfoModel { Name = "Aru" })
|
||||
.AddPart(new EntityInfoModel { Name = "Atzlan" })
|
||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||
.AddPart(new EntityHarvestModel
|
||||
{
|
||||
@@ -747,12 +747,12 @@ public abstract class DATA
|
||||
.AddPart(new EntityMovementModel { Speed = 360, Movement = MovementType.Ground })
|
||||
.AddPart(new EntityWeaponModel
|
||||
{
|
||||
Damage = 25, MediumDamage = 35, HeavyDamage = 45, Range = 800, AttacksPerSecond = 1.429f,
|
||||
Damage = 25, MediumDamage = 35, HeavyDamage = 45, Range = 800, SecondsBetweenAttacks = 1.429f,
|
||||
Targets = TargetType.Ground
|
||||
})
|
||||
.AddPart(new EntityWeaponModel
|
||||
{
|
||||
Damage = 85, MediumDamage = 100, HeavyDamage = 115, Range = 1000, AttacksPerSecond = 2.5f,
|
||||
Damage = 85, MediumDamage = 100, HeavyDamage = 115, Range = 1000, SecondsBetweenAttacks = 2.5f,
|
||||
MinimumRange = 500,
|
||||
Targets = TargetType.Ground
|
||||
})
|
||||
@@ -3650,7 +3650,7 @@ public abstract class DATA
|
||||
Name = "Mining Level 2", Descriptive = DescriptiveType.Upgrade,
|
||||
Description = "Upgrades the nearest resource cluster to allow more workers to mine from it."
|
||||
})
|
||||
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "CONTROL" })
|
||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "CONTROL" })
|
||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||
.AddPart(new EntityRequirementModel
|
||||
{
|
||||
@@ -3664,6 +3664,50 @@ public abstract class DATA
|
||||
TotalAmount = 3600
|
||||
})
|
||||
},
|
||||
{
|
||||
DataType.CONVERSION_EtherSruge_Aru,
|
||||
new EntityModel(DataType.CONVERSION_EtherSruge_Aru, EntityType.Building_Upgrade)
|
||||
.AddPart(new EntityInfoModel
|
||||
{
|
||||
Name = "Ether Surge", Descriptive = DescriptiveType.Upgrade,
|
||||
Description = "Gain 100 Ether over 50 seconds"
|
||||
})
|
||||
.AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "CONTROL" })
|
||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||
.AddPart(new EntityRequirementModel
|
||||
{
|
||||
Id = DataType.BUILDING_Acropolis,
|
||||
Requirement = RequirementType.Morph
|
||||
})
|
||||
.AddPart(new EntityProductionModel { Alloy = 50, Cooldown = 50, RequiresWorker = false })
|
||||
.AddPart(new EntityHarvestModel
|
||||
{
|
||||
HarvestedPerInterval = 5, RequiresWorker = false, Resource = ResourceType.Ether, Slots = 1,
|
||||
TotalAmount = 100
|
||||
})
|
||||
},
|
||||
{
|
||||
DataType.CONVERSION_EtherSruge_QRath,
|
||||
new EntityModel(DataType.CONVERSION_EtherSruge_QRath, EntityType.Building_Upgrade)
|
||||
.AddPart(new EntityInfoModel
|
||||
{
|
||||
Name = "Ether Surge", Descriptive = DescriptiveType.Upgrade,
|
||||
Description = "Gain 100 Ether over 50 seconds"
|
||||
})
|
||||
.AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "CONTROL" })
|
||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||
.AddPart(new EntityRequirementModel
|
||||
{
|
||||
Id = DataType.BUILDING_Acropolis,
|
||||
Requirement = RequirementType.Morph
|
||||
})
|
||||
.AddPart(new EntityProductionModel { Alloy = 50, Cooldown = 50, RequiresWorker = false })
|
||||
.AddPart(new EntityHarvestModel
|
||||
{
|
||||
HarvestedPerInterval = 5, RequiresWorker = false, Resource = ResourceType.Ether, Slots = 1,
|
||||
TotalAmount = 100
|
||||
})
|
||||
},
|
||||
|
||||
{
|
||||
DataType.BUILDING_ApostleOfBinding,
|
||||
@@ -3918,7 +3962,7 @@ public abstract class DATA
|
||||
DataType.BUPGRADE_GodHeart,
|
||||
new EntityModel(DataType.BUPGRADE_GodHeart, EntityType.Building_Upgrade)
|
||||
.AddPart(new EntityInfoModel { Name = "God Heart", Descriptive = DescriptiveType.Upgrade })
|
||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "CONTROL" })
|
||||
.AddPart(new EntityHotkeyModel { Hotkey = "A", HotkeyGroup = "CONTROL" })
|
||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||
.AddPart(new EntityVitalityModel
|
||||
{ Health = 3100, DefenseLayer = 900, Armor = ArmorType.Heavy, IsStructure = true })
|
||||
@@ -3944,7 +3988,7 @@ public abstract class DATA
|
||||
Name = "Mining Level 2", Descriptive = DescriptiveType.Upgrade,
|
||||
Description = "Upgrades the nearest resource cluster to allow more workers to mine from it."
|
||||
})
|
||||
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "CONTROL" })
|
||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "CONTROL" })
|
||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||
.AddPart(new EntityRequirementModel
|
||||
{
|
||||
|
||||
@@ -84,10 +84,13 @@ public static class DataType
|
||||
public static string BUILDING_ApostleOfBinding = nameof(BUILDING_ApostleOfBinding);
|
||||
public static string BUILDING_GroveHeart = nameof(BUILDING_GroveHeart);
|
||||
public static string BUILDING_EtherMaw = nameof(BUILDING_EtherMaw);
|
||||
public static string BUPGRADE_MiningLevel2_QRath = "d7beb217-8eaf-4f88-8882-05bd7e0fbebd";
|
||||
public static string BUPGRADE_MiningLevel3_QRath = "2b7d0da9-a897-4d3e-b9bd-3ec4a7c95d2c";
|
||||
public static string BUPGRADE_MiningLevel2_Aru = "ffa76506-470b-4a67-acc6-3dc9686df004";
|
||||
public static string BUPGRADE_MiningLevel3_Aru = "010b3279-472d-4d54-9a85-ebc5c664ee73";
|
||||
|
||||
public static string BUPGRADE_MiningLevel2_QRath = nameof(BUPGRADE_MiningLevel2_QRath);
|
||||
public static string BUPGRADE_MiningLevel2_Aru = nameof(BUPGRADE_MiningLevel2_Aru);
|
||||
public static string CONVERSION_EtherSruge_QRath = nameof(CONVERSION_EtherSruge_QRath);
|
||||
public static string CONVERSION_EtherSruge_Aru = nameof(CONVERSION_EtherSruge_Aru);
|
||||
|
||||
|
||||
public static string BUPGRADE_GodHeart = nameof(BUPGRADE_GodHeart);
|
||||
public static string BUPGRADE_Omnivore = nameof(BUPGRADE_Omnivore);
|
||||
public static string BUILDING_LegionHall = nameof(BUILDING_LegionHall);
|
||||
|
||||
@@ -4,6 +4,12 @@ public enum KeyType
|
||||
{
|
||||
Action,
|
||||
ControlGroup,
|
||||
|
||||
Army,
|
||||
Train,
|
||||
Research,
|
||||
Construct,
|
||||
|
||||
Cancel,
|
||||
Advance,
|
||||
Economy,
|
||||
|
||||
@@ -4,22 +4,31 @@ namespace Model.Hotkeys;
|
||||
|
||||
public class HotkeyModel
|
||||
{
|
||||
public static readonly string[] KeyGroups = { "Z", "1", "2", "TAB", "CONTROL", "SHIFT", "C" };
|
||||
public static readonly string[] HotKeys = { "`", "Q", "W", "E", "R", "A", "S", "F", "X", "V", "CAPSLOCK" };
|
||||
public static readonly string[] KeyGroups = { "Z", "1", "2", "X", "CONTROL", "SHIFT", "C" };
|
||||
public static readonly string[] HotKeys = { "`", "Q", "W", "E", "R", "A", "S", "F", "X", "V", "CAPSLOCK", "TAB" };
|
||||
public string KeyText { get; set; }
|
||||
public KeyType KeyType { get; set; }
|
||||
public int PositionX { get; set; }
|
||||
public int PositionY { get; set; }
|
||||
public bool IsHidden { get; set; }
|
||||
|
||||
public int Width { get; set; } = 1;
|
||||
|
||||
public string GetColor()
|
||||
{
|
||||
return KeyType == KeyType.Action ? "#404146"
|
||||
: KeyType == KeyType.Cancel ? "#621b1b"
|
||||
: KeyType == KeyType.ControlGroup ? "#443512"
|
||||
|
||||
: KeyType == KeyType.Army ? "#443512"
|
||||
: KeyType == KeyType.Train ? "#124443"
|
||||
: KeyType == KeyType.Research ? "#221244"
|
||||
: KeyType == KeyType.Construct ? "#122844"
|
||||
: KeyType == KeyType.Pyre ? "#441212"
|
||||
|
||||
: KeyType == KeyType.Advance ? "#23262c"
|
||||
: KeyType == KeyType.Economy ? "#262c23"
|
||||
: KeyType == KeyType.Pyre ? "#440e2c"
|
||||
|
||||
: "#37393F";
|
||||
}
|
||||
|
||||
@@ -30,45 +39,51 @@ public class HotkeyModel
|
||||
new()
|
||||
{
|
||||
KeyText = "Z",
|
||||
KeyType = KeyType.ControlGroup,
|
||||
PositionX = 0,
|
||||
PositionY = 0
|
||||
KeyType = KeyType.Train,
|
||||
PositionX = 1,
|
||||
PositionY = 3
|
||||
},
|
||||
new()
|
||||
{
|
||||
KeyText = "D",
|
||||
KeyType = KeyType.ControlGroup,
|
||||
PositionX = 1,
|
||||
PositionY = 0
|
||||
KeyType = KeyType.Army,
|
||||
PositionX = 3,
|
||||
PositionY = 2
|
||||
},
|
||||
new()
|
||||
{
|
||||
KeyText = "C",
|
||||
KeyType = KeyType.ControlGroup,
|
||||
PositionX = 2,
|
||||
PositionY = 0
|
||||
KeyType = KeyType.Construct,
|
||||
PositionX = 3,
|
||||
PositionY = 3
|
||||
},
|
||||
new()
|
||||
{
|
||||
KeyText = "V",
|
||||
KeyType = KeyType.Pyre,
|
||||
PositionX = 3,
|
||||
PositionY = 0
|
||||
PositionX = 4,
|
||||
PositionY = 3
|
||||
},
|
||||
new()
|
||||
{
|
||||
KeyText = "TAB",
|
||||
KeyType = KeyType.ControlGroup,
|
||||
PositionX = 4,
|
||||
PositionY = 0
|
||||
KeyText = "X",
|
||||
KeyType = KeyType.Research,
|
||||
PositionX = 2,
|
||||
PositionY = 3
|
||||
},
|
||||
|
||||
|
||||
new()
|
||||
{
|
||||
KeyText = "`",
|
||||
KeyType = KeyType.Cancel,
|
||||
PositionX = 0,
|
||||
PositionY = 0
|
||||
},
|
||||
|
||||
new()
|
||||
{
|
||||
KeyText = "TAB",
|
||||
KeyType = KeyType.Action,
|
||||
PositionX = 0,
|
||||
PositionY = 1
|
||||
},
|
||||
|
||||
@@ -143,7 +158,8 @@ public class HotkeyModel
|
||||
KeyText = "SPACE",
|
||||
KeyType = KeyType.Advance,
|
||||
PositionX = 1,
|
||||
PositionY = 3
|
||||
PositionY = 4,
|
||||
Width = 4
|
||||
},
|
||||
// Economy
|
||||
new()
|
||||
|
||||
@@ -107,12 +107,9 @@ public class EconomyComparisionService : IEconomyComparisonService
|
||||
{
|
||||
var townHall = buildToCompare.GetTownHallEntity;
|
||||
var townHallMining2 = buildToCompare.GetTownHallMining2Entity;
|
||||
var townHallMining3 = buildToCompare.GetTownHallMining3Entity;
|
||||
|
||||
Add(townHall, buildToCompare, time);
|
||||
Add(townHallMining2, buildToCompare, time + townHall.Production()!.BuildTime);
|
||||
Add(townHallMining3, buildToCompare,
|
||||
time + townHall.Production()!.BuildTime + townHallMining2.Production()!.BuildTime);
|
||||
}
|
||||
|
||||
CalculateEconomy(buildToCompare);
|
||||
|
||||
Reference in New Issue
Block a user