Auto formatting
This commit is contained in:
@@ -15,24 +15,24 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<SupportedPlatform Include="browser" />
|
<SupportedPlatform Include="browser"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Markdig" Version="0.28.1" />
|
<PackageReference Include="Markdig" Version="0.28.1"/>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="7.0.0-preview.2.22153.2" />
|
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="7.0.0-preview.2.22153.2"/>
|
||||||
<PackageReference Include="Microsoft.Extensions.Localization" Version="7.0.0-preview.2.22153.2" />
|
<PackageReference Include="Microsoft.Extensions.Localization" Version="7.0.0-preview.2.22153.2"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Inputs\" />
|
<Folder Include="Inputs\"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Model\Model.csproj" />
|
<ProjectReference Include="..\Model\Model.csproj"/>
|
||||||
<ProjectReference Include="..\Services\Services.csproj" />
|
<ProjectReference Include="..\Services\Services.csproj"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Remove="Inputs\" />
|
<None Remove="Inputs\"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
}
|
}
|
||||||
<div>
|
<div>
|
||||||
<input readonly="@ReadOnly"
|
<input readonly="@ReadOnly"
|
||||||
id="@Id"
|
id="@Id"
|
||||||
class="numberInput"
|
class="numberInput"
|
||||||
type="number"
|
type="number"
|
||||||
min="@Min"
|
min="@Min"
|
||||||
|
|||||||
@@ -4,14 +4,14 @@
|
|||||||
@Label:
|
@Label:
|
||||||
</div>
|
</div>
|
||||||
<label class="switch">
|
<label class="switch">
|
||||||
<input readonly="@ReadOnly"
|
<input readonly="@ReadOnly"
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
id="@labelId"
|
id="@labelId"
|
||||||
class="@ClassStyle"
|
class="@ClassStyle"
|
||||||
checked="@Value"
|
checked="@Value"
|
||||||
@oninput="OnChange"/>
|
@oninput="OnChange"/>
|
||||||
|
|
||||||
<span class="slider"></span>
|
<span class="slider"></span>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
@if (Info != "")
|
@if (Info != "")
|
||||||
@@ -122,4 +122,5 @@
|
|||||||
base.OnInitialized();
|
base.OnInitialized();
|
||||||
labelId = Label.ToLower().Replace(" ", "_");
|
labelId = Label.ToLower().Replace(" ", "_");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
<a href="@Href" target="_blank" class="codeLinkButton">
|
<a href="@Href" target="_blank" class="codeLinkButton">
|
||||||
View on GitHub <i class="fa-brands fa-github" style="font-size: 24px; margin-left: 5px;"></i>
|
View on GitHub <i class="fa-brands fa-github" style="font-size: 24px; margin-left: 5px;"></i>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<a href="@Href" class="linkButtonContainer" >
|
<a href="@Href" class="linkButtonContainer">
|
||||||
@ChildContent
|
@ChildContent
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
public RenderFragment ChildContent { get; set; } = default!;
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
</style>
|
</style>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public RenderFragment ChildContent { get; set; } = default!;
|
public RenderFragment ChildContent { get; set; } = default!;
|
||||||
|
|
||||||
@@ -38,4 +39,5 @@
|
|||||||
{
|
{
|
||||||
SearchService.Show();
|
SearchService.Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -28,12 +28,13 @@
|
|||||||
|
|
||||||
<div class="sectionNav">
|
<div class="sectionNav">
|
||||||
|
|
||||||
<button onclick="@(() => { MenuClicked(webSection.Id); })" class="@sectionButtonStyle"><i class="fa-solid @webSection.Icon"></i>
|
<button onclick="@(() => { MenuClicked(webSection.Id); })" class="@sectionButtonStyle">
|
||||||
|
<i class="fa-solid @webSection.Icon"></i>
|
||||||
@if (!webSection.OnlyIcon)
|
@if (!webSection.OnlyIcon)
|
||||||
{
|
{
|
||||||
<span style="margin-left: 12px">@webSection.Name</span>
|
<span style="margin-left: 12px">@webSection.Name</span>
|
||||||
}
|
}
|
||||||
</button>
|
</button>
|
||||||
@if (isSelected)
|
@if (isSelected)
|
||||||
{
|
{
|
||||||
<div class="navMenuPosition">
|
<div class="navMenuPosition">
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
|
<div class="mobileFooter">
|
||||||
|
|
||||||
|
|
||||||
<div class="mobileFooter">
|
|
||||||
<div class="mobileNavSectionsContainer">
|
<div class="mobileNavSectionsContainer">
|
||||||
@foreach (var webSection in WebSections)
|
@foreach (var webSection in WebSections)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,10 +4,7 @@ public static class Links
|
|||||||
{
|
{
|
||||||
public static string GetTarget(string link)
|
public static string GetTarget(string link)
|
||||||
{
|
{
|
||||||
if (link.StartsWith("https://"))
|
if (link.StartsWith("https://")) return "_blank";
|
||||||
{
|
|
||||||
return "_blank";
|
|
||||||
}
|
|
||||||
|
|
||||||
return "_self";
|
return "_self";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
@using System.Timers
|
@implements IDisposable;
|
||||||
@implements IDisposable;
|
|
||||||
@inject ISearchService searchService
|
@inject ISearchService searchService
|
||||||
@inject IJSRuntime jsRuntime
|
@inject IJSRuntime jsRuntime
|
||||||
|
|
||||||
@@ -41,7 +40,7 @@
|
|||||||
</button>
|
</button>
|
||||||
@if (!searchPoint.Summary.Trim().Equals(""))
|
@if (!searchPoint.Summary.Trim().Equals(""))
|
||||||
{
|
{
|
||||||
<i> - @searchPoint.Summary</i>
|
<i> - @searchPoint.Summary</i>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
@@ -155,6 +154,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Timer timer = null!;
|
private Timer timer = null!;
|
||||||
|
|
||||||
private void OnSearchChanged()
|
private void OnSearchChanged()
|
||||||
{
|
{
|
||||||
if (timer.Enabled != searchService.IsVisible)
|
if (timer.Enabled != searchService.IsVisible)
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
@using Services.Website
|
@using Services.Website
|
||||||
|
|
||||||
@inject IDataCollectionService DataCollectionService
|
@inject IDataCollectionService DataCollectionService
|
||||||
@inject NavigationManager NavigationManager
|
@inject NavigationManager NavigationManager
|
||||||
|
|
||||||
@@ -26,7 +25,7 @@
|
|||||||
rootUrl = "home";
|
rootUrl = "home";
|
||||||
}
|
}
|
||||||
|
|
||||||
var eventData = new Dictionary<string, string> { { "page", rootUrl }};
|
var eventData = new Dictionary<string, string> { { "page", rootUrl } };
|
||||||
if (splitData.Length > 1)
|
if (splitData.Length > 1)
|
||||||
{
|
{
|
||||||
eventData["inner-page"] = splitData.Last();
|
eventData["inner-page"] = splitData.Last();
|
||||||
|
|||||||
@@ -13,7 +13,6 @@
|
|||||||
@inject IDataCollectionService DataCollectionService
|
@inject IDataCollectionService DataCollectionService
|
||||||
|
|
||||||
@page "/build-calculator"
|
@page "/build-calculator"
|
||||||
|
|
||||||
@using Services.Website
|
@using Services.Website
|
||||||
@implements IDisposable
|
@implements IDisposable
|
||||||
|
|
||||||
@@ -228,7 +227,7 @@
|
|||||||
|
|
||||||
DataCollectionService.SendEvent(
|
DataCollectionService.SendEvent(
|
||||||
DataCollectionKeys.PageInitialized,
|
DataCollectionKeys.PageInitialized,
|
||||||
new Dictionary<string, string> {{"page", "build-calculator"}}
|
new Dictionary<string, string> { { "page", "build-calculator" } }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,8 @@
|
|||||||
<FormDisplayComponent Label="Army units built">
|
<FormDisplayComponent Label="Army units built">
|
||||||
<Display>
|
<Display>
|
||||||
<div class="armyCardsContainer">
|
<div class="armyCardsContainer">
|
||||||
@foreach (var unit in armyCount) {
|
@foreach (var unit in armyCount)
|
||||||
|
{
|
||||||
<div class="armyCard">
|
<div class="armyCard">
|
||||||
<div class="armyCountPosition">
|
<div class="armyCountPosition">
|
||||||
<div class="armyCount">@unit.Value.ToString()x</div>
|
<div class="armyCount">@unit.Value.ToString()x</div>
|
||||||
@@ -72,33 +73,39 @@
|
|||||||
|
|
||||||
List<EntityModel> army = new();
|
List<EntityModel> army = new();
|
||||||
|
|
||||||
protected override void OnInitialized() {
|
protected override void OnInitialized()
|
||||||
|
{
|
||||||
base.OnInitialized();
|
base.OnInitialized();
|
||||||
buildOrder.Subscribe(OnBuildOrderChanged);
|
buildOrder.Subscribe(OnBuildOrderChanged);
|
||||||
timingService.Subscribe(StateHasChanged);
|
timingService.Subscribe(StateHasChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IDisposable.Dispose() {
|
void IDisposable.Dispose()
|
||||||
|
{
|
||||||
buildOrder.Unsubscribe(OnBuildOrderChanged);
|
buildOrder.Unsubscribe(OnBuildOrderChanged);
|
||||||
timingService.Unsubscribe(StateHasChanged);
|
timingService.Unsubscribe(StateHasChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool ShouldRender() {
|
protected override bool ShouldRender()
|
||||||
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
jsRuntime.InvokeVoidAsync("console.time", "ArmyComponent");
|
jsRuntime.InvokeVoidAsync("console.time", "ArmyComponent");
|
||||||
#endif
|
#endif
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnAfterRender(bool firstRender) {
|
protected override void OnAfterRender(bool firstRender)
|
||||||
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
jsRuntime.InvokeVoidAsync("console.timeEnd", "ArmyComponent");
|
jsRuntime.InvokeVoidAsync("console.timeEnd", "ArmyComponent");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnBuildOrderChanged() {
|
void OnBuildOrderChanged()
|
||||||
|
{
|
||||||
var armyCountWas = 0;
|
var armyCountWas = 0;
|
||||||
foreach (var army in armyCount) {
|
foreach (var army in armyCount)
|
||||||
|
{
|
||||||
armyCountWas += army.Value;
|
armyCountWas += army.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,14 +115,19 @@
|
|||||||
|
|
||||||
var entitiesOverTime = buildOrder.GetOrders();
|
var entitiesOverTime = buildOrder.GetOrders();
|
||||||
|
|
||||||
foreach (var entitiesAtTime in entitiesOverTime) {
|
foreach (var entitiesAtTime in entitiesOverTime)
|
||||||
foreach (var entity in entitiesAtTime.Value) {
|
{
|
||||||
if (entity.EntityType == EntityType.Army) {
|
foreach (var entity in entitiesAtTime.Value)
|
||||||
if (!armyCount.TryAdd(entity.Info().Name, 1)) {
|
{
|
||||||
|
if (entity.EntityType == EntityType.Army)
|
||||||
|
{
|
||||||
|
if (!armyCount.TryAdd(entity.Info().Name, 1))
|
||||||
|
{
|
||||||
armyCount[entity.Info().Name]++;
|
armyCount[entity.Info().Name]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entity.Production() != null && entity.Production().BuildTime + entitiesAtTime.Key > lastInterval) {
|
if (entity.Production() != null && entity.Production().BuildTime + entitiesAtTime.Key > lastInterval)
|
||||||
|
{
|
||||||
lastInterval = entity.Production().BuildTime + entitiesAtTime.Key;
|
lastInterval = entity.Production().BuildTime + entitiesAtTime.Key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -124,12 +136,14 @@
|
|||||||
|
|
||||||
//TODO Better
|
//TODO Better
|
||||||
var armyCountIs = 0;
|
var armyCountIs = 0;
|
||||||
foreach (var army in armyCount) {
|
foreach (var army in armyCount)
|
||||||
|
{
|
||||||
armyCountIs += army.Value;
|
armyCountIs += army.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (armyCountWas != armyCountIs) {
|
if (armyCountWas != armyCountIs)
|
||||||
|
{
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,20 +13,19 @@ else
|
|||||||
<div class="chartsContainer">
|
<div class="chartsContainer">
|
||||||
@foreach (var chart in charts)
|
@foreach (var chart in charts)
|
||||||
{
|
{
|
||||||
Dictionary<int, bool> takenPixels = new Dictionary<int, bool>();
|
var takenPixels = new Dictionary<int, bool>();
|
||||||
|
|
||||||
<div style="width: @chart.IntervalDisplayMax.ToString()px; height: @chart.ValueDisplayMax.ToString()px">
|
<div style="width: @chart.IntervalDisplayMax.ToString()px; height: @chart.ValueDisplayMax.ToString()px">
|
||||||
<div style="position: relative; border: 2px solid gray; border-radius:2px; width: @chart.IntervalDisplayMax.ToString()px; height: @chart.ValueDisplayMax.ToString()px">
|
<div style="position: relative; border: 2px solid gray; border-radius:2px; width: @chart.IntervalDisplayMax.ToString()px; height: @chart.ValueDisplayMax.ToString()px">
|
||||||
@foreach (var point in chart.Points)
|
@foreach (var point in chart.Points)
|
||||||
{
|
{
|
||||||
var x = int.Parse(point.GetInterval(chart.HighestIntervalPoint, chart.IntervalDisplayMax));
|
var x = int.Parse(point.GetInterval(chart.HighestIntervalPoint, chart.IntervalDisplayMax));
|
||||||
if (takenPixels.ContainsKey(x)) continue;
|
if (takenPixels.ContainsKey(x)) continue;
|
||||||
|
|
||||||
|
|
||||||
takenPixels.Add(x, true);
|
takenPixels.Add(x, true);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div style="position: absolute;
|
<div style="position: absolute;
|
||||||
bottom:@point.GetValue(chart.HighestValuePoint, chart.ValueDisplayMax)px;
|
bottom:@point.GetValue(chart.HighestValuePoint, chart.ValueDisplayMax)px;
|
||||||
left:@point.GetInterval(chart.HighestIntervalPoint, chart.IntervalDisplayMax)px;
|
left:@point.GetInterval(chart.HighestIntervalPoint, chart.IntervalDisplayMax)px;
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
@inject IImmortalSelectionService FilterService
|
@inject IImmortalSelectionService FilterService
|
||||||
@inject IBuildOrderService BuildOrderService
|
@inject IBuildOrderService BuildOrderService
|
||||||
@inject IStorageService StorageService
|
@inject IStorageService StorageService
|
||||||
|
|
||||||
@using Services.Website
|
@using Services.Website
|
||||||
@implements IDisposable
|
@implements IDisposable
|
||||||
|
|
||||||
|
|||||||
@@ -6,9 +6,13 @@
|
|||||||
<FormLabelComponent>Faction</FormLabelComponent>
|
<FormLabelComponent>Faction</FormLabelComponent>
|
||||||
<ChildContent>
|
<ChildContent>
|
||||||
<option value="@DataType.FACTION_Aru"
|
<option value="@DataType.FACTION_Aru"
|
||||||
selected="@(FilterService.GetFaction().Equals(DataType.FACTION_Aru))">Aru</option>
|
selected="@(FilterService.GetFaction().Equals(DataType.FACTION_Aru))">
|
||||||
|
Aru
|
||||||
|
</option>
|
||||||
<option value="@DataType.FACTION_QRath"
|
<option value="@DataType.FACTION_QRath"
|
||||||
selected="@(FilterService.GetFaction().Equals(DataType.FACTION_QRath))">Q'Rath</option>
|
selected="@(FilterService.GetFaction().Equals(DataType.FACTION_QRath))">
|
||||||
|
Q'Rath
|
||||||
|
</option>
|
||||||
</ChildContent>
|
</ChildContent>
|
||||||
</FormSelectComponent>
|
</FormSelectComponent>
|
||||||
|
|
||||||
@@ -18,16 +22,24 @@
|
|||||||
@if (FilterService.GetFaction() == DataType.FACTION_QRath)
|
@if (FilterService.GetFaction() == DataType.FACTION_QRath)
|
||||||
{
|
{
|
||||||
<option value="@DataType.IMMORTAL_Orzum"
|
<option value="@DataType.IMMORTAL_Orzum"
|
||||||
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Orzum))">Orzum</option>
|
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Orzum))">
|
||||||
|
Orzum
|
||||||
|
</option>
|
||||||
<option value="@DataType.IMMORTAL_Ajari"
|
<option value="@DataType.IMMORTAL_Ajari"
|
||||||
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Ajari))">Ajari</option>
|
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Ajari))">
|
||||||
|
Ajari
|
||||||
|
</option>
|
||||||
}
|
}
|
||||||
@if (FilterService.GetFaction() == DataType.FACTION_Aru)
|
@if (FilterService.GetFaction() == DataType.FACTION_Aru)
|
||||||
{
|
{
|
||||||
<option value="@DataType.IMMORTAL_Mala"
|
<option value="@DataType.IMMORTAL_Mala"
|
||||||
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Mala))">Mala</option>
|
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Mala))">
|
||||||
|
Mala
|
||||||
|
</option>
|
||||||
<option value="@DataType.IMMORTAL_Xol"
|
<option value="@DataType.IMMORTAL_Xol"
|
||||||
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Xol))">Xol</option>
|
selected="@(FilterService.GetImmortal().Equals(DataType.IMMORTAL_Xol))">
|
||||||
|
Xol
|
||||||
|
</option>
|
||||||
}
|
}
|
||||||
</ChildContent>
|
</ChildContent>
|
||||||
</FormSelectComponent>
|
</FormSelectComponent>
|
||||||
|
|||||||
@@ -13,8 +13,10 @@
|
|||||||
|
|
||||||
<InputPanelComponent>
|
<InputPanelComponent>
|
||||||
<div class="keyContainer">
|
<div class="keyContainer">
|
||||||
@foreach (var hotkey in hotkeys) {
|
@foreach (var hotkey in hotkeys)
|
||||||
if (hotkey.IsHidden) {
|
{
|
||||||
|
if (hotkey.IsHidden)
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,14 +33,17 @@
|
|||||||
var borderRadius = hotkey.PositionY == 0 ? 12 : 0;
|
var borderRadius = hotkey.PositionY == 0 ? 12 : 0;
|
||||||
|
|
||||||
var border = "1px solid black";
|
var border = "1px solid black";
|
||||||
if (hotkey.KeyText.Equals(key)) {
|
if (hotkey.KeyText.Equals(key))
|
||||||
|
{
|
||||||
border = "5px solid black";
|
border = "5px solid black";
|
||||||
}
|
}
|
||||||
if (hotkey.KeyText.Equals(controlGroup)) {
|
if (hotkey.KeyText.Equals(controlGroup))
|
||||||
|
{
|
||||||
color = "#257525";
|
color = "#257525";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hotkey.KeyText.Equals("SPACE") && KeyService.IsHoldingSpace()) {
|
if (hotkey.KeyText.Equals("SPACE") && KeyService.IsHoldingSpace())
|
||||||
|
{
|
||||||
border = "5px solid green";
|
border = "5px solid green";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,23 +82,28 @@
|
|||||||
|
|
||||||
<div @onclick="e => ButtonClicked(e, hotkey)" style="@usedStyle">
|
<div @onclick="e => ButtonClicked(e, hotkey)" style="@usedStyle">
|
||||||
@keyText
|
@keyText
|
||||||
@foreach (var entity in data.Values) {
|
@foreach (var entity in data.Values)
|
||||||
if (InvalidKey(entity, hotkey) || InvalidKeyGroup(entity, hotkey) || InvalidHoldSpace(entity)) {
|
{
|
||||||
|
if (InvalidKey(entity, hotkey) || InvalidKeyGroup(entity, hotkey) || InvalidHoldSpace(entity))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (InvalidFaction(entity)) {
|
if (InvalidFaction(entity))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (InvalidVanguard(entity) || InvalidNonVanguard(entity)) {
|
if (InvalidVanguard(entity) || InvalidNonVanguard(entity))
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var isVanguard = entity.VanguardAdded() != null;
|
var isVanguard = entity.VanguardAdded() != null;
|
||||||
var style = isVanguard ? "font-weight: bold;" : "";
|
var style = isVanguard ? "font-weight: bold;" : "";
|
||||||
|
|
||||||
if (BuildOrderService.WillMeetRequirements(entity) == null) {
|
if (BuildOrderService.WillMeetRequirements(entity) == null)
|
||||||
|
{
|
||||||
style += "color:gray; font-style: italic;";
|
style += "color:gray; font-style: italic;";
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +147,8 @@
|
|||||||
private string controlGroup = "C";
|
private string controlGroup = "C";
|
||||||
private string key = "";
|
private string key = "";
|
||||||
|
|
||||||
protected override void OnInitialized() {
|
protected override void OnInitialized()
|
||||||
|
{
|
||||||
base.OnInitialized();
|
base.OnInitialized();
|
||||||
|
|
||||||
KeyService.Subscribe(OnKeyPressed);
|
KeyService.Subscribe(OnKeyPressed);
|
||||||
@@ -145,7 +156,8 @@
|
|||||||
BuildOrderService.Subscribe(OnBuilderOrderChanged);
|
BuildOrderService.Subscribe(OnBuilderOrderChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IDisposable.Dispose() {
|
void IDisposable.Dispose()
|
||||||
|
{
|
||||||
KeyService.Unsubscribe(OnKeyPressed);
|
KeyService.Unsubscribe(OnKeyPressed);
|
||||||
FilterService.Unsubscribe(StateHasChanged);
|
FilterService.Unsubscribe(StateHasChanged);
|
||||||
BuildOrderService.Unsubscribe(OnBuilderOrderChanged);
|
BuildOrderService.Unsubscribe(OnBuilderOrderChanged);
|
||||||
@@ -153,14 +165,17 @@
|
|||||||
|
|
||||||
int completedTimeCount = 0;
|
int completedTimeCount = 0;
|
||||||
|
|
||||||
void OnBuilderOrderChanged() {
|
void OnBuilderOrderChanged()
|
||||||
if (BuildOrderService.UniqueCompletedTimes.Count != completedTimeCount) {
|
{
|
||||||
|
if (BuildOrderService.UniqueCompletedTimes.Count != completedTimeCount)
|
||||||
|
{
|
||||||
completedTimeCount = BuildOrderService.UniqueCompletedTimes.Count;
|
completedTimeCount = BuildOrderService.UniqueCompletedTimes.Count;
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool ShouldRender() {
|
protected override bool ShouldRender()
|
||||||
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
JsRuntime.InvokeVoidAsync("console.time", "HotKeyViewerComponent");
|
JsRuntime.InvokeVoidAsync("console.time", "HotKeyViewerComponent");
|
||||||
#endif
|
#endif
|
||||||
@@ -168,15 +183,18 @@
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnAfterRender(bool firstRender) {
|
protected override void OnAfterRender(bool firstRender)
|
||||||
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
JsRuntime.InvokeVoidAsync("console.timeEnd", "HotKeyViewerComponent");
|
JsRuntime.InvokeVoidAsync("console.timeEnd", "HotKeyViewerComponent");
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move to Filter Service
|
// Move to Filter Service
|
||||||
bool InvalidFaction(EntityModel entity) {
|
bool InvalidFaction(EntityModel entity)
|
||||||
if (entity.Faction() != null && entity.Faction()?.Faction != FilterService.GetFaction() && FilterService.GetFaction() != DataType.Any) {
|
{
|
||||||
|
if (entity.Faction() != null && entity.Faction()?.Faction != FilterService.GetFaction() && FilterService.GetFaction() != DataType.Any)
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,10 +202,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Move to Filter Service
|
// Move to Filter Service
|
||||||
bool InvalidVanguard(EntityModel entity) {
|
bool InvalidVanguard(EntityModel entity)
|
||||||
|
{
|
||||||
if (entity.VanguardAdded() != null
|
if (entity.VanguardAdded() != null
|
||||||
&& entity.VanguardAdded()?.ImmortalId != FilterService.GetImmortal()
|
&& entity.VanguardAdded()?.ImmortalId != FilterService.GetImmortal()
|
||||||
&& FilterService.GetImmortal() != DataType.Any) {
|
&& FilterService.GetImmortal() != DataType.Any)
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,10 +215,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Move to Filter Service
|
// Move to Filter Service
|
||||||
bool InvalidNonVanguard(EntityModel entity) {
|
bool InvalidNonVanguard(EntityModel entity)
|
||||||
if (entity.Replaceds().Count > 0) {
|
{
|
||||||
foreach (var replaced in entity.Replaceds()) {
|
if (entity.Replaceds().Count > 0)
|
||||||
if (FilterService.GetImmortal() == replaced.ImmortalId) {
|
{
|
||||||
|
foreach (var replaced in entity.Replaceds())
|
||||||
|
{
|
||||||
|
if (FilterService.GetImmortal() == replaced.ImmortalId)
|
||||||
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -207,90 +231,114 @@
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InvalidKey(EntityModel entity, HotkeyModel key) {
|
bool InvalidKey(EntityModel entity, HotkeyModel key)
|
||||||
if (entity.Hotkey()?.Hotkey == key.KeyText) {
|
{
|
||||||
|
if (entity.Hotkey()?.Hotkey == key.KeyText)
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InvalidKeyGroup(EntityModel entity, HotkeyModel key) {
|
bool InvalidKeyGroup(EntityModel entity, HotkeyModel key)
|
||||||
if (entity.Hotkey()?.HotkeyGroup == controlGroup) {
|
{
|
||||||
|
if (entity.Hotkey()?.HotkeyGroup == controlGroup)
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InvalidKey(EntityModel entity) {
|
bool InvalidKey(EntityModel entity)
|
||||||
if (entity.Hotkey()?.Hotkey == key) {
|
{
|
||||||
|
if (entity.Hotkey()?.Hotkey == key)
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InvalidKeyGroup(EntityModel entity) {
|
bool InvalidKeyGroup(EntityModel entity)
|
||||||
if (entity.Hotkey()?.HotkeyGroup == controlGroup) {
|
{
|
||||||
|
if (entity.Hotkey()?.HotkeyGroup == controlGroup)
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool InvalidHoldSpace(EntityModel entity) {
|
bool InvalidHoldSpace(EntityModel entity)
|
||||||
if (entity.Hotkey()?.HoldSpace == KeyService.IsHoldingSpace()) {
|
{
|
||||||
|
if (entity.Hotkey()?.HoldSpace == KeyService.IsHoldingSpace())
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnKeyPressed() {
|
void OnKeyPressed()
|
||||||
|
{
|
||||||
var controlGroupWas = controlGroup;
|
var controlGroupWas = controlGroup;
|
||||||
var keyWas = key;
|
var keyWas = key;
|
||||||
|
|
||||||
if (KeyService.GetAllPressedKeys().Contains("Z")) {
|
if (KeyService.GetAllPressedKeys().Contains("Z"))
|
||||||
|
{
|
||||||
controlGroup = "Z";
|
controlGroup = "Z";
|
||||||
}
|
}
|
||||||
if (KeyService.GetAllPressedKeys().Contains("TAB")) {
|
if (KeyService.GetAllPressedKeys().Contains("TAB"))
|
||||||
|
{
|
||||||
controlGroup = "TAB";
|
controlGroup = "TAB";
|
||||||
}
|
}
|
||||||
if (KeyService.GetAllPressedKeys().Contains("C")) {
|
if (KeyService.GetAllPressedKeys().Contains("C"))
|
||||||
|
{
|
||||||
controlGroup = "C";
|
controlGroup = "C";
|
||||||
}
|
}
|
||||||
if (KeyService.GetAllPressedKeys().Contains("D")) {
|
if (KeyService.GetAllPressedKeys().Contains("D"))
|
||||||
|
{
|
||||||
controlGroup = "D";
|
controlGroup = "D";
|
||||||
}
|
}
|
||||||
if (KeyService.GetAllPressedKeys().Contains("V")) {
|
if (KeyService.GetAllPressedKeys().Contains("V"))
|
||||||
|
{
|
||||||
controlGroup = "V";
|
controlGroup = "V";
|
||||||
}
|
}
|
||||||
if (KeyService.GetAllPressedKeys().Contains("ALT")) {
|
if (KeyService.GetAllPressedKeys().Contains("ALT"))
|
||||||
|
{
|
||||||
controlGroup = "ALT";
|
controlGroup = "ALT";
|
||||||
}
|
}
|
||||||
if (KeyService.GetAllPressedKeys().Contains("SHIFT")) {
|
if (KeyService.GetAllPressedKeys().Contains("SHIFT"))
|
||||||
|
{
|
||||||
controlGroup = "SHIFT";
|
controlGroup = "SHIFT";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KeyService.GetAllPressedKeys().Contains("CONTROL")) {
|
if (KeyService.GetAllPressedKeys().Contains("CONTROL"))
|
||||||
|
{
|
||||||
controlGroup = "CONTROL";
|
controlGroup = "CONTROL";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (KeyService.GetAllPressedKeys().Count > 0) {
|
if (KeyService.GetAllPressedKeys().Count > 0)
|
||||||
|
{
|
||||||
key = KeyService.GetAllPressedKeys().First();
|
key = KeyService.GetAllPressedKeys().First();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (controlGroupWas != controlGroup || keyWas != key) {
|
if (controlGroupWas != controlGroup || keyWas != key)
|
||||||
|
{
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void HandleClick() {
|
private void HandleClick()
|
||||||
|
{
|
||||||
var hotkey = KeyService.GetHotkey();
|
var hotkey = KeyService.GetHotkey();
|
||||||
|
|
||||||
if (hotkey == "") {
|
if (hotkey == "")
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hotkey == "`") {
|
if (hotkey == "`")
|
||||||
|
{
|
||||||
BuildOrderService.RemoveLast();
|
BuildOrderService.RemoveLast();
|
||||||
EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval());
|
EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval());
|
||||||
return;
|
return;
|
||||||
@@ -303,31 +351,38 @@
|
|||||||
|
|
||||||
var entity = EntityModel.GetFrom(hotkey!, hotkeyGroup, isHoldSpace, faction, immortal);
|
var entity = EntityModel.GetFrom(hotkey!, hotkeyGroup, isHoldSpace, faction, immortal);
|
||||||
|
|
||||||
if (entity == null) {
|
if (entity == null)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (BuildOrderService.Add(entity, EconomyService)) {
|
if (BuildOrderService.Add(entity, EconomyService))
|
||||||
|
{
|
||||||
EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval());
|
EconomyService.Calculate(BuildOrderService, TimingService, BuildOrderService.GetLastRequestInterval());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ButtonClicked(MouseEventArgs mouseEventArgs, HotkeyModel hotkey) {
|
private void ButtonClicked(MouseEventArgs mouseEventArgs, HotkeyModel hotkey)
|
||||||
|
{
|
||||||
DataCollectionService.SendEvent(
|
DataCollectionService.SendEvent(
|
||||||
DataCollectionKeys.BuildCalcInput,
|
DataCollectionKeys.BuildCalcInput,
|
||||||
new Dictionary<string, string> { { "key", hotkey.KeyText.ToLower() }, { "input-source", "mouse" } }
|
new Dictionary<string, string> { { "key", hotkey.KeyText.ToLower() }, { "input-source", "mouse" } }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
if (hotkey.KeyText.Equals(HotKeyType.SPACE.ToString())) {
|
if (hotkey.KeyText.Equals(HotKeyType.SPACE.ToString()))
|
||||||
if (KeyService.IsHoldingSpace()) {
|
{
|
||||||
|
if (KeyService.IsHoldingSpace())
|
||||||
|
{
|
||||||
KeyService.RemovePressedKey(hotkey.KeyText);
|
KeyService.RemovePressedKey(hotkey.KeyText);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
KeyService.AddPressedKey(hotkey.KeyText);
|
KeyService.AddPressedKey(hotkey.KeyText);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
KeyService.AddPressedKey(hotkey.KeyText);
|
KeyService.AddPressedKey(hotkey.KeyText);
|
||||||
KeyService.RemovePressedKey(hotkey.KeyText);
|
KeyService.RemovePressedKey(hotkey.KeyText);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
{
|
{
|
||||||
DataCollectionService.SendEvent(
|
DataCollectionService.SendEvent(
|
||||||
DataCollectionKeys.BuildCalcInput,
|
DataCollectionKeys.BuildCalcInput,
|
||||||
new Dictionary<string, string> {{"key", e.Key.ToLower()}, {"input-source", "keyboard"}}
|
new Dictionary<string, string> { { "key", e.Key.ToLower() }, { "input-source", "keyboard" } }
|
||||||
);
|
);
|
||||||
|
|
||||||
KeyService.AddPressedKey(e.Key);
|
KeyService.AddPressedKey(e.Key);
|
||||||
|
|||||||
@@ -4,8 +4,6 @@
|
|||||||
@inject IEconomyService EconomyService
|
@inject IEconomyService EconomyService
|
||||||
@inject IToastService ToastService
|
@inject IToastService ToastService
|
||||||
@inject ITimingService TimingService
|
@inject ITimingService TimingService
|
||||||
|
|
||||||
@using System.Data
|
|
||||||
@implements IDisposable
|
@implements IDisposable
|
||||||
|
|
||||||
<FormLayoutComponent>
|
<FormLayoutComponent>
|
||||||
@@ -70,7 +68,6 @@
|
|||||||
WaitTo = TimingService.WaitTo;
|
WaitTo = TimingService.WaitTo;
|
||||||
|
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnBuildingInputDelayChanged(ChangeEventArgs changeEventArgs)
|
void OnBuildingInputDelayChanged(ChangeEventArgs changeEventArgs)
|
||||||
|
|||||||
@@ -10,10 +10,11 @@
|
|||||||
styleClass = "selected";
|
styleClass = "selected";
|
||||||
}
|
}
|
||||||
<button @onclick="@(e => OnChangeFaction(choice))"
|
<button @onclick="@(e => OnChangeFaction(choice))"
|
||||||
class="choiceButton @styleClass">@(choice == DataType.Any
|
class="choiceButton @styleClass">
|
||||||
? DataType.Any
|
@(choice == DataType.Any
|
||||||
: DATA.Get()[choice].Info().Name)
|
? DataType.Any
|
||||||
</button>
|
: DATA.Get()[choice].Info().Name)
|
||||||
|
</button>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ else
|
|||||||
<div class="docFooter">
|
<div class="docFooter">
|
||||||
<LinkButtonComponent Href="@GitUrl">
|
<LinkButtonComponent Href="@GitUrl">
|
||||||
Edit on GitHub <i class="fa-brands fa-github" style="font-size: 24px; margin-left: 5px;"></i>
|
Edit on GitHub <i class="fa-brands fa-github" style="font-size: 24px; margin-left: 5px;"></i>
|
||||||
</LinkButtonComponent>
|
</LinkButtonComponent>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
@@ -59,7 +59,7 @@ else
|
|||||||
public DocContentModel DocContentModel { get; set; } = default!;
|
public DocContentModel DocContentModel { get; set; } = default!;
|
||||||
|
|
||||||
DocFrontMatterModel docFrontMatter = null!;
|
DocFrontMatterModel docFrontMatter = null!;
|
||||||
private string? content = null;
|
private string? content;
|
||||||
|
|
||||||
private string Filepath => $"content/docs/{DocContentModel.Content}.md";
|
private string Filepath => $"content/docs/{DocContentModel.Content}.md";
|
||||||
private string GitUrl => $"{Project.GitResourcesUrl}/{Filepath}";
|
private string GitUrl => $"{Project.GitResourcesUrl}/{Filepath}";
|
||||||
|
|||||||
@@ -42,6 +42,7 @@
|
|||||||
</LayoutMediumContentComponent>
|
</LayoutMediumContentComponent>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
|
|
||||||
protected override void OnInitialized()
|
protected override void OnInitialized()
|
||||||
{
|
{
|
||||||
base.OnInitialized();
|
base.OnInitialized();
|
||||||
@@ -52,4 +53,5 @@
|
|||||||
{
|
{
|
||||||
EconomyComparisonService.Unsubscribe(StateHasChanged);
|
EconomyComparisonService.Unsubscribe(StateHasChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -79,7 +79,6 @@
|
|||||||
|
|
||||||
void OnBuilderOrderChanged()
|
void OnBuilderOrderChanged()
|
||||||
{
|
{
|
||||||
|
|
||||||
charts = new List<ChartModel>();
|
charts = new List<ChartModel>();
|
||||||
var index = 0;
|
var index = 0;
|
||||||
|
|
||||||
@@ -124,7 +123,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (var interval = 0; interval < economyOverTime.Count(); interval++)
|
for (var interval = 0; interval < economyOverTime.Count(); interval++)
|
||||||
{
|
{
|
||||||
var alloyPoint = new PointModel { Interval = interval };
|
var alloyPoint = new PointModel { Interval = interval };
|
||||||
|
|||||||
@@ -88,7 +88,7 @@
|
|||||||
WorseningTime = 0;
|
WorseningTime = 0;
|
||||||
MiracleTime = 0;
|
MiracleTime = 0;
|
||||||
|
|
||||||
for (int interval = 0; interval < economyComparisonService.BuildsToCompare[0].EconomyOverTimeModel.Count; interval++)
|
for (var interval = 0; interval < economyComparisonService.BuildsToCompare[0].EconomyOverTimeModel.Count; interval++)
|
||||||
{
|
{
|
||||||
var yourEconomy = economyComparisonService.BuildsToCompare[0].EconomyOverTimeModel[interval];
|
var yourEconomy = economyComparisonService.BuildsToCompare[0].EconomyOverTimeModel[interval];
|
||||||
var theirEconomy = economyComparisonService.BuildsToCompare[1].EconomyOverTimeModel[interval];
|
var theirEconomy = economyComparisonService.BuildsToCompare[1].EconomyOverTimeModel[interval];
|
||||||
@@ -109,7 +109,6 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
if (PeakAdvantageByAlloy > 0 && WorseningTime == 0)
|
if (PeakAdvantageByAlloy > 0 && WorseningTime == 0)
|
||||||
{
|
{
|
||||||
WorseningTime = interval;
|
WorseningTime = interval;
|
||||||
|
|||||||
@@ -22,14 +22,14 @@
|
|||||||
{
|
{
|
||||||
index++;
|
index++;
|
||||||
|
|
||||||
<FormNumberComponent Value="@timing" OnChange="(e)=> ChangeBuildTime(e, index - 1)">
|
<FormNumberComponent Value="@timing" OnChange="e => ChangeBuildTime(e, index - 1)">
|
||||||
<FormLabelComponent>
|
<FormLabelComponent>
|
||||||
TownHall build time
|
TownHall build time
|
||||||
</FormLabelComponent>
|
</FormLabelComponent>
|
||||||
</FormNumberComponent>
|
</FormNumberComponent>
|
||||||
}
|
}
|
||||||
<ContentDividerComponent/>
|
<ContentDividerComponent/>
|
||||||
<FormTextComponent Label="Chart Color" Value="@ChartColor" OnChange="ChangeColor" />
|
<FormTextComponent Label="Chart Color" Value="@ChartColor" OnChange="ChangeColor"/>
|
||||||
</FormLayoutComponent>
|
</FormLayoutComponent>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -41,29 +41,31 @@
|
|||||||
</FormNumberComponent>
|
</FormNumberComponent>
|
||||||
|
|
||||||
<FormNumberComponent Min="1"
|
<FormNumberComponent Min="1"
|
||||||
Id="numberOfTownHallsExisting"
|
Id="numberOfTownHallsExisting"
|
||||||
Value="@((int)NumberOfTownHallsExisting)"
|
Value="@((int)NumberOfTownHallsExisting)"
|
||||||
OnChange="OnTownHallsChanged">
|
OnChange="OnTownHallsChanged">
|
||||||
<FormLabelComponent>Number of townhalls you have</FormLabelComponent>
|
<FormLabelComponent>Number of townhalls you have</FormLabelComponent>
|
||||||
</FormNumberComponent>
|
</FormNumberComponent>
|
||||||
|
|
||||||
<div id="numberOfTownHallTravelTimes">
|
<div id="numberOfTownHallTravelTimes">
|
||||||
@{
|
@{
|
||||||
var index = 0;
|
var index = 0;
|
||||||
}
|
}
|
||||||
@foreach (var travelTime in TravelTimes) {
|
@foreach (var travelTime in TravelTimes)
|
||||||
index++;
|
{
|
||||||
if (index == 1) {
|
index++;
|
||||||
continue;
|
if (index == 1)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
var id = $"numberOfTownHallsExisting_{index}";
|
||||||
|
<FormNumberComponent Min="0"
|
||||||
|
Id="@id"
|
||||||
|
Value="@((int)travelTime.Value)"
|
||||||
|
OnChange="e => { OnTownHallTravelTimeChanged(e, travelTime); }">
|
||||||
|
<FormLabelComponent>Worker travel time from other base @(travelTime.Index + 1)</FormLabelComponent>
|
||||||
|
</FormNumberComponent>
|
||||||
}
|
}
|
||||||
var id = $"numberOfTownHallsExisting_{index}";
|
|
||||||
<FormNumberComponent Min="0"
|
|
||||||
Id="@id"
|
|
||||||
Value="@((int)travelTime.Value)"
|
|
||||||
OnChange="e => { OnTownHallTravelTimeChanged(e, travelTime); }">
|
|
||||||
<FormLabelComponent>Worker travel time from other base @(travelTime.Index + 1)</FormLabelComponent>
|
|
||||||
</FormNumberComponent>
|
|
||||||
}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -71,7 +73,7 @@
|
|||||||
<Display>
|
<Display>
|
||||||
<div style="font-size: 1.5rem; font-weight: 800;">
|
<div style="font-size: 1.5rem; font-weight: 800;">
|
||||||
<span id="totalAlloyHarassment">
|
<span id="totalAlloyHarassment">
|
||||||
@TotalAlloyHarassment
|
@TotalAlloyHarassment
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</Display>
|
</Display>
|
||||||
@@ -104,9 +106,12 @@
|
|||||||
</InfoQuestionComponent>
|
</InfoQuestionComponent>
|
||||||
<InfoAnswerComponent>
|
<InfoAnswerComponent>
|
||||||
The Harass Calculator allows you to calculate damage done to an enemy alloy line. For example, if you
|
The Harass Calculator allows you to calculate damage done to an enemy alloy line. For example, if you
|
||||||
were to attack with Ichors, and kill 6 enemy workers, you can set the <b>Number of workers lost to
|
were to attack with Ichors, and kill 6 enemy workers, you can set the
|
||||||
harass</b> to 6. This would determine a loss of <span id="exampleTotalAlloyLoss">@ExampleTotalAlloyLoss</span> alloy. Quite
|
<b>
|
||||||
the large number.
|
Number of workers lost to
|
||||||
|
harass
|
||||||
|
</b> to 6. This would determine a loss of <span id="exampleTotalAlloyLoss">@ExampleTotalAlloyLoss</span> alloy. Quite
|
||||||
|
the large number.
|
||||||
</InfoAnswerComponent>
|
</InfoAnswerComponent>
|
||||||
</InfoBodyComponent>
|
</InfoBodyComponent>
|
||||||
|
|
||||||
@@ -126,10 +131,16 @@
|
|||||||
entirely accurate, you are also going to have to bump up the <b>Worker travel time to alloy</b> to account for the time it takes the transferred workers to arrive at the decimated alloy line.
|
entirely accurate, you are also going to have to bump up the <b>Worker travel time to alloy</b> to account for the time it takes the transferred workers to arrive at the decimated alloy line.
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
Let's say it takes 10 seconds for workers to transfer from your second base. Let's enter that for the
|
Let's say it takes 10 seconds for workers to transfer from your second base. Let's enter that for the
|
||||||
second base travel time for the more accurate loss of <span
|
second base travel time for the more accurate loss of
|
||||||
id="exampleTotalAlloyLossAccurate">@ExampleTotalAlloyLossAccurate</span> alloy
|
<span
|
||||||
(saving you <span id="exampleTotalAlloyLossAccurateDifference">@ExampleTotalAlloyLossAccurateDifference</span> alloy.) <i>Which is
|
id="exampleTotalAlloyLossAccurate">
|
||||||
much better than not transferring workers!</i>
|
@ExampleTotalAlloyLossAccurate
|
||||||
|
</span> alloy
|
||||||
|
(saving you <span id="exampleTotalAlloyLossAccurateDifference">@ExampleTotalAlloyLossAccurateDifference</span> alloy.)
|
||||||
|
<i>
|
||||||
|
Which is
|
||||||
|
much better than not transferring workers!
|
||||||
|
</i>
|
||||||
</InfoAnswerComponent>
|
</InfoAnswerComponent>
|
||||||
</InfoBodyComponent>
|
</InfoBodyComponent>
|
||||||
|
|
||||||
@@ -214,7 +225,7 @@
|
|||||||
// Example calcs
|
// Example calcs
|
||||||
float ExampleTotalAlloyLoss => Calculate(
|
float ExampleTotalAlloyLoss => Calculate(
|
||||||
WorkerReplacementCost(6),
|
WorkerReplacementCost(6),
|
||||||
SimultaneousProductionFloor(1,6),
|
SimultaneousProductionFloor(1, 6),
|
||||||
6,
|
6,
|
||||||
new List<float> { 0 });
|
new List<float> { 0 });
|
||||||
|
|
||||||
@@ -224,19 +235,19 @@
|
|||||||
|
|
||||||
float ExampleTotalAlloyLossDifference => ExampleTotalAlloyLoss - Calculate(
|
float ExampleTotalAlloyLossDifference => ExampleTotalAlloyLoss - Calculate(
|
||||||
WorkerReplacementCost(6),
|
WorkerReplacementCost(6),
|
||||||
SimultaneousProductionFloor(2,6),
|
SimultaneousProductionFloor(2, 6),
|
||||||
6,
|
6,
|
||||||
new List<float> { 0, 0 });
|
new List<float> { 0, 0 });
|
||||||
|
|
||||||
float ExampleTotalAlloyLossAccurate => Calculate(
|
float ExampleTotalAlloyLossAccurate => Calculate(
|
||||||
WorkerReplacementCost(6),
|
WorkerReplacementCost(6),
|
||||||
SimultaneousProductionFloor(2,6),
|
SimultaneousProductionFloor(2, 6),
|
||||||
6,
|
6,
|
||||||
new List<float> { 0, 10 });
|
new List<float> { 0, 10 });
|
||||||
|
|
||||||
float ExampleTotalAlloyLossAccurateDifference => ExampleTotalAlloyLoss - ExampleTotalAlloyLossAccurate;
|
float ExampleTotalAlloyLossAccurateDifference => ExampleTotalAlloyLoss - ExampleTotalAlloyLossAccurate;
|
||||||
|
|
||||||
float TotalAlloyHarassment = 0;
|
float TotalAlloyHarassment;
|
||||||
|
|
||||||
readonly float CostOfWorker = 50;
|
readonly float CostOfWorker = 50;
|
||||||
readonly float AlloyMinedPerSecondByWorker = 1;
|
readonly float AlloyMinedPerSecondByWorker = 1;
|
||||||
@@ -244,14 +255,17 @@
|
|||||||
float NumberOfWorkersLostToHarass = 1;
|
float NumberOfWorkersLostToHarass = 1;
|
||||||
float NumberOfTownHallsExisting = 1;
|
float NumberOfTownHallsExisting = 1;
|
||||||
|
|
||||||
float GetAverageTravelTime() {
|
float GetAverageTravelTime()
|
||||||
if (TravelTimes.Count == 0) {
|
{
|
||||||
|
if (TravelTimes.Count == 0)
|
||||||
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
float sum = 0;
|
float sum = 0;
|
||||||
|
|
||||||
foreach (var travelTime in TravelTimes) {
|
foreach (var travelTime in TravelTimes)
|
||||||
|
{
|
||||||
sum += travelTime.Value;
|
sum += travelTime.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -259,35 +273,43 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
float SimultaneousProductionFloor() {
|
float SimultaneousProductionFloor()
|
||||||
if (NumberOfTownHallsExisting <= 0 || NumberOfWorkersLostToHarass <= 0) {
|
{
|
||||||
|
if (NumberOfTownHallsExisting <= 0 || NumberOfWorkersLostToHarass <= 0)
|
||||||
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NumberOfWorkersLostToHarass / Math.Min(NumberOfTownHallsExisting, NumberOfWorkersLostToHarass);
|
return NumberOfWorkersLostToHarass / Math.Min(NumberOfTownHallsExisting, NumberOfWorkersLostToHarass);
|
||||||
}
|
}
|
||||||
|
|
||||||
float SimultaneousProductionFloor(float existingTownHalls, float numberOfWorkersLost) {
|
float SimultaneousProductionFloor(float existingTownHalls, float numberOfWorkersLost)
|
||||||
if (existingTownHalls <= 0 || numberOfWorkersLost <= 0) {
|
{
|
||||||
|
if (existingTownHalls <= 0 || numberOfWorkersLost <= 0)
|
||||||
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return numberOfWorkersLost / Math.Min(existingTownHalls, numberOfWorkersLost);
|
return numberOfWorkersLost / Math.Min(existingTownHalls, numberOfWorkersLost);
|
||||||
}
|
}
|
||||||
|
|
||||||
float WorkerReplacementCost() {
|
float WorkerReplacementCost()
|
||||||
|
{
|
||||||
return CostOfWorker * NumberOfWorkersLostToHarass;
|
return CostOfWorker * NumberOfWorkersLostToHarass;
|
||||||
}
|
}
|
||||||
|
|
||||||
float WorkerReplacementCost(int numberOfWorkersLostToHarass) {
|
float WorkerReplacementCost(int numberOfWorkersLostToHarass)
|
||||||
|
{
|
||||||
return CostOfWorker * numberOfWorkersLostToHarass;
|
return CostOfWorker * numberOfWorkersLostToHarass;
|
||||||
}
|
}
|
||||||
|
|
||||||
float DelayedMiningCost() {
|
float DelayedMiningCost()
|
||||||
|
{
|
||||||
return TotalAlloyHarassment - WorkerReplacementCost();
|
return TotalAlloyHarassment - WorkerReplacementCost();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Calculate() {
|
void Calculate()
|
||||||
|
{
|
||||||
TotalAlloyHarassment = Calculate(WorkerReplacementCost(),
|
TotalAlloyHarassment = Calculate(WorkerReplacementCost(),
|
||||||
SimultaneousProductionFloor(),
|
SimultaneousProductionFloor(),
|
||||||
NumberOfWorkersLostToHarass,
|
NumberOfWorkersLostToHarass,
|
||||||
@@ -301,20 +323,23 @@
|
|||||||
float numberOfWorkersLostToHarass,
|
float numberOfWorkersLostToHarass,
|
||||||
IList<float> travelTimes,
|
IList<float> travelTimes,
|
||||||
float timeToProduceWorker = 20,
|
float timeToProduceWorker = 20,
|
||||||
float alloyMinedPerSecondByWorker = 1) {
|
float alloyMinedPerSecondByWorker = 1)
|
||||||
|
{
|
||||||
|
var totalAlloyHarassment = workerReplacementCost;
|
||||||
|
|
||||||
float totalAlloyHarassment = workerReplacementCost;
|
for (var workerProductionIndex = 0; workerProductionIndex < simultaneousProductionFloor; workerProductionIndex++)
|
||||||
|
{
|
||||||
for (var workerProductionIndex = 0; workerProductionIndex < simultaneousProductionFloor; workerProductionIndex++) {
|
|
||||||
totalAlloyHarassment += alloyMinedPerSecondByWorker * timeToProduceWorker * (workerProductionIndex + 1);
|
totalAlloyHarassment += alloyMinedPerSecondByWorker * timeToProduceWorker * (workerProductionIndex + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
var remainder = (int)(numberOfWorkersLostToHarass % simultaneousProductionFloor);
|
var remainder = (int)(numberOfWorkersLostToHarass % simultaneousProductionFloor);
|
||||||
for (var remainderIndex = 0; remainderIndex < remainder; remainderIndex++) {
|
for (var remainderIndex = 0; remainderIndex < remainder; remainderIndex++)
|
||||||
|
{
|
||||||
totalAlloyHarassment += alloyMinedPerSecondByWorker * timeToProduceWorker * (simultaneousProductionFloor + 1);
|
totalAlloyHarassment += alloyMinedPerSecondByWorker * timeToProduceWorker * (simultaneousProductionFloor + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var travelTimeIndex = 0; travelTimeIndex < numberOfWorkersLostToHarass; travelTimeIndex++) {
|
for (var travelTimeIndex = 0; travelTimeIndex < numberOfWorkersLostToHarass; travelTimeIndex++)
|
||||||
|
{
|
||||||
var townHallIndex = travelTimeIndex % travelTimes.Count;
|
var townHallIndex = travelTimeIndex % travelTimes.Count;
|
||||||
totalAlloyHarassment += alloyMinedPerSecondByWorker * travelTimes[townHallIndex];
|
totalAlloyHarassment += alloyMinedPerSecondByWorker * travelTimes[townHallIndex];
|
||||||
}
|
}
|
||||||
@@ -322,7 +347,8 @@
|
|||||||
return totalAlloyHarassment;
|
return totalAlloyHarassment;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnInitialized() {
|
protected override void OnInitialized()
|
||||||
|
{
|
||||||
base.OnInitialized();
|
base.OnInitialized();
|
||||||
Calculate();
|
Calculate();
|
||||||
}
|
}
|
||||||
@@ -330,18 +356,20 @@
|
|||||||
|
|
||||||
public List<TravelTime> TravelTimes { get; set; } = new() { new TravelTime(0, 0) };
|
public List<TravelTime> TravelTimes { get; set; } = new() { new TravelTime(0, 0) };
|
||||||
|
|
||||||
private void OnTownHallsChanged(ChangeEventArgs obj) {
|
private void OnTownHallsChanged(ChangeEventArgs obj)
|
||||||
|
{
|
||||||
NumberOfTownHallsExisting = int.Parse(obj.Value!.ToString()!);
|
NumberOfTownHallsExisting = int.Parse(obj.Value!.ToString()!);
|
||||||
|
|
||||||
while (TravelTimes.Count > NumberOfTownHallsExisting)
|
while (TravelTimes.Count > NumberOfTownHallsExisting)
|
||||||
TravelTimes.Remove(TravelTimes.Last());
|
TravelTimes.Remove(TravelTimes.Last());
|
||||||
|
|
||||||
while (TravelTimes.Count < NumberOfTownHallsExisting)
|
while (TravelTimes.Count < NumberOfTownHallsExisting)
|
||||||
TravelTimes.Add(new TravelTime(TravelTimes.Count, 10 * (TravelTimes.Count)));
|
TravelTimes.Add(new TravelTime(TravelTimes.Count, 10 * TravelTimes.Count));
|
||||||
Calculate();
|
Calculate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnTownHallTravelTimeChanged(ChangeEventArgs obj, TravelTime travelTime) {
|
private void OnTownHallTravelTimeChanged(ChangeEventArgs obj, TravelTime travelTime)
|
||||||
|
{
|
||||||
travelTime.Value = (int)obj.Value!;
|
travelTime.Value = (int)obj.Value!;
|
||||||
|
|
||||||
Calculate();
|
Calculate();
|
||||||
|
|||||||
@@ -16,8 +16,6 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
<LayoutWithSidebarComponent>
|
<LayoutWithSidebarComponent>
|
||||||
<Sidebar>
|
<Sidebar>
|
||||||
<NoteNavComponent
|
<NoteNavComponent
|
||||||
|
|||||||
@@ -47,10 +47,11 @@
|
|||||||
|
|
||||||
<InfoBodyComponent>
|
<InfoBodyComponent>
|
||||||
<InfoQuestionComponent>What data does this website collect?</InfoQuestionComponent>
|
<InfoQuestionComponent>What data does this website collect?</InfoQuestionComponent>
|
||||||
<InfoAnswerComponent>This website usages Google Analytics to collect data on usage of this website.
|
<InfoAnswerComponent>
|
||||||
|
This website usages Google Analytics to collect data on usage of this website.
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
Items include: if people use keyboard or mouse in build calculator, what pages people visit, and other usages.
|
Items include: if people use keyboard or mouse in build calculator, what pages people visit, and other usages.
|
||||||
</InfoAnswerComponent>
|
</InfoAnswerComponent>
|
||||||
</InfoBodyComponent>
|
</InfoBodyComponent>
|
||||||
|
|
||||||
<InfoBodyComponent>
|
<InfoBodyComponent>
|
||||||
@@ -62,8 +63,8 @@
|
|||||||
|
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private bool _storageEnabled = false;
|
private bool _storageEnabled;
|
||||||
private bool _dataCollectionEnabled = false;
|
private bool _dataCollectionEnabled;
|
||||||
|
|
||||||
protected override void OnInitialized()
|
protected override void OnInitialized()
|
||||||
{
|
{
|
||||||
|
|||||||
+10
-10
@@ -28,12 +28,12 @@
|
|||||||
|
|
||||||
<DevOnlyComponent>
|
<DevOnlyComponent>
|
||||||
<FormLayoutComponent>
|
<FormLayoutComponent>
|
||||||
<FormToggleComponent
|
<FormToggleComponent
|
||||||
Label="Is Dynamic Formatting"
|
Label="Is Dynamic Formatting"
|
||||||
Info="Should [Attacks Per Second/Seconds Between Attack] match in-game values?"
|
Info="Should [Attacks Per Second/Seconds Between Attack] match in-game values?"
|
||||||
Value="@_isDynamicFormatting"
|
Value="@_isDynamicFormatting"
|
||||||
OnChange="DynamicFormattingChanged"/>
|
OnChange="DynamicFormattingChanged"/>
|
||||||
</FormLayoutComponent>
|
</FormLayoutComponent>
|
||||||
</DevOnlyComponent>
|
</DevOnlyComponent>
|
||||||
|
|
||||||
</PaperComponent>
|
</PaperComponent>
|
||||||
@@ -161,11 +161,11 @@
|
|||||||
StorageService.Unsubscribe(RefreshDefaults);
|
StorageService.Unsubscribe(RefreshDefaults);
|
||||||
}
|
}
|
||||||
|
|
||||||
private int? _attackTime = null;
|
private int? _attackTime;
|
||||||
private int? _travelTime = null;
|
private int? _travelTime;
|
||||||
|
|
||||||
private string? _faction = null;
|
private string? _faction;
|
||||||
private string? _immortal = null;
|
private string? _immortal;
|
||||||
|
|
||||||
private string? Faction => _faction == null ? DataType.FACTION_QRath : _faction;
|
private string? Faction => _faction == null ? DataType.FACTION_QRath : _faction;
|
||||||
private string? Immortal => _immortal == null ? DataType.IMMORTAL_Orzum : _immortal;
|
private string? Immortal => _immortal == null ? DataType.IMMORTAL_Orzum : _immortal;
|
||||||
|
|||||||
@@ -14,21 +14,25 @@
|
|||||||
</InfoBodyComponent>
|
</InfoBodyComponent>
|
||||||
<InfoBodyComponent>
|
<InfoBodyComponent>
|
||||||
<InfoQuestionComponent>What exactly are you streaming?</InfoQuestionComponent>
|
<InfoQuestionComponent>What exactly are you streaming?</InfoQuestionComponent>
|
||||||
<InfoAnswerComponent>The plan will be sprint planning and general development of this website.
|
<InfoAnswerComponent>
|
||||||
|
The plan will be sprint planning and general development of this website.
|
||||||
|
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
Feel free to jump into the stream to ask questions or make feature requests for the website.</InfoAnswerComponent>
|
Feel free to jump into the stream to ask questions or make feature requests for the website.
|
||||||
|
</InfoAnswerComponent>
|
||||||
</InfoBodyComponent>
|
</InfoBodyComponent>
|
||||||
|
|
||||||
<InfoBodyComponent>
|
<InfoBodyComponent>
|
||||||
<InfoQuestionComponent>Why should you watch these streams?</InfoQuestionComponent>
|
<InfoQuestionComponent>Why should you watch these streams?</InfoQuestionComponent>
|
||||||
<InfoAnswerComponent>You shouldn't. By nature of being live coding streams, I think they will have little entertainment and educational value.
|
<InfoAnswerComponent>
|
||||||
|
You shouldn't. By nature of being live coding streams, I think they will have little entertainment and educational value.
|
||||||
<br/><br/>
|
<br/><br/>
|
||||||
The most reason (that comes to mind) is to see a coding day of one software developer. Although please note that I stream content that I think is easy (to look smart), so it's not a "truly random" coding day. For example, you won't find any vods of the five-week sprint where I (figuratively) bash my head against the table trying to get SQL working in Blazor WASM before giving up and moving on. </InfoAnswerComponent>
|
The most reason (that comes to mind) is to see a coding day of one software developer. Although please note that I stream content that I think is easy (to look smart), so it's not a "truly random" coding day. For example, you won't find any vods of the five-week sprint where I (figuratively) bash my head against the table trying to get SQL working in Blazor WASM before giving up and moving on.
|
||||||
|
</InfoAnswerComponent>
|
||||||
</InfoBodyComponent>
|
</InfoBodyComponent>
|
||||||
<InfoBodyComponent>
|
<InfoBodyComponent>
|
||||||
<InfoQuestionComponent>Anything else I should know?</InfoQuestionComponent>
|
<InfoQuestionComponent>Anything else I should know?</InfoQuestionComponent>
|
||||||
<InfoAnswerComponent>I'll be streaming under the "<a href="https://www.twitch.tv/directory/game/Software%20and%20Game%20Development" target="_blank">Twitch, Software and Game Development</a>" category. If you are looking to see some actual IGP gameplay, there are better and more focused streamers to provide said content. Check out the "<a href="https://www.twitch.tv/directory/game/IMMORTAL%3A%20Gates%20of%20Pyre/videos/all" target="_blank">Twitch, IMMORTAL: Gates of Pyre</a>" category for some examples.</InfoAnswerComponent>
|
<InfoAnswerComponent>I'll be streaming under the "<a href="https://www.twitch.tv/directory/game/Software%20and%20Game%20Development" target="_blank">Twitch, Software and Game Development</a>" category. If you are looking to see some actual IGP gameplay, there are better and more focused streamers to provide said content. Check out the "<a href="https://www.twitch.tv/directory/game/IMMORTAL%3A%20Gates%20of%20Pyre/videos/all" target="_blank">Twitch, IMMORTAL: Gates of Pyre</a>" category for some examples.</InfoAnswerComponent>
|
||||||
</InfoBodyComponent>
|
</InfoBodyComponent>
|
||||||
</PaperComponent>
|
</PaperComponent>
|
||||||
</LayoutMediumContentComponent>
|
</LayoutMediumContentComponent>
|
||||||
@@ -20,7 +20,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
searchService.Unsubscribe(OnUpdate);
|
searchService.Unsubscribe(OnUpdate);
|
||||||
|
|||||||
+142
-87
@@ -60,12 +60,11 @@ public class DATA
|
|||||||
Notes = @"Doesn't take up a scout slot."
|
Notes = @"Doesn't take up a scout slot."
|
||||||
})
|
})
|
||||||
.AddPart(new EntityRequirementModel { Id = DataType.TEAPOT_Teapot })
|
.AddPart(new EntityRequirementModel { Id = DataType.TEAPOT_Teapot })
|
||||||
.AddPart(new EntitySupplyModel{Takes = 1})
|
.AddPart(new EntitySupplyModel { Takes = 1 })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 50 })
|
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 50 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 100, DefenseLayer = 30, Armor = ArmorType.Light })
|
.AddPart(new EntityVitalityModel { Health = 100, DefenseLayer = 30, Armor = ArmorType.Light })
|
||||||
.AddPart(new EntityMovementModel { Speed = 280, Movement = MovementType.Air })
|
.AddPart(new EntityMovementModel { Speed = 280, Movement = MovementType.Air })
|
||||||
.AddPart(new EntityIdPassiveModel{ Id = DataType.PASSIVE_Detection})
|
.AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Detection })
|
||||||
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// Families
|
// Families
|
||||||
@@ -448,7 +447,8 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_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, ProducedBy = DataType.BUILDING_LegionHall})
|
.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
|
||||||
@@ -477,7 +477,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 200, Ether = 125, BuildTime = 40, ProducedBy = DataType.BUILDING_Angelarium })
|
.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
|
||||||
@@ -516,7 +517,8 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_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, ProducedBy = DataType.BUILDING_LegionHall })
|
.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 })
|
||||||
@@ -550,7 +552,8 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_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, ProducedBy = DataType.BUILDING_SoulFoundry })
|
.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 })
|
||||||
@@ -586,7 +589,8 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_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, ProducedBy = DataType.BUILDING_AmberWomb })
|
.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 })
|
||||||
@@ -615,7 +619,8 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_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, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
.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
|
||||||
{
|
{
|
||||||
@@ -645,7 +650,8 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_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, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
.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 })
|
||||||
@@ -674,7 +680,8 @@ public class DATA
|
|||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_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, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
.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
|
||||||
{
|
{
|
||||||
@@ -689,7 +696,6 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_LethalBond })
|
.AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_LethalBond })
|
||||||
.AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_CastingFromBlood })
|
.AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_CastingFromBlood })
|
||||||
|
|
||||||
},
|
},
|
||||||
// Units
|
// Units
|
||||||
// Q'Rath
|
// Q'Rath
|
||||||
@@ -719,7 +725,8 @@ public class DATA
|
|||||||
.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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, BuildTime = 25, ProducedBy = DataType.BUILDING_LegionHall })
|
.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
|
||||||
@@ -750,7 +757,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 75, BuildTime = 35, ProducedBy = DataType.BUILDING_LegionHall })
|
.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 })
|
||||||
@@ -788,7 +796,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 40, BuildTime = 30, ProducedBy = DataType.BUILDING_SoulFoundry })
|
.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
|
||||||
{
|
{
|
||||||
@@ -823,7 +832,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 125, Ether = 10, BuildTime = 35, ProducedBy = DataType.BUILDING_SoulFoundry })
|
.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 = 120, DefenseLayer = 100, Armor = ArmorType.Medium })
|
.AddPart(new EntityVitalityModel { Health = 120, DefenseLayer = 100, Armor = ArmorType.Medium })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
@@ -855,7 +865,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 35, ProducedBy = DataType.BUILDING_SoulFoundry })
|
.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
|
||||||
@@ -890,7 +901,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 190, Ether = 75, BuildTime = 35, ProducedBy = DataType.BUILDING_SoulFoundry })
|
.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 })
|
||||||
@@ -924,7 +936,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 35, ProducedBy = DataType.BUILDING_SoulFoundry })
|
.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
|
||||||
{
|
{
|
||||||
@@ -956,7 +969,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 75, BuildTime = 35, ProducedBy = DataType.BUILDING_Angelarium })
|
.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 })
|
||||||
@@ -982,7 +996,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 250, Ether = 100, BuildTime = 50, ProducedBy = DataType.BUILDING_Angelarium })
|
.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
|
||||||
@@ -1020,7 +1035,8 @@ public class DATA
|
|||||||
.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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 175, Ether = 100, BuildTime = 40, ProducedBy = DataType.BUILDING_Angelarium })
|
.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
|
||||||
{
|
{
|
||||||
@@ -1042,7 +1058,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 110, Ether = 250, BuildTime = 55, ProducedBy = DataType.BUILDING_Angelarium })
|
.AddPart(new EntityProductionModel
|
||||||
|
{ Alloy = 110, Ether = 250, BuildTime = 55, ProducedBy = DataType.BUILDING_Angelarium })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 6 })
|
.AddPart(new EntitySupplyModel { Takes = 6 })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
@@ -1102,7 +1119,8 @@ public class DATA
|
|||||||
Requirement = RequirementType.Production_Building
|
Requirement = RequirementType.Production_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 50, BuildTime = 20, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
.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 })
|
||||||
@@ -1130,7 +1148,8 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 30, BuildTime = 25, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
.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 })
|
||||||
@@ -1161,7 +1180,8 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 80, BuildTime = 30, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
.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 })
|
||||||
@@ -1174,7 +1194,6 @@ public class DATA
|
|||||||
.AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_QuenchingScythes })
|
.AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_QuenchingScythes })
|
||||||
.AddPart(new EntityIdPassiveModel { Id = DataType.ABILITY_CullingStrike })
|
.AddPart(new EntityIdPassiveModel { Id = DataType.ABILITY_CullingStrike })
|
||||||
.AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_CastingFromBlood })
|
.AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_CastingFromBlood })
|
||||||
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UNIT_RedSeer,
|
DataType.UNIT_RedSeer,
|
||||||
@@ -1195,7 +1214,8 @@ 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 = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 40, Ether = 140, BuildTime = 40, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
.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
|
||||||
{
|
{
|
||||||
@@ -1233,7 +1253,8 @@ 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 = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 70, Ether = 50, BuildTime = 25, ProducedBy = DataType.BUILDING_AltarOfTheWorthy })
|
.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 })
|
||||||
@@ -1263,7 +1284,8 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 95, Ether = 20, BuildTime = 30, ProducedBy = DataType.BUILDING_AmberWomb })
|
.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 })
|
||||||
@@ -1293,7 +1315,8 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "Z" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "Z" })
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 80, BuildTime = 40, ProducedBy = DataType.BUILDING_AmberWomb })
|
.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 })
|
||||||
@@ -1328,7 +1351,8 @@ 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 = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 40, Ether = 40, BuildTime = 30, ProducedBy = DataType.BUILDING_BoneCanopy })
|
.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 })
|
||||||
@@ -1353,7 +1377,8 @@ 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 = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 50, BuildTime = 30, ProducedBy = DataType.BUILDING_BoneCanopy })
|
.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 })
|
||||||
@@ -1375,7 +1400,8 @@ 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 = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 30, BuildTime = 30, ProducedBy = DataType.BUILDING_AmberWomb })
|
.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 })
|
||||||
@@ -1403,7 +1429,8 @@ 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 = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 190, Ether = 150, BuildTime = 50, ProducedBy = DataType.BUILDING_BoneCanopy })
|
.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 })
|
||||||
@@ -1438,7 +1465,8 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 100, ProducedBy = DataType.BUILDING_Reliquary })
|
.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,
|
||||||
@@ -1457,7 +1485,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 80, Ether = 80, BuildTime = 34, ProducedBy = DataType.BUILDING_HouseOfFadingSaints })
|
.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,
|
||||||
@@ -1475,7 +1504,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 43, ProducedBy = DataType.BUILDING_EyeOfAros })
|
.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,
|
||||||
@@ -1495,7 +1525,8 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 100, BuildTime = 60, ProducedBy = DataType.BUILDING_Reliquary })
|
.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
|
||||||
@@ -1511,7 +1542,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 75, BuildTime = 29, ProducedBy = DataType.BUILDING_HouseOfFadingSaints })
|
.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,
|
||||||
@@ -1525,7 +1557,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 50, Ether = 75, BuildTime = 55, ProducedBy = DataType.BUILDING_Reliquary })
|
.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 })
|
||||||
},
|
},
|
||||||
@@ -1539,7 +1572,8 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 100, BuildTime = 43, ProducedBy = DataType.BUILDING_Reliquary })
|
.AddPart(new EntityProductionModel
|
||||||
|
{ Alloy = 150, Ether = 100, BuildTime = 43, 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 EntityIdUpgradeModel { Id = DataType.UPGRADE_WindStep })
|
.AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_WindStep })
|
||||||
@@ -1555,7 +1589,8 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "TAB" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "TAB" })
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 75, Ether = 100, BuildTime = 60, ProducedBy = DataType.BUILDING_HouseOfFadingSaints })
|
.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,
|
||||||
@@ -1572,7 +1607,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 43, ProducedBy = DataType.BUILDING_EyeOfAros })
|
.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,
|
||||||
@@ -1591,7 +1627,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 75, BuildTime = 45, ProducedBy = DataType.BUILDING_BearerOfTheCrown })
|
.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
|
||||||
@@ -1607,7 +1644,8 @@ 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 = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 150, Ether = 100, BuildTime = 30, ProducedBy = DataType.BUILDING_EyeOfAros })
|
.AddPart(new EntityProductionModel
|
||||||
|
{ Alloy = 150, Ether = 100, BuildTime = 30, ProducedBy = DataType.BUILDING_EyeOfAros })
|
||||||
.AddPart(new EntityRequirementModel
|
.AddPart(new EntityRequirementModel
|
||||||
{
|
{
|
||||||
Id = DataType.BUILDING_EyeOfAros, Requirement = RequirementType.Production_Building
|
Id = DataType.BUILDING_EyeOfAros, Requirement = RequirementType.Production_Building
|
||||||
@@ -1638,7 +1676,8 @@ 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, ProducedBy = DataType.BUILDING_Neurocyte })
|
.AddPart(new EntityProductionModel
|
||||||
|
{ Alloy = 100, Ether = 80, BuildTime = 60, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_BloodMothersFevor,
|
DataType.UPGRADE_BloodMothersFevor,
|
||||||
@@ -1659,7 +1698,8 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_AltarOfTheWorthy,
|
Id = DataType.BUILDING_AltarOfTheWorthy,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 150, BuildTime = 80, ProducedBy = DataType.BUILDING_RedVale })
|
.AddPart(new EntityProductionModel
|
||||||
|
{ Alloy = 100, Ether = 150, BuildTime = 80, ProducedBy = DataType.BUILDING_RedVale })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_DenInstinct,
|
DataType.UPGRADE_DenInstinct,
|
||||||
@@ -1672,7 +1712,8 @@ 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, ProducedBy = DataType.BUILDING_Neurocyte })
|
.AddPart(new EntityProductionModel
|
||||||
|
{ Alloy = 100, Ether = 120, BuildTime = 45, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_PursuitLigaments,
|
DataType.UPGRADE_PursuitLigaments,
|
||||||
@@ -1685,7 +1726,8 @@ 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, ProducedBy = DataType.BUILDING_Neurocyte })
|
.AddPart(new EntityProductionModel
|
||||||
|
{ Alloy = 75, Ether = 100, BuildTime = 45, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_ResinantDeploy,
|
DataType.UPGRADE_ResinantDeploy,
|
||||||
@@ -1703,7 +1745,8 @@ 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, ProducedBy = DataType.BUILDING_Neurocyte })
|
.AddPart(new EntityProductionModel
|
||||||
|
{ Alloy = 50, Ether = 100, BuildTime = 43, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_XacalDamage,
|
DataType.UPGRADE_XacalDamage,
|
||||||
@@ -1716,7 +1759,8 @@ 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, ProducedBy = DataType.BUILDING_Neurocyte })
|
.AddPart(new EntityProductionModel
|
||||||
|
{ Alloy = 100, Ether = 75, BuildTime = 60, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_BehemothCapacity,
|
DataType.UPGRADE_BehemothCapacity,
|
||||||
@@ -1729,7 +1773,8 @@ 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, ProducedBy = DataType.BUILDING_DeepNest })
|
.AddPart(new EntityProductionModel
|
||||||
|
{ Alloy = 150, Ether = 150, BuildTime = 46, ProducedBy = DataType.BUILDING_DeepNest })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
DataType.UPGRADE_WraithBowRange,
|
DataType.UPGRADE_WraithBowRange,
|
||||||
@@ -1747,7 +1792,8 @@ 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, ProducedBy = DataType.BUILDING_Neurocyte })
|
.AddPart(new EntityProductionModel
|
||||||
|
{ Alloy = 50, Ether = 75, BuildTime = 29, ProducedBy = DataType.BUILDING_Neurocyte })
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -1766,7 +1812,8 @@ 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, ProducedBy = DataType.BUILDING_Neurocyte })
|
.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 })
|
||||||
},
|
},
|
||||||
@@ -1782,7 +1829,8 @@ public class DATA
|
|||||||
})
|
})
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "CAPSLOCK", HotkeyGroup = "TAB", HoldSpace = false })
|
.AddPart(new EntityHotkeyModel { Hotkey = "CAPSLOCK", HotkeyGroup = "TAB", HoldSpace = false })
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
.AddPart(new EntityProductionModel { Alloy = 100, Ether = 125, BuildTime = 80, ProducedBy = DataType.BUILDING_RedVale })
|
.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,
|
||||||
@@ -1808,7 +1856,8 @@ 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, ProducedBy = DataType.BUILDING_RedVale })
|
.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 })
|
||||||
},
|
},
|
||||||
@@ -1823,7 +1872,8 @@ 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, ProducedBy = DataType.BUILDING_RedVale })
|
.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 })
|
||||||
},
|
},
|
||||||
@@ -1832,16 +1882,16 @@ public class DATA
|
|||||||
// Neutral
|
// Neutral
|
||||||
|
|
||||||
{
|
{
|
||||||
DataType.PASSIVE_Detection,
|
DataType.PASSIVE_Detection,
|
||||||
new EntityModel(DataType.PASSIVE_Detection, EntityType.Passive)
|
new EntityModel(DataType.PASSIVE_Detection, EntityType.Passive)
|
||||||
.AddPart(new EntityInfoModel
|
.AddPart(new EntityInfoModel
|
||||||
{
|
{
|
||||||
Name = "Detection", Descriptive = DescriptiveType.Passive,
|
Name = "Detection", Descriptive = DescriptiveType.Passive,
|
||||||
Description =
|
Description =
|
||||||
@"Unit can see all hidden units in its detection radius."
|
@"Unit can see all hidden units in its detection radius."
|
||||||
})
|
})
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.Any })
|
.AddPart(new EntityFactionModel { Faction = DataType.Any })
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
DataType.PASSIVE_BastionPassives,
|
DataType.PASSIVE_BastionPassives,
|
||||||
@@ -2291,17 +2341,17 @@ public class DATA
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
DataType.PASSIVE_CastingFromBlood,
|
DataType.PASSIVE_CastingFromBlood,
|
||||||
new EntityModel(DataType.PASSIVE_CastingFromBlood, EntityType.Passive)
|
new EntityModel(DataType.PASSIVE_CastingFromBlood, EntityType.Passive)
|
||||||
.AddPart(new EntityInfoModel
|
.AddPart(new EntityInfoModel
|
||||||
{
|
{
|
||||||
Name = "Cast From Blood", Descriptive = DescriptiveType.Ability,
|
Name = "Cast From Blood", Descriptive = DescriptiveType.Ability,
|
||||||
Description =
|
Description =
|
||||||
@"This unit can spend life to cast abilities when it doesn't have enough energy.",
|
@"This unit can spend life to cast abilities when it doesn't have enough energy.",
|
||||||
Notes = "They must have at least one remaining hitpoint after to perform Cast From Blood."
|
Notes = "They must have at least one remaining hitpoint after to perform Cast From Blood."
|
||||||
})
|
})
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
DataType.PASSIVE_OssifyingSwarm,
|
DataType.PASSIVE_OssifyingSwarm,
|
||||||
@@ -2401,8 +2451,7 @@ public class DATA
|
|||||||
@"Spawns a mine that reveals enemy units, slows them, and makes them take increased damage for a duration."
|
@"Spawns a mine that reveals enemy units, slows them, and makes them take increased damage for a duration."
|
||||||
})
|
})
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
|
||||||
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "D", HoldSpace = true})
|
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "D", HoldSpace = true })
|
||||||
|
|
||||||
.AddPart(new EntityProductionModel { DefensiveLayer = 30, Cooldown = 40 })
|
.AddPart(new EntityProductionModel { DefensiveLayer = 30, Cooldown = 40 })
|
||||||
.AddPart(new EntityRequirementModel { Id = DataType.UPGRADE_RadiantWard })
|
.AddPart(new EntityRequirementModel { Id = DataType.UPGRADE_RadiantWard })
|
||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
@@ -2591,7 +2640,7 @@ public class DATA
|
|||||||
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "D" })
|
.AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "D" })
|
||||||
.AddPart(new EntityVanguardAddedModel
|
.AddPart(new EntityVanguardAddedModel
|
||||||
{ ImmortalId = DataType.IMMORTAL_Xol, ReplaceId = DataType.ABILITY_CullingStrike })
|
{ ImmortalId = DataType.IMMORTAL_Xol, ReplaceId = DataType.ABILITY_CullingStrike })
|
||||||
.AddPart(new EntityProductionModel { Energy = 40, Cooldown = 4})
|
.AddPart(new EntityProductionModel { Energy = 40, Cooldown = 4 })
|
||||||
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -2686,8 +2735,11 @@ public class DATA
|
|||||||
{ ImmortalId = DataType.IMMORTAL_Mala, ReplaceId = DataType.UNIT_Acaaluk })
|
{ ImmortalId = DataType.IMMORTAL_Mala, ReplaceId = DataType.UNIT_Acaaluk })
|
||||||
.AddPart(new EntityProductionModel { Energy = 80, BuildTime = 10, Cooldown = 30 })
|
.AddPart(new EntityProductionModel { Energy = 80, BuildTime = 10, Cooldown = 30 })
|
||||||
.AddPart(new EntitySupplyModel { Takes = 0 })
|
.AddPart(new EntitySupplyModel { Takes = 0 })
|
||||||
.AddPart(new EntityVitalityModel { Health = 300, DefenseLayer = 100, Armor = ArmorType.Heavy,
|
.AddPart(new EntityVitalityModel
|
||||||
Lasts = 75, Vision = 1000})
|
{
|
||||||
|
Health = 300, DefenseLayer = 100, Armor = ArmorType.Heavy,
|
||||||
|
Lasts = 75, Vision = 1000
|
||||||
|
})
|
||||||
.AddPart(new EntityMovementModel { Speed = 0, Movement = MovementType.Ground })
|
.AddPart(new EntityMovementModel { Speed = 0, Movement = MovementType.Ground })
|
||||||
.AddPart(new EntityWeaponModel
|
.AddPart(new EntityWeaponModel
|
||||||
{
|
{
|
||||||
@@ -3021,9 +3073,12 @@ public class DATA
|
|||||||
Id = DataType.BUILDING_KeeperOfTheHardenedFlames,
|
Id = DataType.BUILDING_KeeperOfTheHardenedFlames,
|
||||||
Requirement = RequirementType.Research_Building
|
Requirement = RequirementType.Research_Building
|
||||||
})
|
})
|
||||||
.AddPart(new EntityWeaponModel {Damage = 14, Range = 700, SecondsBetweenAttacks = 1.8f, Targets
|
.AddPart(new EntityWeaponModel
|
||||||
= TargetType.All})
|
{
|
||||||
.AddPart(new EntityIdPassiveModel {Id = DataType.PASSIVE_HallowedWeapons})
|
Damage = 14, Range = 700, SecondsBetweenAttacks = 1.8f, Targets
|
||||||
|
= TargetType.All
|
||||||
|
})
|
||||||
|
.AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_HallowedWeapons })
|
||||||
.AddPart(new EntityVitalityModel
|
.AddPart(new EntityVitalityModel
|
||||||
{ Health = 300, DefenseLayer = 150, Armor = ArmorType.Heavy, IsStructure = true })
|
{ Health = 300, DefenseLayer = 150, Armor = ArmorType.Heavy, IsStructure = true })
|
||||||
.AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_PsalmOfFire })
|
.AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_PsalmOfFire })
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ public static class DataType
|
|||||||
public static string ISPELL_RainOfBlood = "792df385-c66a-4710-9f75-97731897a565";
|
public static string ISPELL_RainOfBlood = "792df385-c66a-4710-9f75-97731897a565";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static string IPASSIVE_HealingGround = "3ec17526-8dc5-4592-9c15-ef1d9b1ca2f6";
|
public static string IPASSIVE_HealingGround = "3ec17526-8dc5-4592-9c15-ef1d9b1ca2f6";
|
||||||
public static string IPASSIVE_Expansionist = "b6cd4335-2165-44c3-b3dc-4500c0111870";
|
public static string IPASSIVE_Expansionist = "b6cd4335-2165-44c3-b3dc-4500c0111870";
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using Model.Entity.Data;
|
using Model.Entity.Data;
|
||||||
using Model.Types;
|
|
||||||
|
|
||||||
namespace Model.Entity.Parts;
|
namespace Model.Entity.Parts;
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
<TargetFramework>net7.0</TargetFramework>
|
<TargetFramework>net7.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.1"/>
|
||||||
<PackageReference Include="YamlDotNet" Version="11.2.1" />
|
<PackageReference Include="YamlDotNet" Version="11.2.1"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -8,5 +8,4 @@ public class WebPageModel
|
|||||||
public string Description { get; set; } = "Add description";
|
public string Description { get; set; } = "Add description";
|
||||||
public string Href { get; set; } = null;
|
public string Href { get; set; } = null;
|
||||||
public string IsPrivate { get; set; } = "True";
|
public string IsPrivate { get; set; } = "True";
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -29,7 +29,6 @@ public interface IToastService
|
|||||||
public interface IDataCollectionService
|
public interface IDataCollectionService
|
||||||
{
|
{
|
||||||
public void SendEvent<T>(string eventName, T eventData);
|
public void SendEvent<T>(string eventName, T eventData);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface IStorageService
|
public interface IStorageService
|
||||||
|
|||||||
@@ -343,16 +343,10 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
|
|
||||||
var checkedInterval = _lastInterval;
|
var checkedInterval = _lastInterval;
|
||||||
|
|
||||||
if (supply == null || production == null || supply.Takes.Equals(0))
|
if (supply == null || production == null || supply.Takes.Equals(0)) return 1;
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
var producedBy = production.ProducedBy;
|
var producedBy = production.ProducedBy;
|
||||||
if (producedBy == null)
|
if (producedBy == null) return 1;
|
||||||
{
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
var uniqueCompleted = _buildOrder.UniqueCompleted[producedBy];
|
var uniqueCompleted = _buildOrder.UniqueCompleted[producedBy];
|
||||||
|
|
||||||
@@ -372,7 +366,7 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
usedSlots += used.UsedSlots;
|
usedSlots += used.UsedSlots;
|
||||||
var duration = used.StopUsageTime - used.StartingUsageTime;
|
var duration = used.StopUsageTime - used.StartingUsageTime;
|
||||||
if (duration < shortestIncrement) shortestIncrement = duration;
|
if (duration < shortestIncrement) shortestIncrement = duration;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usedSlots + supply.Takes <= trainingSlots)
|
if (usedSlots + supply.Takes <= trainingSlots)
|
||||||
{
|
{
|
||||||
@@ -389,10 +383,7 @@ public class BuildOrderService : IBuildOrderService
|
|||||||
checkedInterval += shortestIncrement;
|
checkedInterval += shortestIncrement;
|
||||||
didDelay = true;
|
didDelay = true;
|
||||||
|
|
||||||
if (shortestIncrement == int.MaxValue)
|
if (shortestIncrement == int.MaxValue) return null;
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
using Model.Entity.Data;
|
using Model.Entity.Data;
|
||||||
using Model.Types;
|
|
||||||
using static Services.IEntityFilterService;
|
using static Services.IEntityFilterService;
|
||||||
|
|
||||||
namespace Services.Immortal;
|
namespace Services.Immortal;
|
||||||
@@ -16,7 +15,9 @@ public class EntityFilterService : IEntityFilterService
|
|||||||
{
|
{
|
||||||
private readonly List<string> _entityChoices = new();
|
private readonly List<string> _entityChoices = new();
|
||||||
|
|
||||||
private readonly List<string> _factionChoices = new() { DataType.Any, DataType.FACTION_QRath, DataType.FACTION_Aru };
|
private readonly List<string> _factionChoices = new()
|
||||||
|
{ DataType.Any, DataType.FACTION_QRath, DataType.FACTION_Aru };
|
||||||
|
|
||||||
private readonly List<string> _immortalChoices = new();
|
private readonly List<string> _immortalChoices = new();
|
||||||
private string _entityType = EntityType.Army;
|
private string _entityType = EntityType.Army;
|
||||||
private string _searchText = "";
|
private string _searchText = "";
|
||||||
|
|||||||
@@ -5,11 +5,10 @@ namespace Services.Immortal;
|
|||||||
|
|
||||||
public class ImmortalSelectionService : IImmortalSelectionService, IDisposable
|
public class ImmortalSelectionService : IImmortalSelectionService, IDisposable
|
||||||
{
|
{
|
||||||
|
private readonly IStorageService _storageService;
|
||||||
private string _selectedFaction = DataType.FACTION_QRath;
|
private string _selectedFaction = DataType.FACTION_QRath;
|
||||||
private string _selectedImmortal = DataType.IMMORTAL_Orzum;
|
private string _selectedImmortal = DataType.IMMORTAL_Orzum;
|
||||||
|
|
||||||
private readonly IStorageService _storageService;
|
|
||||||
|
|
||||||
public ImmortalSelectionService(IStorageService storageService)
|
public ImmortalSelectionService(IStorageService storageService)
|
||||||
{
|
{
|
||||||
_storageService = storageService;
|
_storageService = storageService;
|
||||||
|
|||||||
@@ -15,15 +15,15 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Blazor-Analytics" Version="3.11.0" />
|
<PackageReference Include="Blazor-Analytics" Version="3.11.0"/>
|
||||||
<PackageReference Include="Blazored.LocalStorage" Version="4.3.0-preview.1" />
|
<PackageReference Include="Blazored.LocalStorage" Version="4.3.0-preview.1"/>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Components.ProtectedBrowserStorage" Version="5.0.0-rc.1.20451.17" />
|
<PackageReference Include="Microsoft.AspNetCore.Components.ProtectedBrowserStorage" Version="5.0.0-rc.1.20451.17"/>
|
||||||
<PackageReference Include="Microsoft.JSInterop" Version="7.0.0-preview.2.22153.2" />
|
<PackageReference Include="Microsoft.JSInterop" Version="7.0.0-preview.2.22153.2"/>
|
||||||
<PackageReference Include="YamlDotNet" Version="11.2.1" />
|
<PackageReference Include="YamlDotNet" Version="11.2.1"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\Model\Model.csproj" />
|
<ProjectReference Include="..\Model\Model.csproj"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
using Blazor.Analytics;
|
using Blazor.Analytics;
|
||||||
using Blazored.LocalStorage;
|
|
||||||
using Model.Feedback;
|
|
||||||
|
|
||||||
namespace Services.Website;
|
namespace Services.Website;
|
||||||
|
|
||||||
@@ -14,10 +12,10 @@ public class DataCollectionKeys
|
|||||||
|
|
||||||
public class DataCollectionService : IDataCollectionService, IDisposable
|
public class DataCollectionService : IDataCollectionService, IDisposable
|
||||||
{
|
{
|
||||||
|
private readonly IAnalytics _globalTracking;
|
||||||
private readonly IStorageService _storageService;
|
private readonly IStorageService _storageService;
|
||||||
|
|
||||||
private bool _isEnabled = false;
|
private bool _isEnabled;
|
||||||
private readonly IAnalytics _globalTracking;
|
|
||||||
|
|
||||||
public DataCollectionService(IAnalytics globalTracking,
|
public DataCollectionService(IAnalytics globalTracking,
|
||||||
IStorageService storageService)
|
IStorageService storageService)
|
||||||
@@ -30,6 +28,11 @@ public class DataCollectionService : IDataCollectionService, IDisposable
|
|||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SendEvent<T>(string eventName, T eventData)
|
||||||
|
{
|
||||||
|
if (_isEnabled) _globalTracking.TrackEvent(eventName, eventData);
|
||||||
|
}
|
||||||
|
|
||||||
void IDisposable.Dispose()
|
void IDisposable.Dispose()
|
||||||
{
|
{
|
||||||
_storageService.Unsubscribe(Refresh);
|
_storageService.Unsubscribe(Refresh);
|
||||||
@@ -39,12 +42,4 @@ public class DataCollectionService : IDataCollectionService, IDisposable
|
|||||||
{
|
{
|
||||||
_isEnabled = _storageService.GetValue<bool>(StorageKeys.EnabledDataCollection);
|
_isEnabled = _storageService.GetValue<bool>(StorageKeys.EnabledDataCollection);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SendEvent<T>(string eventName, T eventData)
|
|
||||||
{
|
|
||||||
if (_isEnabled)
|
|
||||||
{
|
|
||||||
_globalTracking.TrackEvent(eventName, eventData);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,4 @@
|
|||||||
using Microsoft.AspNetCore.Components;
|
using Microsoft.AspNetCore.Components;
|
||||||
using Microsoft.AspNetCore.Components.Web;
|
|
||||||
using Model.Entity.Data;
|
|
||||||
using Model.Website;
|
|
||||||
|
|
||||||
namespace Services.Website;
|
namespace Services.Website;
|
||||||
|
|
||||||
@@ -18,11 +15,7 @@ public class DialogService : IDialogService
|
|||||||
{
|
{
|
||||||
private DialogContents _dialogContents;
|
private DialogContents _dialogContents;
|
||||||
|
|
||||||
public DialogService()
|
public bool IsVisible { get; set; }
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsVisible { get; set; }
|
|
||||||
|
|
||||||
public void Subscribe(Action action)
|
public void Subscribe(Action action)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ namespace Services.Website;
|
|||||||
|
|
||||||
public class PermissionService : IPermissionService, IDisposable
|
public class PermissionService : IPermissionService, IDisposable
|
||||||
{
|
{
|
||||||
private IJSRuntime _jsRuntime;
|
|
||||||
private readonly IStorageService _storageService;
|
private readonly IStorageService _storageService;
|
||||||
|
private IJSRuntime _jsRuntime;
|
||||||
private IToastService _toastService;
|
private IToastService _toastService;
|
||||||
private bool isLoaded;
|
private bool isLoaded;
|
||||||
private bool isStorageEnabled = false;
|
private bool isStorageEnabled = false;
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ public class SearchService : ISearchService
|
|||||||
{
|
{
|
||||||
Title = webPage.Name,
|
Title = webPage.Name,
|
||||||
PointType = "WebPage",
|
PointType = "WebPage",
|
||||||
Summary = $"{webPage.Description}",
|
Summary = $"{webPage.Description}",
|
||||||
Href = webPage.Href
|
Href = webPage.Href
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -93,6 +93,7 @@ public class StorageService : IStorageService
|
|||||||
}
|
}
|
||||||
|
|
||||||
private event Action OnChange = null!;
|
private event Action OnChange = null!;
|
||||||
|
|
||||||
private void NotifyDataChanged()
|
private void NotifyDataChanged()
|
||||||
{
|
{
|
||||||
OnChange();
|
OnChange();
|
||||||
|
|||||||
@@ -35,10 +35,7 @@ public class BaseTest
|
|||||||
|
|
||||||
options.AcceptInsecureCertificates = true;
|
options.AcceptInsecureCertificates = true;
|
||||||
|
|
||||||
if (DeploymentType.Equals(DeploymentType.Dev))
|
if (DeploymentType.Equals(DeploymentType.Dev)) options.AddArgument("--headless");
|
||||||
{
|
|
||||||
options.AddArgument("--headless");
|
|
||||||
}
|
|
||||||
options.AddArgument("--ignore-certificate-errors");
|
options.AddArgument("--ignore-certificate-errors");
|
||||||
options.AddArgument("--start-maximized");
|
options.AddArgument("--start-maximized");
|
||||||
options.AddArgument("--test-type");
|
options.AddArgument("--test-type");
|
||||||
|
|||||||
@@ -6,20 +6,24 @@ namespace TestAutomation.Pages;
|
|||||||
|
|
||||||
public class DatabasePage : BaseElement
|
public class DatabasePage : BaseElement
|
||||||
{
|
{
|
||||||
|
public DatabasePage(Website website) : base(website)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
private IWebElement FilterNameInput => Website.Find("filterName");
|
private IWebElement FilterNameInput => Website.Find("filterName");
|
||||||
|
|
||||||
|
|
||||||
private ReadOnlyCollection<IWebElement> EntityNames() =>
|
private ReadOnlyCollection<IWebElement> EntityNames()
|
||||||
Website.FindAll("entityName");
|
{
|
||||||
|
return Website.FindAll("entityName");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private IWebElement EntityName(string entityType, string entityName) =>
|
private IWebElement EntityName(string entityType, string entityName)
|
||||||
Website.Find("entityName",
|
{
|
||||||
|
return Website.Find("entityName",
|
||||||
$"{entityType.ToLower()}-{entityName.ToLower()}");
|
$"{entityType.ToLower()}-{entityName.ToLower()}");
|
||||||
|
}
|
||||||
|
|
||||||
public DatabasePage(Website website) : base(website) { }
|
|
||||||
|
|
||||||
public DatabasePage FilterName(string name)
|
public DatabasePage FilterName(string name)
|
||||||
{
|
{
|
||||||
@@ -34,11 +38,9 @@ public class DatabasePage : BaseElement
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DatabasePage GetEntityName(int index,out string result)
|
public DatabasePage GetEntityName(int index, out string result)
|
||||||
{
|
{
|
||||||
result = EntityNames()[index].Text;
|
result = EntityNames()[index].Text;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -5,14 +5,16 @@ namespace TestAutomation.Pages;
|
|||||||
|
|
||||||
public class DatabaseSinglePage : BaseElement
|
public class DatabaseSinglePage : BaseElement
|
||||||
{
|
{
|
||||||
|
public DatabaseSinglePage(Website website) : base(website)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
private IWebElement EntityName => Website.Find("entityName");
|
private IWebElement EntityName => Website.Find("entityName");
|
||||||
private IWebElement EntityHealth => Website.Find("entityHealth");
|
private IWebElement EntityHealth => Website.Find("entityHealth");
|
||||||
|
|
||||||
private IWebElement InvalidSearch => Website.Find("invalidSearch");
|
private IWebElement InvalidSearch => Website.Find("invalidSearch");
|
||||||
private IWebElement ValidSearch => Website.Find("validSearch");
|
private IWebElement ValidSearch => Website.Find("validSearch");
|
||||||
|
|
||||||
public DatabaseSinglePage(Website website) : base(website) { }
|
|
||||||
|
|
||||||
|
|
||||||
public DatabaseSinglePage GetEntityName(out string result)
|
public DatabaseSinglePage GetEntityName(out string result)
|
||||||
{
|
{
|
||||||
@@ -37,5 +39,4 @@ public class DatabaseSinglePage : BaseElement
|
|||||||
result = ValidSearch.Text;
|
result = ValidSearch.Text;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,13 +1,13 @@
|
|||||||
using TestAutomation.Enums;
|
|
||||||
using TestAutomation.Utils;
|
using TestAutomation.Utils;
|
||||||
|
|
||||||
namespace TestAutomation.Shared;
|
namespace TestAutomation.Shared;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class NavigationBar : BaseElement
|
public class NavigationBar : BaseElement
|
||||||
{
|
{
|
||||||
public NavigationBar(Website website) : base(website) { }
|
public NavigationBar(Website website) : base(website)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
private IWebElement HomeLink => Website.FindScreenSpecific("homeLink");
|
private IWebElement HomeLink => Website.FindScreenSpecific("homeLink");
|
||||||
private IWebElement SearchButton => Website.FindScreenSpecific("searchButton");
|
private IWebElement SearchButton => Website.FindScreenSpecific("searchButton");
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
using Discord.Rest;
|
|
||||||
using TestAutomation.Utils;
|
using TestAutomation.Utils;
|
||||||
|
|
||||||
namespace TestAutomation.Shared;
|
namespace TestAutomation.Shared;
|
||||||
|
|||||||
@@ -9,20 +9,20 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Discord.Net.Webhook" Version="3.6.0" />
|
<PackageReference Include="Discord.Net.Webhook" Version="3.6.0"/>
|
||||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0.0-preview.2.22152.2" />
|
<PackageReference Include="Microsoft.Extensions.Configuration" Version="7.0.0-preview.2.22152.2"/>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0"/>
|
||||||
<PackageReference Include="NUnit" Version="3.13.2" />
|
<PackageReference Include="NUnit" Version="3.13.2"/>
|
||||||
<PackageReference Include="NUnit3TestAdapter" Version="4.2.0" />
|
<PackageReference Include="NUnit3TestAdapter" Version="4.2.0"/>
|
||||||
<PackageReference Include="NUnit.Analyzers" Version="3.2.0" />
|
<PackageReference Include="NUnit.Analyzers" Version="3.2.0"/>
|
||||||
<PackageReference Include="coverlet.collector" Version="3.1.0" />
|
<PackageReference Include="coverlet.collector" Version="3.1.0"/>
|
||||||
<PackageReference Include="Selenium.WebDriver" Version="4.1.0" />
|
<PackageReference Include="Selenium.WebDriver" Version="4.1.0"/>
|
||||||
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="101.0.4951.4100" />
|
<PackageReference Include="Selenium.WebDriver.ChromeDriver" Version="101.0.4951.4100"/>
|
||||||
<PackageReference Include="Selenium.WebDriver.GeckoDriver" Version="0.31.0" />
|
<PackageReference Include="Selenium.WebDriver.GeckoDriver" Version="0.31.0"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Pages\" />
|
<Folder Include="Pages\"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -32,8 +32,10 @@ public class TestSearchFeatures : BaseTest
|
|||||||
.GetEntityName(out var name)
|
.GetEntityName(out var name)
|
||||||
.GetEntityHealth(out var health);
|
.GetEntityHealth(out var health);
|
||||||
|
|
||||||
TestReport.CheckPassed(name.Equals("Throne"), new TestMessage(){ Description = "Couldn't find Throne via search."});
|
TestReport.CheckPassed(name.Equals("Throne"),
|
||||||
TestReport.CheckPassed(!health.Trim().Equals(""), new TestMessage(){ Description = "Throne has no visible health!"});
|
new TestMessage { Description = "Couldn't find Throne via search." });
|
||||||
|
TestReport.CheckPassed(!health.Trim().Equals(""),
|
||||||
|
new TestMessage { Description = "Throne has no visible health!" });
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@@ -48,7 +50,7 @@ public class TestSearchFeatures : BaseTest
|
|||||||
.GetEntityName(0, out var name);
|
.GetEntityName(0, out var name);
|
||||||
|
|
||||||
TestReport.CheckPassed(name.Equals("Throne"),
|
TestReport.CheckPassed(name.Equals("Throne"),
|
||||||
new TestMessage(){ Description = "Couldn't find Throne via filter."});
|
new TestMessage { Description = "Couldn't find Throne via filter." });
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@@ -59,10 +61,10 @@ public class TestSearchFeatures : BaseTest
|
|||||||
Website.WebDriver.Navigate().GoToUrl(WebsiteUrl + "/database");
|
Website.WebDriver.Navigate().GoToUrl(WebsiteUrl + "/database");
|
||||||
|
|
||||||
Website.DatabasePage
|
Website.DatabasePage
|
||||||
.GetEntityName( "army", "throne", out var name);
|
.GetEntityName("army", "throne", out var name);
|
||||||
|
|
||||||
TestReport.CheckPassed(name.Equals("Throne"),
|
TestReport.CheckPassed(name.Equals("Throne"),
|
||||||
new TestMessage(){ Description = "Couldn't find Throne on the page by default."});
|
new TestMessage { Description = "Couldn't find Throne on the page by default." });
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
@@ -77,9 +79,9 @@ public class TestSearchFeatures : BaseTest
|
|||||||
.GetValidSearch(out var validSearch);
|
.GetValidSearch(out var validSearch);
|
||||||
|
|
||||||
TestReport.CheckPassed(invalidSearch.Equals("not throne"),
|
TestReport.CheckPassed(invalidSearch.Equals("not throne"),
|
||||||
new TestMessage(){ Description = "Couldn't find invalid search text on the page."});
|
new TestMessage { Description = "Couldn't find invalid search text on the page." });
|
||||||
TestReport.CheckPassed(validSearch.Equals("Throne"),
|
TestReport.CheckPassed(validSearch.Equals("Throne"),
|
||||||
new TestMessage(){ Description = "Couldn't find valid search text on the page."});
|
new TestMessage { Description = "Couldn't find valid search text on the page." });
|
||||||
|
|
||||||
Website.WebDriver.Navigate().GoToUrl(WebsiteUrl + "/database/not throne");
|
Website.WebDriver.Navigate().GoToUrl(WebsiteUrl + "/database/not throne");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class Website
|
|||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
throw new Exception($"Couldn't find {screenSpecificId}. Element does not exist on current page. " +
|
throw new Exception($"Couldn't find {screenSpecificId}. Element does not exist on current page. " +
|
||||||
$"\n\nPerhaps an Id is missing.");
|
"\n\nPerhaps an Id is missing.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ public class Website
|
|||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
throw new Exception($"Couldn't find parent {withParentId}. Element does not exist on current page. " +
|
throw new Exception($"Couldn't find parent {withParentId}. Element does not exist on current page. " +
|
||||||
$"\n\nPerhaps an Id is missing.");
|
"\n\nPerhaps an Id is missing.");
|
||||||
}
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
@@ -70,7 +70,7 @@ public class Website
|
|||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
throw new Exception($"Couldn't find {byId}. Element does not exist on current page. " +
|
throw new Exception($"Couldn't find {byId}. Element does not exist on current page. " +
|
||||||
$"\n\nPerhaps an Id is missing.");
|
"\n\nPerhaps an Id is missing.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ public class Website
|
|||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
throw new Exception($"Couldn't find {byId}. Element does not exist on current page. " +
|
throw new Exception($"Couldn't find {byId}. Element does not exist on current page. " +
|
||||||
$"\n\nPerhaps an Id is missing.");
|
"\n\nPerhaps an Id is missing.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@ public class Website
|
|||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
throw new Exception($"Couldn't find {byId}. Element does not exist on current page. " +
|
throw new Exception($"Couldn't find {byId}. Element does not exist on current page. " +
|
||||||
$"\n\nPerhaps an Id is missing.");
|
"\n\nPerhaps an Id is missing.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user