feat(BuildCalc) Wait To button and some WIP code
This commit is contained in:
@@ -267,7 +267,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buildOrderService.Add(entity, economyService, toastService))
|
if (buildOrderService.Add(entity, economyService))
|
||||||
{
|
{
|
||||||
economyService.Calculate(buildOrderService, timingService, buildOrderService.GetLastRequestInterval());
|
economyService.Calculate(buildOrderService, timingService, buildOrderService.GetLastRequestInterval());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -329,7 +329,7 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buildOrderService.Add(entity, economyService, toastService))
|
if (buildOrderService.Add(entity, economyService))
|
||||||
{
|
{
|
||||||
economyService.Calculate(buildOrderService, timingService, buildOrderService.GetLastRequestInterval());
|
economyService.Calculate(buildOrderService, timingService, buildOrderService.GetLastRequestInterval());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,11 +13,10 @@
|
|||||||
<FormLabelComponent>Building Input Delay</FormLabelComponent>
|
<FormLabelComponent>Building Input Delay</FormLabelComponent>
|
||||||
<FormInfoComponent>Add a input delay to constructing buildings for simulating worker movement and player micro.</FormInfoComponent>
|
<FormInfoComponent>Add a input delay to constructing buildings for simulating worker movement and player micro.</FormInfoComponent>
|
||||||
</FormNumberComponent>
|
</FormNumberComponent>
|
||||||
|
|
||||||
<div class="optionRow">
|
<div class="optionRow">
|
||||||
<FormLayoutComponent>
|
<FormLayoutComponent>
|
||||||
<FormNumberComponent Max="600"
|
<FormNumberComponent Max="600"
|
||||||
Min="0"
|
Min="1"
|
||||||
Value="@WaitTime"
|
Value="@WaitTime"
|
||||||
OnChange="@OnWaitTimeChanged">
|
OnChange="@OnWaitTimeChanged">
|
||||||
<FormLabelComponent>Wait Time</FormLabelComponent>
|
<FormLabelComponent>Wait Time</FormLabelComponent>
|
||||||
@@ -25,15 +24,14 @@
|
|||||||
<ButtonComponent OnClick="OnWaitClicked">Add Wait</ButtonComponent>
|
<ButtonComponent OnClick="OnWaitClicked">Add Wait</ButtonComponent>
|
||||||
</FormLayoutComponent>
|
</FormLayoutComponent>
|
||||||
<FormLayoutComponent>
|
<FormLayoutComponent>
|
||||||
<FormNumberComponent Max="600"
|
<FormNumberComponent Max="2048"
|
||||||
Min="0"
|
Min="1"
|
||||||
Value="@WaitTime"
|
Value="@WaitTo"
|
||||||
OnChange="@OnWaitTimeChanged">
|
OnChange="@OnWaitToChanged">
|
||||||
<FormLabelComponent>Wait To</FormLabelComponent>
|
<FormLabelComponent>Wait To</FormLabelComponent>
|
||||||
</FormNumberComponent>
|
</FormNumberComponent>
|
||||||
<ButtonComponent OnClick="OnWaitClicked">Add Wait</ButtonComponent>
|
<ButtonComponent OnClick="OnWaitToClicked">Add Wait</ButtonComponent>
|
||||||
</FormLayoutComponent>
|
</FormLayoutComponent>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</FormLayoutComponent>
|
</FormLayoutComponent>
|
||||||
|
|
||||||
@@ -45,8 +43,8 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
public int WaitTime { get; set; } = 30;
|
private int WaitTime { get; set; } = 30;
|
||||||
public int WaitTo { get; set; } = 30;
|
private int WaitTo { get; set; } = 30;
|
||||||
|
|
||||||
|
|
||||||
void OnBuildingInputDelayChanged(ChangeEventArgs changeEventArgs)
|
void OnBuildingInputDelayChanged(ChangeEventArgs changeEventArgs)
|
||||||
@@ -59,7 +57,12 @@
|
|||||||
WaitTime = (int)changeEventArgs.Value!;
|
WaitTime = (int)changeEventArgs.Value!;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnWaitClicked()
|
void OnWaitToChanged(ChangeEventArgs changeEventArgs)
|
||||||
|
{
|
||||||
|
WaitTo = (int)changeEventArgs.Value!;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnWaitClicked()
|
||||||
{
|
{
|
||||||
if (buildOrderService.AddWait(WaitTime))
|
if (buildOrderService.AddWait(WaitTime))
|
||||||
{
|
{
|
||||||
@@ -67,9 +70,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnWaitToClicked()
|
private void OnWaitToClicked()
|
||||||
{
|
{
|
||||||
if (buildOrderService.AddWait(WaitTime))
|
if (buildOrderService.AddWaitTo(WaitTo))
|
||||||
{
|
{
|
||||||
economyService.Calculate(buildOrderService, timingService, buildOrderService.GetLastRequestInterval());
|
economyService.Calculate(buildOrderService, timingService, buildOrderService.GetLastRequestInterval());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ grid-template-areas: 'loader sand compare compare' ;">
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (BuildOrderService.Add(entity, EconomyService, toastService))
|
if (BuildOrderService.Add(entity, EconomyService))
|
||||||
{
|
{
|
||||||
EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval());
|
EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,17 +29,16 @@ public class BuildOrderModel
|
|||||||
public Dictionary<string, int> UniqueCompletedCount { get; set; } = new();
|
public Dictionary<string, int> UniqueCompletedCount { get; set; } = new();
|
||||||
public Dictionary<int, int> SupplyCountTimes { get; set; } = new();
|
public Dictionary<int, int> SupplyCountTimes { get; set; } = new();
|
||||||
|
|
||||||
public List<TrainingCapacityUsedModel> TrainingCapacityModels { get; set; } = new();
|
public Dictionary<string, Dictionary<int, List<EntityModel>>> UniqueCompleted { get; set; } = new();
|
||||||
|
|
||||||
|
public List<TrainingCapacityUsedModel> TrainingCapacityUsed { get; set; } = new();
|
||||||
|
|
||||||
public void Initialize(string faction)
|
public void Initialize(string faction)
|
||||||
{
|
{
|
||||||
string factionStartingTownHall = faction.Equals(DataType.FACTION_QRath) ? DataType.STARTING_TownHall_QRath :
|
var factionStartingTownHall = faction.Equals(DataType.FACTION_QRath) ? DataType.STARTING_TownHall_QRath :
|
||||||
faction.Equals(DataType.FACTION_Aru) ? DataType.STARTING_TownHall_Aru : "";
|
faction.Equals(DataType.FACTION_Aru) ? DataType.STARTING_TownHall_Aru : "";
|
||||||
|
|
||||||
if (factionStartingTownHall.Equals(""))
|
if (factionStartingTownHall.Equals("")) throw new Exception("Reminder to add support to new factions");
|
||||||
{
|
|
||||||
throw new Exception("Reminder to add support to new factions");
|
|
||||||
}
|
|
||||||
|
|
||||||
StartedOrders = new Dictionary<int, List<EntityModel>>
|
StartedOrders = new Dictionary<int, List<EntityModel>>
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Model.Economy;
|
using Model.Economy;
|
||||||
using Model.Entity;
|
using Model.Entity;
|
||||||
@@ -9,21 +8,24 @@ namespace Model.BuildOrders;
|
|||||||
|
|
||||||
public class BuildToCompareModel
|
public class BuildToCompareModel
|
||||||
{
|
{
|
||||||
|
private int numberOfTownHallExpansions;
|
||||||
public string Faction { get; set; }
|
public string Faction { get; set; }
|
||||||
|
|
||||||
public EntityModel GetTownHallEntity => DATA.Get()[
|
public EntityModel GetTownHallEntity => DATA.Get()[
|
||||||
Faction.Equals(DataType.FACTION_QRath) ? DataType.BUILDING_Acropolis
|
Faction.Equals(DataType.FACTION_QRath)
|
||||||
|
? DataType.BUILDING_Acropolis
|
||||||
: DataType.BUILDING_GroveHeart];
|
: DataType.BUILDING_GroveHeart];
|
||||||
|
|
||||||
public EntityModel GetTownHallMining2Entity => DATA.Get()[
|
public EntityModel GetTownHallMining2Entity => DATA.Get()[
|
||||||
Faction.Equals(DataType.FACTION_QRath) ? DataType.BUPGRADE_MiningLevel2_QRath
|
Faction.Equals(DataType.FACTION_QRath)
|
||||||
|
? DataType.BUPGRADE_MiningLevel2_QRath
|
||||||
: DataType.BUPGRADE_MiningLevel2_Aru];
|
: DataType.BUPGRADE_MiningLevel2_Aru];
|
||||||
|
|
||||||
public EntityModel GetTownHallMining3Entity => DATA.Get()[
|
public EntityModel GetTownHallMining3Entity => DATA.Get()[
|
||||||
Faction.Equals(DataType.FACTION_QRath) ? DataType.BUPGRADE_MiningLevel3_QRath
|
Faction.Equals(DataType.FACTION_QRath)
|
||||||
|
? DataType.BUPGRADE_MiningLevel3_QRath
|
||||||
: DataType.BUPGRADE_MiningLevel3_Aru];
|
: DataType.BUPGRADE_MiningLevel3_Aru];
|
||||||
|
|
||||||
|
|
||||||
private int numberOfTownHallExpansions = 0;
|
|
||||||
public int NumberOfTownHallExpansions
|
public int NumberOfTownHallExpansions
|
||||||
{
|
{
|
||||||
get => numberOfTownHallExpansions;
|
get => numberOfTownHallExpansions;
|
||||||
@@ -33,16 +35,12 @@ public class BuildToCompareModel
|
|||||||
{
|
{
|
||||||
numberOfTownHallExpansions = value;
|
numberOfTownHallExpansions = value;
|
||||||
while (TimeToBuildTownHall.Count < numberOfTownHallExpansions)
|
while (TimeToBuildTownHall.Count < numberOfTownHallExpansions)
|
||||||
{
|
|
||||||
TimeToBuildTownHall.Add((TimeToBuildTownHall.Count + 1) * 30);
|
TimeToBuildTownHall.Add((TimeToBuildTownHall.Count + 1) * 30);
|
||||||
}
|
|
||||||
while (TimeToBuildTownHall.Count > numberOfTownHallExpansions)
|
while (TimeToBuildTownHall.Count > numberOfTownHallExpansions)
|
||||||
{
|
|
||||||
TimeToBuildTownHall.Remove(TimeToBuildTownHall.Last());
|
TimeToBuildTownHall.Remove(TimeToBuildTownHall.Last());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public List<int> TimeToBuildTownHall { get; set; } = new();
|
public List<int> TimeToBuildTownHall { get; set; } = new();
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
using Model.Entity.Data;
|
||||||
|
|
||||||
|
namespace Model.BuildOrders;
|
||||||
|
|
||||||
|
public class ResearchSlot
|
||||||
|
{
|
||||||
|
public int StartingInterval { get; set; } = 30;
|
||||||
|
public int Slots { get; set; } = 1;
|
||||||
|
public string ResearchType { get; set; } = DataType.BUILDING_Reliquary;
|
||||||
|
}
|
||||||
@@ -1,6 +1,4 @@
|
|||||||
|
using Model.Entity.Data;
|
||||||
|
|
||||||
using Model.Entity.Data;
|
|
||||||
|
|
||||||
namespace Model.BuildOrders;
|
namespace Model.BuildOrders;
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
using Model.Entity.Data;
|
||||||
|
|
||||||
|
namespace Model.BuildOrders;
|
||||||
|
|
||||||
|
public class TrainingSlot
|
||||||
|
{
|
||||||
|
public int StartingInterval { get; set; } = 30;
|
||||||
|
public int Slots { get; set; } = 16;
|
||||||
|
public string ProductionType { get; set; } = DataType.BUILDING_LegionHall;
|
||||||
|
}
|
||||||
@@ -1,9 +1,4 @@
|
|||||||
using System;
|
using System.Collections.Generic;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using Model.BuildOrders;
|
|
||||||
using Model.Entity;
|
|
||||||
using Model.Types;
|
|
||||||
|
|
||||||
namespace Model.Economy;
|
namespace Model.Economy;
|
||||||
|
|
||||||
|
|||||||
+61
-62
@@ -446,7 +446,7 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityVanguardAddedModel
|
.AddPart(new EntityVanguardAddedModel
|
||||||
{ ReplaceId = DataType.UNIT_Sipari, ImmortalId = DataType.IMMORTAL_Orzum })
|
{ ReplaceId = DataType.UNIT_Sipari, ImmortalId = DataType.IMMORTAL_Orzum })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, BuildTime = 24 })
|
.AddPart(new EntityProductionModel { Alloy = 100, BuildTime = 24, ProducedBy = DataType.BUILDING_LegionHall})
|
||||||
.AddPart(new EntitySupplyModel { Takes = 4 })
|
.AddPart(new EntitySupplyModel { Takes = 4 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 180, DefenseLayer = 100, Armor = ArmorType.Light })
|
.AddPart(new EntityVitalityModel { Health = 180, DefenseLayer = 100, Armor = ArmorType.Light })
|
||||||
.AddPart(new EntityWeaponModel
|
.AddPart(new EntityWeaponModel
|
||||||
@@ -475,7 +475,7 @@ public class DATA
|
|||||||
.AddPart(new EntityTierModel { Tier = 3 })
|
.AddPart(new EntityTierModel { Tier = 3 })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 200, Ether = 125, BuildTime = 40 })
|
.AddPart(new EntityProductionModel { Alloy = 200, Ether = 125, BuildTime = 40, ProducedBy = DataType.BUILDING_Angelarium })
|
||||||
.AddPart(new EntityVitalityModel { Health = 350, DefenseLayer = 120, Armor = ArmorType.Heavy })
|
.AddPart(new EntityVitalityModel { Health = 350, DefenseLayer = 120, Armor = ArmorType.Heavy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 6 })
|
.AddPart(new EntitySupplyModel { Takes = 6 })
|
||||||
.AddPart(new EntityWeaponModel
|
.AddPart(new EntityWeaponModel
|
||||||
@@ -514,7 +514,7 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityVanguardAddedModel
|
.AddPart(new EntityVanguardAddedModel
|
||||||
{ ReplaceId = DataType.UNIT_Magi, ImmortalId = DataType.IMMORTAL_Ajari })
|
{ ReplaceId = DataType.UNIT_Magi, ImmortalId = DataType.IMMORTAL_Ajari })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 75, BuildTime = 35 })
|
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 75, BuildTime = 35, ProducedBy = DataType.BUILDING_LegionHall })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 4 })
|
.AddPart(new EntitySupplyModel { Takes = 4 })
|
||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
{ Health = 140, DefenseLayer = 100, Armor = ArmorType.Light, IsEtheric = true })
|
{ Health = 140, DefenseLayer = 100, Armor = ArmorType.Light, IsEtheric = true })
|
||||||
@@ -548,7 +548,7 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityVanguardAddedModel
|
.AddPart(new EntityVanguardAddedModel
|
||||||
{ ReplaceId = DataType.UNIT_Hallower, ImmortalId = DataType.IMMORTAL_Ajari })
|
{ ReplaceId = DataType.UNIT_Hallower, ImmortalId = DataType.IMMORTAL_Ajari })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 100, BuildTime = 40 })
|
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 100, BuildTime = 40, ProducedBy = DataType.BUILDING_SoulFoundry })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 5 })
|
.AddPart(new EntitySupplyModel { Takes = 5 })
|
||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
{ Energy = 100, Health = 100, DefenseLayer = 100, Armor = ArmorType.Medium, IsEtheric = true })
|
{ Energy = 100, Health = 100, DefenseLayer = 100, Armor = ArmorType.Medium, IsEtheric = true })
|
||||||
@@ -584,7 +584,7 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityVanguardAddedModel
|
.AddPart(new EntityVanguardAddedModel
|
||||||
{ ReplaceId = DataType.UNIT_Underspine, ImmortalId = DataType.IMMORTAL_Mala })
|
{ ReplaceId = DataType.UNIT_Underspine, ImmortalId = DataType.IMMORTAL_Mala })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 175, Ether = 50, BuildTime = 35 })
|
.AddPart(new EntityProductionModel { Alloy = 175, Ether = 50, BuildTime = 35, ProducedBy = DataType.BUILDING_AmberWomb })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 5 })
|
.AddPart(new EntitySupplyModel { Takes = 5 })
|
||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
{ Health = 160, DefenseLayer = 40, Armor = ArmorType.Medium, IsEtheric = false })
|
{ Health = 160, DefenseLayer = 40, Armor = ArmorType.Medium, IsEtheric = false })
|
||||||
@@ -613,7 +613,7 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityVanguardAddedModel
|
.AddPart(new EntityVanguardAddedModel
|
||||||
{ ReplaceId = DataType.UNIT_RedSeer, ImmortalId = DataType.IMMORTAL_Mala })
|
{ ReplaceId = DataType.UNIT_RedSeer, ImmortalId = DataType.IMMORTAL_Mala })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 60, Ether = 150, BuildTime = 45 })
|
.AddPart(new EntityProductionModel { Alloy = 60, Ether = 150, BuildTime = 45, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 4 })
|
.AddPart(new EntitySupplyModel { Takes = 4 })
|
||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
{
|
{
|
||||||
@@ -642,7 +642,7 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityVanguardAddedModel
|
.AddPart(new EntityVanguardAddedModel
|
||||||
{ ReplaceId = DataType.UNIT_MaskedHunter, ImmortalId = DataType.IMMORTAL_Xol })
|
{ ReplaceId = DataType.UNIT_MaskedHunter, ImmortalId = DataType.IMMORTAL_Xol })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 0, BuildTime = 20 })
|
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 0, BuildTime = 20, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 2 })
|
.AddPart(new EntitySupplyModel { Takes = 2 })
|
||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
{ Health = 85, DefenseLayer = 10, Armor = ArmorType.Light, IsEtheric = false })
|
{ Health = 85, DefenseLayer = 10, Armor = ArmorType.Light, IsEtheric = false })
|
||||||
@@ -671,7 +671,7 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityVanguardAddedModel
|
.AddPart(new EntityVanguardAddedModel
|
||||||
{ ReplaceId = DataType.UNIT_Bloodbound, ImmortalId = DataType.IMMORTAL_Xol })
|
{ ReplaceId = DataType.UNIT_Bloodbound, ImmortalId = DataType.IMMORTAL_Xol })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 80, BuildTime = 35 })
|
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 80, BuildTime = 35, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 4 })
|
.AddPart(new EntitySupplyModel { Takes = 4 })
|
||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
{
|
{
|
||||||
@@ -707,14 +707,14 @@ public class DATA
|
|||||||
{
|
{
|
||||||
Name = "Sipari", Descriptive = DescriptiveType.Frontliner,
|
Name = "Sipari", Descriptive = DescriptiveType.Frontliner,
|
||||||
Description =
|
Description =
|
||||||
@"Melee Warrior (Ground Unit) - Front-line warriors enchanced by <b>Hallowed Ground</b>."
|
@"Melee Warrior (Ground Unit) - Front-line warriors enhanced by <b>Hallowed Ground</b>."
|
||||||
})
|
})
|
||||||
.AddPart(new EntityTierModel { Tier = 1 })
|
.AddPart(new EntityTierModel { Tier = 1 })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityVanguardReplacedModel
|
.AddPart(new EntityVanguardReplacedModel
|
||||||
{ ImmortalId = DataType.IMMORTAL_Orzum, ReplacedById = DataType.VANGUARD_Zentari_Orzum })
|
{ ImmortalId = DataType.IMMORTAL_Orzum, ReplacedById = DataType.VANGUARD_Zentari_Orzum })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, BuildTime = 25 })
|
.AddPart(new EntityProductionModel { Alloy = 75, BuildTime = 25, ProducedBy = DataType.BUILDING_LegionHall })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 3 })
|
.AddPart(new EntitySupplyModel { Takes = 3 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 140, DefenseLayer = 70, Armor = ArmorType.Light })
|
.AddPart(new EntityVitalityModel { Health = 140, DefenseLayer = 70, Armor = ArmorType.Light })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
@@ -745,7 +745,7 @@ public class DATA
|
|||||||
.AddPart(new EntityTierModel { Tier = 1.5f })
|
.AddPart(new EntityTierModel { Tier = 1.5f })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 75, BuildTime = 35 })
|
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 75, BuildTime = 35, ProducedBy = DataType.BUILDING_LegionHall })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 3 })
|
.AddPart(new EntitySupplyModel { Takes = 3 })
|
||||||
.AddPart(new EntityVanguardReplacedModel
|
.AddPart(new EntityVanguardReplacedModel
|
||||||
{ ImmortalId = DataType.IMMORTAL_Ajari, ReplacedById = DataType.VANGUARD_Saoshin_Ajari })
|
{ ImmortalId = DataType.IMMORTAL_Ajari, ReplacedById = DataType.VANGUARD_Saoshin_Ajari })
|
||||||
@@ -783,7 +783,7 @@ public class DATA
|
|||||||
.AddPart(new EntityTierModel { Tier = 1.5f })
|
.AddPart(new EntityTierModel { Tier = 1.5f })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 40, BuildTime = 30 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 40, BuildTime = 30, ProducedBy = DataType.BUILDING_SoulFoundry })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 4 })
|
.AddPart(new EntitySupplyModel { Takes = 4 })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
@@ -818,7 +818,7 @@ public class DATA
|
|||||||
.AddPart(new EntityTierModel { Tier = 2 })
|
.AddPart(new EntityTierModel { Tier = 2 })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 125, Ether = 10, BuildTime = 35 })
|
.AddPart(new EntityProductionModel { Alloy = 125, Ether = 10, BuildTime = 35, ProducedBy = DataType.BUILDING_SoulFoundry })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 4 })
|
.AddPart(new EntitySupplyModel { Takes = 4 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 140, DefenseLayer = 100, Armor = ArmorType.Medium })
|
.AddPart(new EntityVitalityModel { Health = 140, DefenseLayer = 100, Armor = ArmorType.Medium })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
@@ -850,7 +850,7 @@ public class DATA
|
|||||||
.AddPart(new EntityTierModel { Tier = 2 })
|
.AddPart(new EntityTierModel { Tier = 2 })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 35 })
|
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 35, ProducedBy = DataType.BUILDING_SoulFoundry })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 5 })
|
.AddPart(new EntitySupplyModel { Takes = 5 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 175, DefenseLayer = 150, Armor = ArmorType.Medium })
|
.AddPart(new EntityVitalityModel { Health = 175, DefenseLayer = 150, Armor = ArmorType.Medium })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
@@ -885,7 +885,7 @@ public class DATA
|
|||||||
.AddPart(new EntityTierModel { Tier = 2 })
|
.AddPart(new EntityTierModel { Tier = 2 })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "W", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "W", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 190, Ether = 75, BuildTime = 35 })
|
.AddPart(new EntityProductionModel { Alloy = 190, Ether = 75, BuildTime = 35, ProducedBy = DataType.BUILDING_SoulFoundry })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 5 })
|
.AddPart(new EntitySupplyModel { Takes = 5 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 200, DefenseLayer = 100, Armor = ArmorType.Heavy })
|
.AddPart(new EntityVitalityModel { Health = 200, DefenseLayer = 100, Armor = ArmorType.Heavy })
|
||||||
.AddPart(new EntityMovementModel { Speed = 340, Movement = MovementType.Ground })
|
.AddPart(new EntityMovementModel { Speed = 340, Movement = MovementType.Ground })
|
||||||
@@ -919,7 +919,7 @@ public class DATA
|
|||||||
.AddPart(new EntityVanguardReplacedModel
|
.AddPart(new EntityVanguardReplacedModel
|
||||||
{ ImmortalId = DataType.IMMORTAL_Ajari, ReplacedById = DataType.VANGUARD_ArkMother_Ajari })
|
{ ImmortalId = DataType.IMMORTAL_Ajari, ReplacedById = DataType.VANGUARD_ArkMother_Ajari })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 35 })
|
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 35, ProducedBy = DataType.BUILDING_SoulFoundry })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 5 })
|
.AddPart(new EntitySupplyModel { Takes = 5 })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
@@ -951,7 +951,7 @@ public class DATA
|
|||||||
.AddPart(new EntityTierModel { Tier = 3 })
|
.AddPart(new EntityTierModel { Tier = 3 })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "E", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "E", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 35 })
|
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 35, ProducedBy = DataType.BUILDING_Angelarium })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 5 })
|
.AddPart(new EntitySupplyModel { Takes = 5 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 150, DefenseLayer = 100, Armor = ArmorType.Medium })
|
.AddPart(new EntityVitalityModel { Health = 150, DefenseLayer = 100, Armor = ArmorType.Medium })
|
||||||
.AddPart(new EntityMovementModel { Speed = 525, Movement = MovementType.Air })
|
.AddPart(new EntityMovementModel { Speed = 525, Movement = MovementType.Air })
|
||||||
@@ -977,7 +977,7 @@ public class DATA
|
|||||||
.AddPart(new EntityTierModel { Tier = 3 })
|
.AddPart(new EntityTierModel { Tier = 3 })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "A", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "A", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 250, Ether = 100, BuildTime = 50 })
|
.AddPart(new EntityProductionModel { Alloy = 250, Ether = 100, BuildTime = 50, ProducedBy = DataType.BUILDING_Angelarium })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 9 })
|
.AddPart(new EntitySupplyModel { Takes = 9 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 350, DefenseLayer = 200, Armor = ArmorType.Heavy })
|
.AddPart(new EntityVitalityModel { Health = 350, DefenseLayer = 200, Armor = ArmorType.Heavy })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
@@ -1008,14 +1008,14 @@ public class DATA
|
|||||||
{
|
{
|
||||||
Name = "Warden", Descriptive = DescriptiveType.Harrier,
|
Name = "Warden", Descriptive = DescriptiveType.Harrier,
|
||||||
Description =
|
Description =
|
||||||
@"Gunship (Flying Unit) - Air-to-ground specialist. Flight allos it to ignore terrain."
|
@"Gunship (Flying Unit) - Air-to-ground specialist. Flight also it to ignore terrain."
|
||||||
})
|
})
|
||||||
.AddPart(new EntityTierModel { Tier = 3 })
|
.AddPart(new EntityTierModel { Tier = 3 })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityVanguardReplacedModel
|
.AddPart(new EntityVanguardReplacedModel
|
||||||
{ ImmortalId = DataType.IMMORTAL_Orzum, ReplacedById = DataType.VANGUARD_Sceptre_Orzum })
|
{ ImmortalId = DataType.IMMORTAL_Orzum, ReplacedById = DataType.VANGUARD_Sceptre_Orzum })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 175, Ether = 100, BuildTime = 40 })
|
.AddPart(new EntityProductionModel { Alloy = 175, Ether = 100, BuildTime = 40, ProducedBy = DataType.BUILDING_Angelarium })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 6 })
|
.AddPart(new EntitySupplyModel { Takes = 6 })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
@@ -1037,7 +1037,7 @@ public class DATA
|
|||||||
.AddPart(new EntityTierModel { Tier = 3.5f })
|
.AddPart(new EntityTierModel { Tier = 3.5f })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "F", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "F", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 110, Ether = 175, BuildTime = 55 })
|
.AddPart(new EntityProductionModel { Alloy = 110, Ether = 175, BuildTime = 55, ProducedBy = DataType.BUILDING_Angelarium })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 6 })
|
.AddPart(new EntitySupplyModel { Takes = 6 })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
@@ -1097,7 +1097,7 @@ public class DATA
|
|||||||
Requirement = RequirementType.Production_Building
|
Requirement = RequirementType.Production_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 50, BuildTime = 20 })
|
.AddPart(new EntityProductionModel { Alloy = 50, BuildTime = 20, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 2 })
|
.AddPart(new EntitySupplyModel { Takes = 2 })
|
||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
{ Health = 85, DefenseLayer = 25, Defense = DefenseType.Overgrowth, Armor = ArmorType.Light })
|
{ Health = 85, DefenseLayer = 25, Defense = DefenseType.Overgrowth, Armor = ArmorType.Light })
|
||||||
@@ -1125,7 +1125,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 30, BuildTime = 25 })
|
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 30, BuildTime = 25, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 3 })
|
.AddPart(new EntitySupplyModel { Takes = 3 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 160, DefenseLayer = 70, Armor = ArmorType.Heavy })
|
.AddPart(new EntityVitalityModel { Health = 160, DefenseLayer = 70, Armor = ArmorType.Heavy })
|
||||||
.AddPart(new EntityMovementModel { Speed = 378, Movement = MovementType.Ground })
|
.AddPart(new EntityMovementModel { Speed = 378, Movement = MovementType.Ground })
|
||||||
@@ -1156,7 +1156,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 80, BuildTime = 30 })
|
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 80, BuildTime = 30, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 4 })
|
.AddPart(new EntitySupplyModel { Takes = 4 })
|
||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
{ Energy = 60, Health = 100, DefenseLayer = 40, Armor = ArmorType.Light })
|
{ Energy = 60, Health = 100, DefenseLayer = 40, Armor = ArmorType.Light })
|
||||||
@@ -1188,7 +1188,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "F", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "F", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 40, Ether = 140, BuildTime = 40 })
|
.AddPart(new EntityProductionModel { Alloy = 40, Ether = 140, BuildTime = 40, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 3 })
|
.AddPart(new EntitySupplyModel { Takes = 3 })
|
||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
{
|
{
|
||||||
@@ -1225,7 +1225,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 70, Ether = 50, BuildTime = 25 })
|
.AddPart(new EntityProductionModel { Alloy = 70, Ether = 50, BuildTime = 25, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 3 })
|
.AddPart(new EntitySupplyModel { Takes = 3 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 140, DefenseLayer = 40, Armor = ArmorType.Medium })
|
.AddPart(new EntityVitalityModel { Health = 140, DefenseLayer = 40, Armor = ArmorType.Medium })
|
||||||
.AddPart(new EntityMovementModel { Speed = 350, Movement = MovementType.Ground })
|
.AddPart(new EntityMovementModel { Speed = 350, Movement = MovementType.Ground })
|
||||||
@@ -1255,7 +1255,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 95, Ether = 20, BuildTime = 30 })
|
.AddPart(new EntityProductionModel { Alloy = 95, Ether = 20, BuildTime = 30, ProducedBy = DataType.BUILDING_AmberWomb })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 4 })
|
.AddPart(new EntitySupplyModel { Takes = 4 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 100, DefenseLayer = 40, Armor = ArmorType.Medium })
|
.AddPart(new EntityVitalityModel { Health = 100, DefenseLayer = 40, Armor = ArmorType.Medium })
|
||||||
.AddPart(new EntityMovementModel { Speed = 382, Movement = MovementType.Ground })
|
.AddPart(new EntityMovementModel { Speed = 382, Movement = MovementType.Ground })
|
||||||
@@ -1285,7 +1285,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 80, BuildTime = 40 })
|
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 80, BuildTime = 40, ProducedBy = DataType.BUILDING_AmberWomb })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 5 })
|
.AddPart(new EntitySupplyModel { Takes = 5 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 175, DefenseLayer = 60, Armor = ArmorType.Heavy })
|
.AddPart(new EntityVitalityModel { Health = 175, DefenseLayer = 60, Armor = ArmorType.Heavy })
|
||||||
.AddPart(new EntityMovementModel { Speed = 350, Movement = MovementType.Ground })
|
.AddPart(new EntityMovementModel { Speed = 350, Movement = MovementType.Ground })
|
||||||
@@ -1320,7 +1320,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "E", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "E", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 40, Ether = 40, BuildTime = 30 })
|
.AddPart(new EntityProductionModel { Alloy = 40, Ether = 40, BuildTime = 30, ProducedBy = DataType.BUILDING_BoneCanopy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 2 })
|
.AddPart(new EntitySupplyModel { Takes = 2 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 35, DefenseLayer = 10, Armor = ArmorType.Light })
|
.AddPart(new EntityVitalityModel { Health = 35, DefenseLayer = 10, Armor = ArmorType.Light })
|
||||||
.AddPart(new EntityMovementModel { Speed = 532, Movement = MovementType.Air })
|
.AddPart(new EntityMovementModel { Speed = 532, Movement = MovementType.Air })
|
||||||
@@ -1345,7 +1345,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 50, BuildTime = 30 })
|
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 50, BuildTime = 30, ProducedBy = DataType.BUILDING_BoneCanopy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 3 })
|
.AddPart(new EntitySupplyModel { Takes = 3 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 120, DefenseLayer = 40, Armor = ArmorType.Light })
|
.AddPart(new EntityVitalityModel { Health = 120, DefenseLayer = 40, Armor = ArmorType.Light })
|
||||||
.AddPart(new EntityMovementModel { Speed = 525, Movement = MovementType.Air })
|
.AddPart(new EntityMovementModel { Speed = 525, Movement = MovementType.Air })
|
||||||
@@ -1367,7 +1367,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "W", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "W", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 30, BuildTime = 30 })
|
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 30, BuildTime = 30, ProducedBy = DataType.BUILDING_AmberWomb })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 3 })
|
.AddPart(new EntitySupplyModel { Takes = 3 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 120, DefenseLayer = 45, Armor = ArmorType.Medium })
|
.AddPart(new EntityVitalityModel { Health = 120, DefenseLayer = 45, Armor = ArmorType.Medium })
|
||||||
.AddPart(new EntityMovementModel { Speed = 350, Movement = MovementType.Ground })
|
.AddPart(new EntityMovementModel { Speed = 350, Movement = MovementType.Ground })
|
||||||
@@ -1395,7 +1395,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "A", HoldSpace = true, HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "A", HoldSpace = true, HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 190, Ether = 150, BuildTime = 50 })
|
.AddPart(new EntityProductionModel { Alloy = 190, Ether = 150, BuildTime = 50, ProducedBy = DataType.BUILDING_BoneCanopy })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 8 })
|
.AddPart(new EntitySupplyModel { Takes = 8 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 350, DefenseLayer = 100, Armor = ArmorType.Heavy })
|
.AddPart(new EntityVitalityModel { Health = 350, DefenseLayer = 100, Armor = ArmorType.Heavy })
|
||||||
.AddPart(new EntityMovementModel { Speed = 210, Movement = MovementType.Air })
|
.AddPart(new EntityMovementModel { Speed = 210, Movement = MovementType.Air })
|
||||||
@@ -1430,7 +1430,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 100 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 100, ProducedBy = DataType.BUILDING_Reliquary })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_Reliquary,
|
Id = DataType.BUILDING_Reliquary,
|
||||||
@@ -1449,7 +1449,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "V", HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "V", HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 80, BuildTime = 34 })
|
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 80, BuildTime = 34, ProducedBy = DataType.BUILDING_HouseOfFadingSaints })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_HouseOfFadingSaints,
|
Id = DataType.BUILDING_HouseOfFadingSaints,
|
||||||
@@ -1467,7 +1467,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB", HoldSpace = true })
|
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB", HoldSpace = true })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 43 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 43, ProducedBy = DataType.BUILDING_EyeOfAros })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_EyeOfAros,
|
Id = DataType.BUILDING_EyeOfAros,
|
||||||
@@ -1487,7 +1487,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 100, BuildTime = 60 })
|
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 100, BuildTime = 60, ProducedBy = DataType.BUILDING_Reliquary })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{ Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Research_Building })
|
{ Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Research_Building })
|
||||||
.AddPart(new EntityVanguardAddedModel
|
.AddPart(new EntityVanguardAddedModel
|
||||||
@@ -1503,7 +1503,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "TAB", HoldSpace = true })
|
.AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "TAB", HoldSpace = true })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 75, BuildTime = 29 })
|
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 75, BuildTime = 29, ProducedBy = DataType.BUILDING_HouseOfFadingSaints })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_HouseOfFadingSaints,
|
Id = DataType.BUILDING_HouseOfFadingSaints,
|
||||||
@@ -1517,7 +1517,7 @@ public class DATA
|
|||||||
{ Name = "Windstep", Descriptive = DescriptiveType.Upgrade, Description = "Unlocks windstep." })
|
{ Name = "Windstep", Descriptive = DescriptiveType.Upgrade, Description = "Unlocks windstep." })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 75, BuildTime = 55 })
|
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 75, BuildTime = 55, ProducedBy = DataType.BUILDING_Reliquary })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{ Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Production_Building })
|
{ Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Production_Building })
|
||||||
},
|
},
|
||||||
@@ -1531,9 +1531,9 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 100, BuildTime = 43 })
|
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 100, BuildTime = 43, ProducedBy = DataType.BUILDING_Reliquary })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{ Id = DataType.UPGRADE_ZephyrRange, Requirement = RequirementType.Production_Building })
|
{ Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Research_Building })
|
||||||
.AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_WindStep })
|
.AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_WindStep })
|
||||||
.AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_ZephyrRange })
|
.AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_ZephyrRange })
|
||||||
},
|
},
|
||||||
@@ -1547,7 +1547,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 100, BuildTime = 60 })
|
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 100, BuildTime = 60, ProducedBy = DataType.BUILDING_HouseOfFadingSaints })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_HouseOfFadingSaints,
|
Id = DataType.BUILDING_HouseOfFadingSaints,
|
||||||
@@ -1564,7 +1564,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HoldSpace = true, HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HoldSpace = true, HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 43 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 43, ProducedBy = DataType.BUILDING_EyeOfAros })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_EyeOfAros,
|
Id = DataType.BUILDING_EyeOfAros,
|
||||||
@@ -1583,7 +1583,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "A", HoldSpace = true, HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "A", HoldSpace = true, HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 75, BuildTime = 45 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 75, BuildTime = 45, ProducedBy = DataType.BUILDING_BearerOfTheCrown })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_BearerOfTheCrown, Requirement = RequirementType.Production_Building
|
Id = DataType.BUILDING_BearerOfTheCrown, Requirement = RequirementType.Production_Building
|
||||||
@@ -1599,10 +1599,10 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
.AddPart(new EntityFactionModel { Faction = FactionType.QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 100, BuildTime = 30 })
|
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 100, BuildTime = 30, ProducedBy = DataType.BUILDING_EyeOfAros })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_BearerOfTheCrown, Requirement = RequirementType.Production_Building
|
Id = DataType.BUILDING_EyeOfAros, Requirement = RequirementType.Production_Building
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
// Upgrades
|
// Upgrades
|
||||||
@@ -1630,7 +1630,7 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_Neurocyte,
|
Id = DataType.BUILDING_Neurocyte,
|
||||||
Requirement = RequirementType.Production_Building
|
Requirement = RequirementType.Production_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 80, BuildTime = 60 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 80, BuildTime = 60, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_BloodMothersFevor,
|
DataType.UPGRADE_BloodMothersFevor,
|
||||||
@@ -1643,15 +1643,15 @@ public class DATA
|
|||||||
{ ImmortalId = DataType.IMMORTAL_Xol, ReplacedById = DataType.UPGRADE_Ambush })
|
{ ImmortalId = DataType.IMMORTAL_Xol, ReplacedById = DataType.UPGRADE_Ambush })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_AmberWomb,
|
Id = DataType.BUILDING_RedVale,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_Neurocyte,
|
Id = DataType.BUILDING_AltarOfTheWorthy,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 150, BuildTime = 80 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 150, BuildTime = 80, ProducedBy = DataType.BUILDING_RedVale })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_DenInstinct,
|
DataType.UPGRADE_DenInstinct,
|
||||||
@@ -1664,7 +1664,7 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_Neurocyte,
|
Id = DataType.BUILDING_Neurocyte,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 120, BuildTime = 45 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 120, BuildTime = 45, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_PursuitLigaments,
|
DataType.UPGRADE_PursuitLigaments,
|
||||||
@@ -1677,7 +1677,7 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_Neurocyte,
|
Id = DataType.BUILDING_Neurocyte,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 100, BuildTime = 45 })
|
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 100, BuildTime = 45, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_ResinantDeploy,
|
DataType.UPGRADE_ResinantDeploy,
|
||||||
@@ -1695,7 +1695,7 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_AmberWomb,
|
Id = DataType.BUILDING_AmberWomb,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 100, BuildTime = 43 })
|
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 100, BuildTime = 43, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_XacalDamage,
|
DataType.UPGRADE_XacalDamage,
|
||||||
@@ -1708,7 +1708,7 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_Neurocyte,
|
Id = DataType.BUILDING_Neurocyte,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 75, BuildTime = 60 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 75, BuildTime = 60, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_BehemothCapacity,
|
DataType.UPGRADE_BehemothCapacity,
|
||||||
@@ -1721,7 +1721,7 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_DeepNest,
|
Id = DataType.BUILDING_DeepNest,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 150, BuildTime = 46 })
|
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 150, BuildTime = 46, ProducedBy = DataType.BUILDING_DeepNest })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_WraithBowRange,
|
DataType.UPGRADE_WraithBowRange,
|
||||||
@@ -1739,7 +1739,7 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_Neurocyte,
|
Id = DataType.BUILDING_Neurocyte,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 75, BuildTime = 29 })
|
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 75, BuildTime = 29, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -1758,7 +1758,7 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_Neurocyte,
|
Id = DataType.BUILDING_Neurocyte,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 80, BuildTime = 60 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 80, BuildTime = 60, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
.AddPart(new EntityVanguardAddedModel
|
.AddPart(new EntityVanguardAddedModel
|
||||||
{ ReplaceId = DataType.UPGRADE_Offering, ImmortalId = DataType.IMMORTAL_Xol })
|
{ ReplaceId = DataType.UPGRADE_Offering, ImmortalId = DataType.IMMORTAL_Xol })
|
||||||
},
|
},
|
||||||
@@ -1774,7 +1774,7 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "V", HotkeyGroup = "TAB", HoldSpace = false })
|
.AddPart(new EntityHotkeyModel { Hotkey = "V", HotkeyGroup = "TAB", HoldSpace = false })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 125, BuildTime = 80 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 125, BuildTime = 80, ProducedBy = DataType.BUILDING_RedVale })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_RedVale,
|
Id = DataType.BUILDING_RedVale,
|
||||||
@@ -1800,7 +1800,7 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_RedVale,
|
Id = DataType.BUILDING_RedVale,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 120, BuildTime = 80 })
|
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 120, BuildTime = 80, ProducedBy = DataType.BUILDING_RedVale })
|
||||||
.AddPart(new EntityVanguardReplacedModel
|
.AddPart(new EntityVanguardReplacedModel
|
||||||
{ ImmortalId = DataType.IMMORTAL_Xol, ReplacedById = DataType.ABILITY_BirthingStorm })
|
{ ImmortalId = DataType.IMMORTAL_Xol, ReplacedById = DataType.ABILITY_BirthingStorm })
|
||||||
},
|
},
|
||||||
@@ -1815,7 +1815,7 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_RedVale,
|
Id = DataType.BUILDING_RedVale,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 120, BuildTime = 80 })
|
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 120, BuildTime = 80, ProducedBy = DataType.BUILDING_RedVale })
|
||||||
.AddPart(new EntityVanguardAddedModel
|
.AddPart(new EntityVanguardAddedModel
|
||||||
{ ImmortalId = DataType.IMMORTAL_Mala, ReplaceId = DataType.ABILITY_BloodPlague })
|
{ ImmortalId = DataType.IMMORTAL_Mala, ReplaceId = DataType.ABILITY_BloodPlague })
|
||||||
},
|
},
|
||||||
@@ -2177,7 +2177,7 @@ public class DATA
|
|||||||
Name = "Restore Lifeblood", Descriptive = DescriptiveType.Passive,
|
Name = "Restore Lifeblood", Descriptive = DescriptiveType.Passive,
|
||||||
Description = @"Quickly heals a nearby unit"
|
Description = @"Quickly heals a nearby unit"
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel(){Cooldown = 0.25f})
|
.AddPart(new EntityProductionModel { Cooldown = 0.25f })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -2190,7 +2190,7 @@ public class DATA
|
|||||||
Name = "Transfusion", Descriptive = DescriptiveType.Passive,
|
Name = "Transfusion", Descriptive = DescriptiveType.Passive,
|
||||||
Description = @"Spends mana to refill the mana of nearby units"
|
Description = @"Spends mana to refill the mana of nearby units"
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel(){Energy = 4, Cooldown = 1})
|
.AddPart(new EntityProductionModel { Energy = 4, Cooldown = 1 })
|
||||||
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
.AddPart(new EntityFactionModel { Faction = FactionType.Aru })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -3000,7 +3000,6 @@ public class DATA
|
|||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
{ Health = 350, DefenseLayer = 450, Armor = ArmorType.Heavy, IsStructure = true })
|
{ Health = 350, DefenseLayer = 450, Armor = ArmorType.Heavy, IsStructure = true })
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
DataType.BUILDING_Reliquary,
|
DataType.BUILDING_Reliquary,
|
||||||
new EntityModel(DataType.BUILDING_Reliquary, EntityType.Building)
|
new EntityModel(DataType.BUILDING_Reliquary, EntityType.Building)
|
||||||
|
|||||||
@@ -1,22 +1,18 @@
|
|||||||
namespace Model.Entity.Parts;
|
#nullable enable
|
||||||
|
namespace Model.Entity.Parts;
|
||||||
|
|
||||||
public class EntityProductionModel : IEntityPartInterface
|
public class EntityProductionModel : IEntityPartInterface
|
||||||
{
|
{
|
||||||
public string Type { get; set; } = "EntityProductionModel";
|
|
||||||
public int Alloy { get; set; } = 0;
|
public int Alloy { get; set; } = 0;
|
||||||
|
|
||||||
public int Ether { get; set; } = 0;
|
public int Ether { get; set; } = 0;
|
||||||
|
|
||||||
public int Pyre { get; set; } = 0;
|
public int Pyre { get; set; } = 0;
|
||||||
|
|
||||||
public int Energy { get; set; } = 0;
|
public int Energy { get; set; } = 0;
|
||||||
|
|
||||||
public int DefensiveLayer { get; set; } = 0;
|
public int DefensiveLayer { get; set; } = 0;
|
||||||
public int BuildTime { get; set; } = 0;
|
public int BuildTime { get; set; } = 0;
|
||||||
|
|
||||||
// Remove cooldown as a cost, and move into ability stats
|
|
||||||
public float Cooldown { get; set; } = 0;
|
public float Cooldown { get; set; } = 0;
|
||||||
|
|
||||||
public bool RequiresWorker { get; set; } = false;
|
public bool RequiresWorker { get; set; } = false;
|
||||||
public bool ConsumesWorker { get; set; } = false;
|
public bool ConsumesWorker { get; set; } = false;
|
||||||
|
|
||||||
|
//public string ProductionType { get; set; }
|
||||||
|
public string? ProducedBy { get; set; } = null;
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
namespace Model.Entity.Parts;
|
||||||
|
|
||||||
|
public class EntityResearchCapacityModel : IEntityPartInterface
|
||||||
|
{
|
||||||
|
public int Slots { get; set; } = 16;
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
namespace Model.Entity.Parts;
|
||||||
|
|
||||||
|
public class EntityTrainingCapacityModel : IEntityPartInterface
|
||||||
|
{
|
||||||
|
public int Slots { get; set; } = 16;
|
||||||
|
}
|
||||||
+4
-6
@@ -1,15 +1,13 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
namespace Model;
|
||||||
|
|
||||||
namespace Model;
|
|
||||||
|
|
||||||
public class TravelTime
|
public class TravelTime
|
||||||
{
|
{
|
||||||
public int Index { get; set; } = 0;
|
|
||||||
public int Value { get; set; } = 0;
|
|
||||||
|
|
||||||
public TravelTime(int index, int value)
|
public TravelTime(int index, int value)
|
||||||
{
|
{
|
||||||
Index = index;
|
Index = index;
|
||||||
Value = value;
|
Value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int Index { get; set; }
|
||||||
|
public int Value { get; set; }
|
||||||
}
|
}
|
||||||
+2
-2
@@ -4,7 +4,7 @@ namespace Model;
|
|||||||
|
|
||||||
public class Variable
|
public class Variable
|
||||||
{
|
{
|
||||||
[Key]
|
[Key] public string Key { get; set; } = "";
|
||||||
public string Key { get; set; } = "";
|
|
||||||
public string Value { get; set; } = "";
|
public string Value { get; set; } = "";
|
||||||
}
|
}
|
||||||
@@ -305,7 +305,7 @@ public interface IBuildOrderService
|
|||||||
public Dictionary<int, int> SupplyCountTimes { get; }
|
public Dictionary<int, int> SupplyCountTimes { get; }
|
||||||
|
|
||||||
|
|
||||||
public bool Add(EntityModel entity, IEconomyService withEconomy, IToastService toastService);
|
public bool Add(EntityModel entity, IEconomyService withEconomy);
|
||||||
public void Add(EntityModel entity, int atInterval);
|
public void Add(EntityModel entity, int atInterval);
|
||||||
public bool AddWait(int forInterval);
|
public bool AddWait(int forInterval);
|
||||||
public bool AddWaitTo(int interval);
|
public bool AddWaitTo(int interval);
|
||||||
|
|||||||
@@ -12,11 +12,15 @@ namespace Services.Immortal;
|
|||||||
|
|
||||||
public class BuildOrderService : IBuildOrderService
|
public class BuildOrderService : IBuildOrderService
|
||||||
{
|
{
|
||||||
private BuildOrderModel buildOrder = new();
|
private readonly BuildOrderModel buildOrder = new();
|
||||||
private int lastInterval;
|
private int lastInterval;
|
||||||
|
|
||||||
public BuildOrderService()
|
private readonly IToastService toastService;
|
||||||
|
|
||||||
|
public BuildOrderService(IToastService toastService)
|
||||||
{
|
{
|
||||||
|
this.toastService = toastService;
|
||||||
|
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,6 +51,7 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
OnChange -= action;
|
OnChange -= action;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void Add(EntityModel entity, int atInterval)
|
public void Add(EntityModel entity, int atInterval)
|
||||||
{
|
{
|
||||||
if (!buildOrder.StartedOrders.ContainsKey(atInterval))
|
if (!buildOrder.StartedOrders.ContainsKey(atInterval))
|
||||||
@@ -74,6 +79,16 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
else
|
else
|
||||||
buildOrder.UniqueCompletedCount[entity.DataType]++;
|
buildOrder.UniqueCompletedCount[entity.DataType]++;
|
||||||
|
|
||||||
|
//entity.
|
||||||
|
if (!buildOrder.UniqueCompleted.ContainsKey(entity.DataType))
|
||||||
|
buildOrder.UniqueCompleted.Add(entity.DataType, new Dictionary<int, List<EntityModel>>());
|
||||||
|
|
||||||
|
if (!buildOrder.UniqueCompleted[entity.DataType].ContainsKey(completedTime))
|
||||||
|
buildOrder.UniqueCompleted[entity.DataType].Add(completedTime, new List<EntityModel>());
|
||||||
|
|
||||||
|
buildOrder.UniqueCompleted[entity.DataType][completedTime].Add(entity);
|
||||||
|
|
||||||
|
|
||||||
if (supply != null)
|
if (supply != null)
|
||||||
{
|
{
|
||||||
if (!supply.Takes.Equals(0)) buildOrder.CurrentSupplyUsed += supply.Takes;
|
if (!supply.Takes.Equals(0)) buildOrder.CurrentSupplyUsed += supply.Takes;
|
||||||
@@ -88,10 +103,11 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
|
|
||||||
public bool AddWait(int forInterval)
|
public bool AddWait(int forInterval)
|
||||||
{
|
{
|
||||||
if (forInterval == 0)
|
if (forInterval < 0)
|
||||||
{
|
{
|
||||||
|
toastService.AddToast(new ToastModel(){SeverityType = SeverityType.Error, Title = "Wait", Message = "This should never happen."});
|
||||||
return false;
|
return false;
|
||||||
}
|
};
|
||||||
|
|
||||||
lastInterval += forInterval;
|
lastInterval += forInterval;
|
||||||
|
|
||||||
@@ -107,7 +123,22 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
|
|
||||||
public bool AddWaitTo(int interval)
|
public bool AddWaitTo(int interval)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
if (interval <= lastInterval)
|
||||||
|
{
|
||||||
|
toastService.AddToast(new ToastModel(){SeverityType = SeverityType.Error, Title = "Logic Error", Message = "You cannot wait to a time that has already elapsed."});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
lastInterval = interval;
|
||||||
|
|
||||||
|
if (!buildOrder.StartedOrders.ContainsKey(lastInterval))
|
||||||
|
buildOrder.StartedOrders.Add(lastInterval, new List<EntityModel>());
|
||||||
|
|
||||||
|
if (!buildOrder.CompletedOrders.ContainsKey(lastInterval))
|
||||||
|
buildOrder.CompletedOrders.Add(lastInterval, new List<EntityModel>());
|
||||||
|
|
||||||
|
NotifyDataChanged();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int? WillMeetRequirements(EntityModel entity)
|
public int? WillMeetRequirements(EntityModel entity)
|
||||||
@@ -143,31 +174,14 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int? WillMeetTrainingQueue(EntityModel entity)
|
|
||||||
{
|
|
||||||
var supply = entity.Supply();
|
|
||||||
|
|
||||||
if (supply == null || supply.Takes.Equals(0)) return 0;
|
public bool Add(EntityModel entity, IEconomyService withEconomy)
|
||||||
|
|
||||||
// TODO: Finish Training Queue Logic
|
|
||||||
|
|
||||||
foreach (var supplyAtTime in buildOrder.SupplyCountTimes)
|
|
||||||
if (supply.Takes + buildOrder.CurrentSupplyUsed < supplyAtTime.Key)
|
|
||||||
return supplyAtTime.Value;
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public bool Add(EntityModel entity, IEconomyService withEconomy, IToastService withToasts)
|
|
||||||
{
|
{
|
||||||
var atInterval = lastInterval;
|
var atInterval = lastInterval;
|
||||||
|
|
||||||
if (!HandleSupply(entity, withToasts, ref atInterval)) return false;
|
if (!HandleSupply(entity, ref atInterval)) return false;
|
||||||
if (!HandleRequirements(entity, withToasts, ref atInterval)) return false;
|
if (!HandleRequirements(entity, ref atInterval)) return false;
|
||||||
if (!HandleEconomy(entity, withEconomy, withToasts, ref atInterval)) return false;
|
if (!HandleEconomy(entity, withEconomy, ref atInterval)) return false;
|
||||||
|
|
||||||
Add(entity, atInterval);
|
Add(entity, atInterval);
|
||||||
|
|
||||||
@@ -214,6 +228,7 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
buildOrder.CurrentSupplyUsed -= entityRemoved.Supply()!.Takes;
|
buildOrder.CurrentSupplyUsed -= entityRemoved.Supply()!.Takes;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
buildOrder.UniqueCompletedCount[entityRemoved!.DataType]--;
|
buildOrder.UniqueCompletedCount[entityRemoved!.DataType]--;
|
||||||
if (buildOrder.UniqueCompletedCount[entityRemoved!.DataType] == 0)
|
if (buildOrder.UniqueCompletedCount[entityRemoved!.DataType] == 0)
|
||||||
UniqueCompletedTimes.Remove(entityRemoved.DataType);
|
UniqueCompletedTimes.Remove(entityRemoved.DataType);
|
||||||
@@ -291,7 +306,6 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
|
|
||||||
public void DeprecatedSetColor(string color)
|
public void DeprecatedSetColor(string color)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetColor()
|
public string GetColor()
|
||||||
@@ -306,10 +320,40 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
NotifyDataChanged();
|
NotifyDataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool AddWaitTo(int interval, TimingService timingService)
|
||||||
|
{
|
||||||
|
if (lastInterval >= interval) return false;
|
||||||
|
|
||||||
|
if (interval > timingService.GetAttackTime()) return false;
|
||||||
|
|
||||||
|
|
||||||
|
if (!buildOrder.StartedOrders.ContainsKey(lastInterval))
|
||||||
|
buildOrder.StartedOrders.Add(lastInterval, new List<EntityModel>());
|
||||||
|
|
||||||
|
if (!buildOrder.CompletedOrders.ContainsKey(lastInterval))
|
||||||
|
buildOrder.CompletedOrders.Add(lastInterval, new List<EntityModel>());
|
||||||
|
|
||||||
|
NotifyDataChanged();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? WillMeetTrainingQueue(EntityModel entity)
|
||||||
|
{
|
||||||
|
var supply = entity.Supply();
|
||||||
|
|
||||||
|
if (supply == null || supply.Takes.Equals(0)) return 0;
|
||||||
|
|
||||||
|
|
||||||
|
foreach (var supplyAtTime in buildOrder.SupplyCountTimes)
|
||||||
|
if (supply.Takes + buildOrder.CurrentSupplyUsed < supplyAtTime.Key)
|
||||||
|
return supplyAtTime.Value;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private event Action OnChange = null!;
|
private event Action OnChange = null!;
|
||||||
|
|
||||||
private bool HandleEconomy(EntityModel entity, IEconomyService withEconomy, IToastService withToasts,
|
private bool HandleEconomy(EntityModel entity, IEconomyService withEconomy, ref int atInterval)
|
||||||
ref int atInterval)
|
|
||||||
{
|
{
|
||||||
var production = entity.Production();
|
var production = entity.Production();
|
||||||
|
|
||||||
@@ -318,8 +362,9 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
for (var interval = atInterval; interval < withEconomy.GetOverTime().Count; interval++)
|
for (var interval = atInterval; interval < withEconomy.GetOverTime().Count; interval++)
|
||||||
{
|
{
|
||||||
var economyAtSecond = withEconomy.GetOverTime()[interval];
|
var economyAtSecond = withEconomy.GetOverTime()[interval];
|
||||||
if (economyAtSecond.Alloy >= production.Alloy && economyAtSecond.Ether >= production.Ether &&
|
if (economyAtSecond.Alloy >= production.Alloy
|
||||||
economyAtSecond.Pyre >= production.Pyre)
|
&& economyAtSecond.Ether >= production.Ether
|
||||||
|
&& economyAtSecond.Pyre >= production.Pyre)
|
||||||
{
|
{
|
||||||
atInterval = interval;
|
atInterval = interval;
|
||||||
|
|
||||||
@@ -330,14 +375,14 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (withEconomy.GetOverTime().Last().Ether < production.Ether)
|
if (withEconomy.GetOverTime().Last().Ether < production.Ether)
|
||||||
withToasts.AddToast(new ToastModel
|
toastService.AddToast(new ToastModel
|
||||||
{
|
{
|
||||||
Title = "Not Enough Ether", Message = "Build more ether extractors!",
|
Title = "Not Enough Ether", Message = "Build more ether extractors!",
|
||||||
SeverityType = SeverityType.Error
|
SeverityType = SeverityType.Error
|
||||||
});
|
});
|
||||||
|
|
||||||
if (withEconomy.GetOverTime().Last().Alloy < production.Alloy)
|
if (withEconomy.GetOverTime().Last().Alloy < production.Alloy)
|
||||||
withToasts.AddToast(new ToastModel
|
toastService.AddToast(new ToastModel
|
||||||
{
|
{
|
||||||
Title = "Not Enough Alloy", Message = "Build more bases!",
|
Title = "Not Enough Alloy", Message = "Build more bases!",
|
||||||
SeverityType = SeverityType.Error
|
SeverityType = SeverityType.Error
|
||||||
@@ -346,12 +391,12 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool HandleSupply(EntityModel entity, IToastService withToasts, ref int atInterval)
|
private bool HandleSupply(EntityModel entity, ref int atInterval)
|
||||||
{
|
{
|
||||||
var minSupplyInterval = WillMeetSupply(entity);
|
var minSupplyInterval = WillMeetSupply(entity);
|
||||||
if (minSupplyInterval == null)
|
if (minSupplyInterval == null)
|
||||||
{
|
{
|
||||||
withToasts.AddToast(new ToastModel
|
toastService.AddToast(new ToastModel
|
||||||
{
|
{
|
||||||
Title = "Supply Cap Reached", Message = "Build more supply!",
|
Title = "Supply Cap Reached", Message = "Build more supply!",
|
||||||
SeverityType = SeverityType.Error
|
SeverityType = SeverityType.Error
|
||||||
@@ -365,12 +410,12 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool HandleTrainingQueue(EntityModel entity, IToastService withToasts, ref int atInterval)
|
private bool HandleTrainingQueue(EntityModel entity, ref int atInterval)
|
||||||
{
|
{
|
||||||
var minSupplyInterval = WillMeetSupply(entity);
|
var minSupplyInterval = WillMeetSupply(entity);
|
||||||
if (minSupplyInterval == null)
|
if (minSupplyInterval == null)
|
||||||
{
|
{
|
||||||
withToasts.AddToast(new ToastModel
|
toastService.AddToast(new ToastModel
|
||||||
{
|
{
|
||||||
Title = "Supply Cap Reached", Message = "Build more supply!",
|
Title = "Supply Cap Reached", Message = "Build more supply!",
|
||||||
SeverityType = SeverityType.Error
|
SeverityType = SeverityType.Error
|
||||||
@@ -385,12 +430,12 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private bool HandleRequirements(EntityModel entity, IToastService withToasts, ref int atInterval)
|
private bool HandleRequirements(EntityModel entity, ref int atInterval)
|
||||||
{
|
{
|
||||||
var minRequirementInterval = WillMeetRequirements(entity);
|
var minRequirementInterval = WillMeetRequirements(entity);
|
||||||
if (minRequirementInterval == null)
|
if (minRequirementInterval == null)
|
||||||
{
|
{
|
||||||
withToasts.AddToast(new ToastModel
|
toastService.AddToast(new ToastModel
|
||||||
{
|
{
|
||||||
Title = "Missing Requirements", Message = "You don't have what's needed for this unit.",
|
Title = "Missing Requirements", Message = "You don't have what's needed for this unit.",
|
||||||
SeverityType = SeverityType.Error
|
SeverityType = SeverityType.Error
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Text.Json.Serialization;
|
using System.Text.Json.Serialization;
|
||||||
using Model.BuildOrders;
|
using Model.BuildOrders;
|
||||||
using Model.Entity;
|
|
||||||
using YamlDotNet.Serialization;
|
using YamlDotNet.Serialization;
|
||||||
|
|
||||||
namespace Services.Immortal;
|
namespace Services.Immortal;
|
||||||
|
|||||||
@@ -8,23 +8,98 @@ namespace Services.Immortal;
|
|||||||
|
|
||||||
public class EconomyComparisionService : IEconomyComparisonService
|
public class EconomyComparisionService : IEconomyComparisonService
|
||||||
{
|
{
|
||||||
public List<BuildToCompareModel> BuildsToCompare { get; set; }
|
private readonly int IntervalMax = 1024;
|
||||||
|
|
||||||
public EconomyComparisionService()
|
public EconomyComparisionService()
|
||||||
{
|
{
|
||||||
BuildsToCompare = new List<BuildToCompareModel>()
|
BuildsToCompare = new List<BuildToCompareModel>
|
||||||
{
|
{
|
||||||
new BuildToCompareModel { NumberOfTownHallExpansions = 0, Faction = DataType.FACTION_Aru, ChartColor = "green"},
|
new() { NumberOfTownHallExpansions = 0, Faction = DataType.FACTION_Aru, ChartColor = "green" },
|
||||||
new BuildToCompareModel { NumberOfTownHallExpansions = 0, Faction = DataType.FACTION_Aru, ChartColor = "red"}
|
new() { NumberOfTownHallExpansions = 0, Faction = DataType.FACTION_Aru, ChartColor = "red" }
|
||||||
};
|
};
|
||||||
|
|
||||||
BuildsToCompare[0].EconomyOverTimeModel = CalculateEconomy(BuildsToCompare[0], 0);
|
BuildsToCompare[0].EconomyOverTimeModel = CalculateEconomy(BuildsToCompare[0]);
|
||||||
BuildsToCompare[1].EconomyOverTimeModel = CalculateEconomy(BuildsToCompare[1], 0);
|
BuildsToCompare[1].EconomyOverTimeModel = CalculateEconomy(BuildsToCompare[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<BuildToCompareModel> BuildsToCompare { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public void ChangeNumberOfTownHalls(int forPlayer, int toCount)
|
||||||
|
{
|
||||||
|
if (BuildsToCompare[forPlayer].NumberOfTownHallExpansions == toCount) return;
|
||||||
|
|
||||||
|
BuildsToCompare[forPlayer].NumberOfTownHallExpansions = toCount;
|
||||||
|
|
||||||
|
CalculateBuildOrder(BuildsToCompare[forPlayer]);
|
||||||
|
|
||||||
|
NotifyDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ChangeTownHallTiming(int forPlayer, int forTownHall, int toTiming)
|
||||||
|
{
|
||||||
|
if (BuildsToCompare[forPlayer].TimeToBuildTownHall[forTownHall] == toTiming) return;
|
||||||
|
|
||||||
|
BuildsToCompare[forPlayer].TimeToBuildTownHall[forTownHall] = toTiming;
|
||||||
|
|
||||||
|
CalculateBuildOrder(BuildsToCompare[forPlayer]);
|
||||||
|
|
||||||
|
NotifyDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetTownHallCount(int forPlayer)
|
||||||
|
{
|
||||||
|
return BuildsToCompare[forPlayer].NumberOfTownHallExpansions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int GetTownHallBuildTime(int forPlayer, int forTownHall)
|
||||||
|
{
|
||||||
|
return BuildsToCompare[forPlayer].TimeToBuildTownHall[forTownHall];
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<int> GetTownHallBuildTimes(int forPlayer)
|
||||||
|
{
|
||||||
|
return BuildsToCompare[forPlayer].TimeToBuildTownHall;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ChangeFaction(int forPlayer, string toFaction)
|
||||||
|
{
|
||||||
|
if (BuildsToCompare[forPlayer].Faction.Equals(toFaction)) return;
|
||||||
|
|
||||||
|
BuildsToCompare[forPlayer].Faction = toFaction;
|
||||||
|
NotifyDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetFaction(int forPlayer)
|
||||||
|
{
|
||||||
|
return BuildsToCompare[forPlayer].Faction;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ChangeColor(int forPlayer, string toColor)
|
||||||
|
{
|
||||||
|
if (BuildsToCompare[forPlayer].ChartColor.Equals(toColor)) return;
|
||||||
|
|
||||||
|
BuildsToCompare[forPlayer].ChartColor = toColor;
|
||||||
|
NotifyDataChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetColor(int forPlayer)
|
||||||
|
{
|
||||||
|
return BuildsToCompare[forPlayer].ChartColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Subscribe(Action action)
|
||||||
|
{
|
||||||
|
OnChange += action;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Unsubscribe(Action action)
|
||||||
|
{
|
||||||
|
OnChange -= action;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void CalculateBuildOrder(BuildToCompareModel buildToCompare)
|
||||||
void CalculateBuildOrder(BuildToCompareModel buildToCompare)
|
|
||||||
{
|
{
|
||||||
buildToCompare.BuildOrderModel = new BuildOrderModel(buildToCompare.Faction);
|
buildToCompare.BuildOrderModel = new BuildOrderModel(buildToCompare.Faction);
|
||||||
|
|
||||||
@@ -36,15 +111,16 @@ public class EconomyComparisionService : IEconomyComparisonService
|
|||||||
|
|
||||||
Add(townHall, buildToCompare, time);
|
Add(townHall, buildToCompare, time);
|
||||||
Add(townHallMining2, buildToCompare, time + townHall.Production()!.BuildTime);
|
Add(townHallMining2, buildToCompare, time + townHall.Production()!.BuildTime);
|
||||||
Add(townHallMining3, buildToCompare, time + townHall.Production()!.BuildTime + townHallMining2.Production()!.BuildTime);
|
Add(townHallMining3, buildToCompare,
|
||||||
|
time + townHall.Production()!.BuildTime + townHallMining2.Production()!.BuildTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
CalculateEconomy(buildToCompare, 0);
|
CalculateEconomy(buildToCompare);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Add(EntityModel entityModel, BuildToCompareModel buildToCompare, int atInterval)
|
public void Add(EntityModel entityModel, BuildToCompareModel buildToCompare, int atInterval)
|
||||||
{
|
{
|
||||||
BuildOrderModel buildOrder = buildToCompare.BuildOrderModel;
|
var buildOrder = buildToCompare.BuildOrderModel;
|
||||||
|
|
||||||
|
|
||||||
if (!buildOrder.StartedOrders.ContainsKey(atInterval))
|
if (!buildOrder.StartedOrders.ContainsKey(atInterval))
|
||||||
@@ -64,17 +140,12 @@ public class EconomyComparisionService : IEconomyComparisonService
|
|||||||
NotifyDataChanged();
|
NotifyDataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
private int IntervalMax = 1024;
|
|
||||||
|
|
||||||
private List<EconomyModel> CalculateEconomy(BuildToCompareModel buildToCompare, int fromInterval = 0)
|
private List<EconomyModel> CalculateEconomy(BuildToCompareModel buildToCompare, int fromInterval = 0)
|
||||||
{
|
{
|
||||||
// We don't consider things mining at zero seconds
|
// We don't consider things mining at zero seconds
|
||||||
if (fromInterval == 0)
|
if (fromInterval == 0) fromInterval = 1;
|
||||||
{
|
|
||||||
fromInterval = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
BuildOrderModel buildOrder = buildToCompare.BuildOrderModel;
|
var buildOrder = buildToCompare.BuildOrderModel;
|
||||||
|
|
||||||
List<EconomyModel> buildEconomyOverTime = buildToCompare.EconomyOverTimeModel;
|
List<EconomyModel> buildEconomyOverTime = buildToCompare.EconomyOverTimeModel;
|
||||||
|
|
||||||
@@ -196,92 +267,6 @@ public class EconomyComparisionService : IEconomyComparisonService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void ChangeNumberOfTownHalls(int forPlayer, int toCount)
|
|
||||||
{
|
|
||||||
if (BuildsToCompare[forPlayer].NumberOfTownHallExpansions == toCount)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
BuildsToCompare[forPlayer].NumberOfTownHallExpansions = toCount;
|
|
||||||
|
|
||||||
CalculateBuildOrder(BuildsToCompare[forPlayer]);
|
|
||||||
|
|
||||||
NotifyDataChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ChangeTownHallTiming(int forPlayer, int forTownHall, int toTiming)
|
|
||||||
{
|
|
||||||
if (BuildsToCompare[forPlayer].TimeToBuildTownHall[forTownHall] == toTiming)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
BuildsToCompare[forPlayer].TimeToBuildTownHall[forTownHall] = toTiming;
|
|
||||||
|
|
||||||
CalculateBuildOrder(BuildsToCompare[forPlayer]);
|
|
||||||
|
|
||||||
NotifyDataChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetTownHallCount(int forPlayer)
|
|
||||||
{
|
|
||||||
return BuildsToCompare[forPlayer].NumberOfTownHallExpansions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetTownHallBuildTime(int forPlayer, int forTownHall)
|
|
||||||
{
|
|
||||||
return BuildsToCompare[forPlayer].TimeToBuildTownHall[forTownHall];
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<int> GetTownHallBuildTimes(int forPlayer)
|
|
||||||
{
|
|
||||||
return BuildsToCompare[forPlayer].TimeToBuildTownHall;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ChangeFaction(int forPlayer, string toFaction)
|
|
||||||
{
|
|
||||||
if (BuildsToCompare[forPlayer].Faction.Equals(toFaction))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
BuildsToCompare[forPlayer].Faction = toFaction;
|
|
||||||
NotifyDataChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetFaction(int forPlayer)
|
|
||||||
{
|
|
||||||
return BuildsToCompare[forPlayer].Faction;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ChangeColor(int forPlayer, string toColor)
|
|
||||||
{
|
|
||||||
if (BuildsToCompare[forPlayer].ChartColor.Equals(toColor))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
BuildsToCompare[forPlayer].ChartColor = toColor;
|
|
||||||
NotifyDataChanged();
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetColor(int forPlayer)
|
|
||||||
{
|
|
||||||
return BuildsToCompare[forPlayer].ChartColor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Subscribe(Action action)
|
|
||||||
{
|
|
||||||
OnChange += action;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Unsubscribe(Action action)
|
|
||||||
{
|
|
||||||
OnChange -= action;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private event Action OnChange = null!;
|
private event Action OnChange = null!;
|
||||||
|
|
||||||
private void NotifyDataChanged()
|
private void NotifyDataChanged()
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using Model.BuildOrders;
|
using Model.Economy;
|
||||||
using Model.Economy;
|
|
||||||
using Model.Entity;
|
using Model.Entity;
|
||||||
using Model.Types;
|
using Model.Types;
|
||||||
|
|
||||||
@@ -29,10 +28,7 @@ public class EconomyService : IEconomyService
|
|||||||
public void Calculate(IBuildOrderService buildOrder, ITimingService timing, int fromInterval)
|
public void Calculate(IBuildOrderService buildOrder, ITimingService timing, int fromInterval)
|
||||||
{
|
{
|
||||||
// We don't consider things mining at zero seconds
|
// We don't consider things mining at zero seconds
|
||||||
if (fromInterval == 0)
|
if (fromInterval == 0) fromInterval = 1;
|
||||||
{
|
|
||||||
fromInterval = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO Break all this up
|
//TODO Break all this up
|
||||||
if (buildEconomyOverTime == null)
|
if (buildEconomyOverTime == null)
|
||||||
@@ -44,7 +40,8 @@ public class EconomyService : IEconomyService
|
|||||||
|
|
||||||
|
|
||||||
if (buildEconomyOverTime.Count > timing.GetAttackTime())
|
if (buildEconomyOverTime.Count > timing.GetAttackTime())
|
||||||
buildEconomyOverTime.RemoveRange(timing.GetAttackTime(), buildEconomyOverTime.Count - timing.GetAttackTime());
|
buildEconomyOverTime.RemoveRange(timing.GetAttackTime(),
|
||||||
|
buildEconomyOverTime.Count - timing.GetAttackTime());
|
||||||
|
|
||||||
while (buildEconomyOverTime.Count < timing.GetAttackTime())
|
while (buildEconomyOverTime.Count < timing.GetAttackTime())
|
||||||
buildEconomyOverTime.Add(new EconomyModel { Interval = buildEconomyOverTime.Count - 1 });
|
buildEconomyOverTime.Add(new EconomyModel { Interval = buildEconomyOverTime.Count - 1 });
|
||||||
@@ -70,6 +67,14 @@ public class EconomyService : IEconomyService
|
|||||||
NotifyDataChanged();
|
NotifyDataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public EconomyModel GetEconomy(int atInterval)
|
||||||
|
{
|
||||||
|
if (atInterval >= buildEconomyOverTime.Count) return buildEconomyOverTime.Last();
|
||||||
|
|
||||||
|
return buildEconomyOverTime[atInterval];
|
||||||
|
}
|
||||||
|
|
||||||
private static void SetupCurrentInverval(IBuildOrderService buildOrder, EconomyModel economyAtSecond, int interval)
|
private static void SetupCurrentInverval(IBuildOrderService buildOrder, EconomyModel economyAtSecond, int interval)
|
||||||
{
|
{
|
||||||
economyAtSecond.Interval = interval;
|
economyAtSecond.Interval = interval;
|
||||||
@@ -129,7 +134,7 @@ public class EconomyService : IEconomyService
|
|||||||
*/
|
*/
|
||||||
private static int CalculateCreatingWorkerCosts(EconomyModel economyAtSecond)
|
private static int CalculateCreatingWorkerCosts(EconomyModel economyAtSecond)
|
||||||
{
|
{
|
||||||
int createdWorkers = 0;
|
var createdWorkers = 0;
|
||||||
|
|
||||||
if (economyAtSecond.CreatingWorkerCount > 0)
|
if (economyAtSecond.CreatingWorkerCount > 0)
|
||||||
for (var i = 0; i < economyAtSecond.CreatingWorkerDelays.Count; i++)
|
for (var i = 0; i < economyAtSecond.CreatingWorkerDelays.Count; i++)
|
||||||
@@ -158,7 +163,7 @@ public class EconomyService : IEconomyService
|
|||||||
*/
|
*/
|
||||||
private static int AddFundsFromHarvestPoints(EconomyModel economyAtSecond, float freeWorkers)
|
private static int AddFundsFromHarvestPoints(EconomyModel economyAtSecond, float freeWorkers)
|
||||||
{
|
{
|
||||||
int workersNeeded = 0;
|
var workersNeeded = 0;
|
||||||
|
|
||||||
foreach (var entity in economyAtSecond.HarvestPoints)
|
foreach (var entity in economyAtSecond.HarvestPoints)
|
||||||
{
|
{
|
||||||
@@ -188,10 +193,7 @@ public class EconomyService : IEconomyService
|
|||||||
|
|
||||||
private static void AddPassivePyreGain(int interval, EconomyModel economyAtSecond)
|
private static void AddPassivePyreGain(int interval, EconomyModel economyAtSecond)
|
||||||
{
|
{
|
||||||
if (interval % 3 == 0)
|
if (interval % 3 == 0) economyAtSecond.Pyre += 1;
|
||||||
{
|
|
||||||
economyAtSecond.Pyre += 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CarryOverEconomyFromPreviousInterval(int interval, EconomyModel economyAtSecond)
|
private void CarryOverEconomyFromPreviousInterval(int interval, EconomyModel economyAtSecond)
|
||||||
@@ -210,14 +212,6 @@ public class EconomyService : IEconomyService
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public EconomyModel GetEconomy(int atInterval)
|
|
||||||
{
|
|
||||||
if (atInterval >= buildEconomyOverTime.Count) return buildEconomyOverTime.Last();
|
|
||||||
|
|
||||||
return buildEconomyOverTime[atInterval];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private event Action OnChange = null!;
|
private event Action OnChange = null!;
|
||||||
|
|
||||||
private void NotifyDataChanged()
|
private void NotifyDataChanged()
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ namespace Services.Website;
|
|||||||
public class SearchService : ISearchService
|
public class SearchService : ISearchService
|
||||||
{
|
{
|
||||||
private readonly IDocumentationService documentationService;
|
private readonly IDocumentationService documentationService;
|
||||||
|
|
||||||
private bool isLoaded;
|
|
||||||
private readonly INoteService noteService;
|
private readonly INoteService noteService;
|
||||||
|
|
||||||
|
|
||||||
private readonly IWebsiteService websiteService;
|
private readonly IWebsiteService websiteService;
|
||||||
|
|
||||||
|
private bool isLoaded;
|
||||||
|
|
||||||
public SearchService(IWebsiteService websiteService, INoteService noteService,
|
public SearchService(IWebsiteService websiteService, INoteService noteService,
|
||||||
IDocumentationService documentationService)
|
IDocumentationService documentationService)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -29,12 +29,8 @@ public class VariableService : IVariableService
|
|||||||
var variables = (await httpClient.GetFromJsonAsync<Variable[]>("generated/Variables.json"))!
|
var variables = (await httpClient.GetFromJsonAsync<Variable[]>("generated/Variables.json"))!
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
foreach (var variable in variables)
|
foreach (var variable in variables) Variables.Add(variable.Key, variable.Value);
|
||||||
{
|
|
||||||
Variables.Add(variable.Key, variable.Value);
|
|
||||||
}
|
|
||||||
|
|
||||||
isLoaded = true;
|
isLoaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user