From b540e360c8a10f5c9838f565a6aa592bae07ae2e Mon Sep 17 00:00:00 2001 From: Jonathan McCaffrey Date: Tue, 12 Apr 2022 17:28:39 -0400 Subject: [PATCH] data(Database) Added passive data from Twitter post --- IGP/Database.db | Bin 278528 -> 278528 bytes IGP/Pages/Database/DatabasePage.razor | 2 +- .../Parts/EntityPassivesComponent.razor | 38 +- .../Parts/EntityProductionComponent.razor | 6 +- .../Parts/EntityVanguardsComponent.razor | 4 +- IGP/wwwroot/generated/GitChangeModels.json | 2 +- IGP/wwwroot/generated/GitPatchModels.json | 2 +- Model/Entity/Data/DATA.cs | 712 ++++++++++++++---- Model/Entity/Data/Ids_Entity.cs | 64 +- Model/Entity/Parts/EntityRequirementModel.cs | 2 +- Model/Entity/Types/DescriptiveType.cs | 3 + Services/Immortal/BuildOrderService.cs | 4 +- 12 files changed, 691 insertions(+), 148 deletions(-) diff --git a/IGP/Database.db b/IGP/Database.db index 96ba9d606ea97b341e49dfaf95a2b8ec9707d286..7aaf5227e1f7281be0d491583e5e8db0a148d1b3 100644 GIT binary patch delta 447 zcmZo@5Nv1=+~DLdCM&GKtj*}2S>l|Ln3taFo1c=JQ|z%h!vBQ;6Mx8NK><;IW;R*b z%~APl6c{&8W}jfeyqRkuP&|oCUsRq!JT~jIL6g}JbhGir@kQ_j0S(&4JNd(U7CsLTR%S*< zcXtr!=GL5Yu07=(l3noXq5G1((#~?2`Nf1>e-XQpc2()D(rJ)Dock6mo$A3VDfTndylonfZANY57G8 zDNx0w#i>QbdTyzSC8b3`U*r_0dbk0NRgISxm4W%iC9xzCVqjisxk3Tdhq)<0VTH7! z{9J{Q@=UNr1^LA#FtdPOPIYhx8l@O1EG`q0pIBU?;Fg$@>XumnbXf_AU#yUqU!stf un39>7u8?0^qL5z(bZtpyZmJ$o71%KhK%mDduPZ&h-+@VOyZa{QoxK2(`Hl<# delta 153 zcmZo@5Nv1=+~DLdCL^rCtj*}2S>l|Ln3taFo1c=JQ|!7q!vBT9WdNKvuuvb zU!lObZ8G}=3&w3g(K0Ss85vdvd3o{Fypq%+zr@^BQ+-1NeIo-SBe%qy;?0+58LBe7 z@}*2>KhO .databaseItems { - height: 700px; + height: 900px; overflow-x: hidden; overflow-y: auto; background-color: var(--background); diff --git a/IGP/Pages/Database/Entity/Parts/EntityPassivesComponent.razor b/IGP/Pages/Database/Entity/Parts/EntityPassivesComponent.razor index c8b86b1..aa3e54c 100644 --- a/IGP/Pages/Database/Entity/Parts/EntityPassivesComponent.razor +++ b/IGP/Pages/Database/Entity/Parts/EntityPassivesComponent.razor @@ -10,6 +10,9 @@ var production = passive.Production(); + var requirements = passive.Requirements(); + +
Name: @info.Name @@ -21,7 +24,7 @@ @if (!info.Notes.Trim().Equals("")) {
- - Description: @((MarkupString)info.Notes) + - Notes: @((MarkupString)info.Notes)
}
@@ -43,6 +46,19 @@ }
} + + @if (requirements.Count > 0) + { + @foreach (var requirement in requirements) + { + var requirementModel = DATA.Get()[requirement.Id]; +
+ + @requirement.Requirement.Replace("_", " "): @requirementModel.Info().Name + +
+ } + } } } else @@ -55,6 +71,9 @@ var info = passive.Info(); var production = passive.Production(); + + var requirements = passive.Requirements(); +
@@ -67,9 +86,23 @@ @if (!info.Notes.Trim().Equals("")) {
- Description: @((MarkupString)info.Notes) + Notes: @((MarkupString)info.Notes)
} + + + @if (requirements.Count > 0) + { + @foreach (var requirement in requirements) + { + var requirementModel = DATA.Get()[requirement.Id]; +
+ + @requirement.Requirement.Replace("_", " "): @requirementModel.Info().Name + +
+ } + }
@if (production != null) @@ -89,6 +122,7 @@ }
} + } } diff --git a/IGP/Pages/Database/Entity/Parts/EntityProductionComponent.razor b/IGP/Pages/Database/Entity/Parts/EntityProductionComponent.razor index 379f041..f4eb25d 100644 --- a/IGP/Pages/Database/Entity/Parts/EntityProductionComponent.razor +++ b/IGP/Pages/Database/Entity/Parts/EntityProductionComponent.razor @@ -7,11 +7,11 @@
@foreach (var requirement in Requirements) { - var replaced = DATA.Get()[requirement.DataType]; + var requirementModel = DATA.Get()[requirement.Id];
- @requirement.Requirement.Replace("_", " "): @replaced.Info().Name + @requirement.Requirement.Replace("_", " "): @requirementModel.Info().Name
} @@ -97,7 +97,7 @@
- @requirement.Requirement.Replace("_", " "): + @requirement.Requirement.Replace("_", " "):
} diff --git a/IGP/Pages/Database/Entity/Parts/EntityVanguardsComponent.razor b/IGP/Pages/Database/Entity/Parts/EntityVanguardsComponent.razor index 54538ba..0958dc1 100644 --- a/IGP/Pages/Database/Entity/Parts/EntityVanguardsComponent.razor +++ b/IGP/Pages/Database/Entity/Parts/EntityVanguardsComponent.razor @@ -14,7 +14,7 @@ var productionBuilding = (from building in requirements where building.Requirement == RequirementType.Production_Building - select building).First().DataType; + select building).First().Id;
@@ -40,7 +40,7 @@ var vanguard = entity.VanguardAdded(); var productionBuilding = (from building in requirements where building.Requirement == RequirementType.Production_Building - select building).First().DataType; + select building).First().Id;
diff --git a/IGP/wwwroot/generated/GitChangeModels.json b/IGP/wwwroot/generated/GitChangeModels.json index a791450..ba9820d 100644 --- a/IGP/wwwroot/generated/GitChangeModels.json +++ b/IGP/wwwroot/generated/GitChangeModels.json @@ -1 +1 @@ -[{"Id":1,"GitPatchModelId":1,"Name":"Shrink Header Navigation","Description":"The full header navigation is now only visible on desktop when hovered.","Commit":"Feature","Important":"False"},{"Id":2,"GitPatchModelId":1,"Name":"Database UX Update","Description":"Desktop Database Filter UI has been updated. It\u0027s now always visible.","Commit":"Feature","Important":"False"},{"Id":3,"GitPatchModelId":2,"Name":"Fixing Thrum Stats","Description":"Speed was too low. Health and Shields ratio is slightly different.","Commit":"Fix","Important":"False"},{"Id":4,"GitPatchModelId":3,"Name":"Memory Tester","Description":"Fun quick feature added while I rewrite my database. Tests memory of units ranges and speeds.","Commit":"Feature","Important":"False"},{"Id":5,"GitPatchModelId":3,"Name":"Privacy Policy Removed","Description":"Removed cringe privacy policy. It misses the issue. Will eventually add operational analytics and cookies, and add a more applicable Privacy Policy if needed. Not a priority though.","Commit":"Fix","Important":"False"},{"Id":6,"GitPatchModelId":3,"Name":"Input Tripling","Description":"Fixed a bug where inputs could get tripled on the Build Calculator.","Commit":"Fix","Important":"False"},{"Id":7,"GitPatchModelId":3,"Name":"Agile Changes","Description":"Updated Agile log to indicate the next 2 weeks will be spent on SQL","Commit":"Planning","Important":"False"},{"Id":8,"GitPatchModelId":4,"Name":"Hiding WIP Pyre Feature","Description":"Whoops, WIP Pyre feature accidentally got committed to production. Now hidden.","Commit":"Fix","Important":"False"},{"Id":9,"GitPatchModelId":5,"Name":"Build Calc Optimization","Description":"Improved speeds","Commit":"Fix","Important":"False"},{"Id":10,"GitPatchModelId":5,"Name":"Change Log Filter","Description":"Change log now defaults to showing only important patches","Commit":"Feature","Important":"False"},{"Id":11,"GitPatchModelId":5,"Name":"Motes Consumed","Description":"Motes now consumed in the build calculator when making a townhall.","Commit":"Fix","Important":"False"},{"Id":12,"GitPatchModelId":6,"Name":"Agile UI Tweaks","Description":"Making the agile text look a bit better before stream.","Commit":"Style","Important":"False"},{"Id":13,"GitPatchModelId":7,"Name":"Database Armor","Description":"Added missing armor display to database.","Commit":"Fix","Important":"False"},{"Id":14,"GitPatchModelId":8,"Name":"Home Page","Description":"Added a quick placeholder-ish homepage.","Commit":"Feature","Important":"False"},{"Id":15,"GitPatchModelId":8,"Name":"Database Army Default","Description":"Database UI now defaults to Army selection. Given most people are probably going to want to view the units.","Commit":"Fix","Important":"False"},{"Id":16,"GitPatchModelId":9,"Name":"Mobile Menu Back","Description":"You can now click the page after selecting a Section, to go back to Section nav.","Commit":"Fix","Important":"False"},{"Id":17,"GitPatchModelId":10,"Name":"Mobile Menu Fixed","Description":"Fixed the mobile menu not actually being positioned to the bottom of the screen on phones.","Commit":"Fix","Important":"False"},{"Id":18,"GitPatchModelId":11,"Name":"Tablet Menu","Description":"Added a hamburger nav menu for tablets.","Commit":"Feature","Important":"False"},{"Id":19,"GitPatchModelId":11,"Name":"Mobile Menu","Description":"Added a bottom nav menu for phones.","Commit":"Feature","Important":"False"},{"Id":20,"GitPatchModelId":12,"Name":"0.0.6.8375a","Description":"Database updated to 0.0.6.8375a","Commit":"Game Patch","Important":"True"},{"Id":21,"GitPatchModelId":12,"Name":"Database Descriptions","Description":"Added more text descriptions to buildings and etc..","Commit":"Feature","Important":"False"},{"Id":22,"GitPatchModelId":12,"Name":"Guids","Description":"Now using Guids and strings over enums. View in /raw-database page.","Commit":"Feature","Important":"False"},{"Id":23,"GitPatchModelId":12,"Name":"Mobile UI","Description":"Additional mobile UI improvements. Harass calculator now has fewer inputs that don\u0027t matter.","Commit":"Feature","Important":"False"},{"Id":24,"GitPatchModelId":12,"Name":"Bug Tasks","Description":"Added feature/bug task indicator to agile view. Added consume mote bug in build calculator to next sprint. (Calculator not consuming motes on Town Hall building)","Commit":"Feature","Important":"False"},{"Id":25,"GitPatchModelId":12,"Name":"Entity Display UI","Description":"Display UI improved. Build Calculator now uses the same Entity display UI as the Database.","Commit":"Style","Important":"False"},{"Id":26,"GitPatchModelId":13,"Name":"Removed Embedded YouTube","Description":"Having embedded videos makes my privacy policy look completely untrue. Removed the video (it\u0027s now a link) and added a message on the privacy policy to point out that the error occured.","Commit":"Fix","Important":"False"},{"Id":27,"GitPatchModelId":13,"Name":"Agile View Backlog","Description":"Added backlog rendering to the Agile View Page. Added priority level to better indicate what tasks have high or zero priority.","Commit":"Feature","Important":"False"},{"Id":28,"GitPatchModelId":14,"Name":"Privacy Policy Page","Description":"The privacy policy is now a page rather than a blurb on the About page.","Commit":"Feature","Important":"False"},{"Id":29,"GitPatchModelId":14,"Name":"Privacy Policy Update","Description":"I added information on how I use personal data. And a disclaimer that privacy can never be guaranteed.","Commit":"Privacy Policy","Important":"False"},{"Id":30,"GitPatchModelId":14,"Name":"Minor Tweaks","Description":"Minor UI changes and text fixes.","Commit":"None","Important":"False"},{"Id":31,"GitPatchModelId":15,"Name":"Homepage","Description":"Making Of page no longer shows on the homepage","Commit":"Fix","Important":"False"},{"Id":32,"GitPatchModelId":15,"Name":"DevOnly Component","Description":"Added a DevOnly component to wrap UI content that should not be released to production. I.e. the Homepage bug.","Commit":"Feature","Important":"False"},{"Id":33,"GitPatchModelId":16,"Name":"Agile View","Description":"Add an agile page to show current activities.","Commit":"Feature","Important":"False"},{"Id":34,"GitPatchModelId":16,"Name":"Rendering Entire Database","Description":"I can now render the database without lag. Not sure what fixed it.","Commit":"Fix","Important":"False"},{"Id":35,"GitPatchModelId":16,"Name":"Database Data","Description":"Added a ton of data to the database. Such as various descriptions. More work is still to be done.","Commit":"Feature","Important":"False"},{"Id":36,"GitPatchModelId":16,"Name":"Database Ids","Description":"Database has less duplicated content. Army entities now link to their Upgrades and Abilities. More work is still to be done.","Commit":"Feature","Important":"False"},{"Id":37,"GitPatchModelId":16,"Name":"Blades of the Godhead Requirement","Description":"Fixed the requirement incorrectly being the Eye of Aros. Now is properly Bearer of the Crown.","Commit":"Fix","Important":"False"},{"Id":38,"GitPatchModelId":16,"Name":"UI Changes","Description":"Various UI changes and tweaks","Commit":"Style","Important":"False"},{"Id":39,"GitPatchModelId":16,"Name":"Streams","Description":"Added a Streams page. It mentions plans to do Twitch streams on Sunday.","Commit":"Feature","Important":"False"},{"Id":40,"GitPatchModelId":16,"Name":"IMMORTAL","Description":"Fixed \u0022IMMORTAL: Gates of Pyre\u0022 game title. Will no longer refer to it as \u0022Immortal: Gates of Pyre\u0022.","Commit":"Typo","Important":"False"},{"Id":41,"GitPatchModelId":16,"Name":"Mobile Support","Description":"All the pages should now work on phones.","Commit":"Feature","Important":"False"},{"Id":42,"GitPatchModelId":17,"Name":"Form Text","Description":"Fixed search bar in database, name and colour in build calculator, from not rendering \uD83D\uDE10","Commit":"Fix","Important":"False"},{"Id":43,"GitPatchModelId":17,"Name":"UI Test Automation Road Map","Description":"Adding test automation to the roadmap","Commit":"Planning","Important":"False"},{"Id":44,"GitPatchModelId":18,"Name":"Build Calculator Interval","Description":"600 is too laggy. Reducing to 360 until optimizations are done.","Commit":"Fix","Important":"False"},{"Id":45,"GitPatchModelId":18,"Name":"Changelog Patch Date","Description":"Fixed date on previous patch in changelog. Should be one day earlier.","Commit":"Fix","Important":"False"},{"Id":46,"GitPatchModelId":19,"Name":"UI Overhaul","Description":"Cleaned up and restyled a lot of UI. Like Page Containers, Alerts, Forms, Nav Buttons, and more.","Commit":"Style","Important":"False"},{"Id":47,"GitPatchModelId":19,"Name":"Separate Pages","Description":"Navigation now uses different pages, instead of loading content onto the main page.","Commit":"Feature","Important":"False"},{"Id":48,"GitPatchModelId":19,"Name":"Making Of","Description":"Adding Making Of page for design reference.","Commit":"Feature","Important":"False"},{"Id":49,"GitPatchModelId":19,"Name":"Change Log","Description":"Adding Change Log page for viewing update history.","Commit":"Feature","Important":"False"},{"Id":50,"GitPatchModelId":19,"Name":"Mobile Priority","Description":"Changed mobile support priority in roadmap from low and possible to high and planned, and updated description.","Commit":"Planning","Important":"False"},{"Id":51,"GitPatchModelId":20,"Name":"Purple Colours","Description":"Added placeholder-ish purple color scheme.","Commit":"Style","Important":"False"},{"Id":52,"GitPatchModelId":20,"Name":"SQL","Description":"Agile and Change Log pages now use JSON made from SQL","Commit":"Feature","Important":"False"},{"Id":53,"GitPatchModelId":21,"Name":"Discord Link","Description":"Made a discord for the website, and added invite link to contact page","Commit":"Feature","Important":"False"},{"Id":54,"GitPatchModelId":21,"Name":"Loading Improvemnts","Description":"Agile and Change Log loading improved","Commit":"Feature","Important":"False"},{"Id":55,"GitPatchModelId":21,"Name":"Desktop Nav closing","Description":"Desktop nav menu now closes when a page link is clicked","Commit":"Feature","Important":"False"},{"Id":56,"GitPatchModelId":22,"Name":"0.0.6.8900a","Description":"Database updated to 0.0.6.8900a","Commit":"Game Patch","Important":"True"},{"Id":57,"GitPatchModelId":23,"Name":"Database Links","Description":"Various entity references in the database now link to the entity via a dialog interface","Commit":"Feature","Important":"False"},{"Id":58,"GitPatchModelId":24,"Name":"Documentation Page","Description":"Added a docs page with some starter setup information","Commit":"Feature","Important":"False"},{"Id":59,"GitPatchModelId":24,"Name":"Database Filters","Description":"Fixed filter defaults. Removed unimportant filter types","Commit":"Fix","Important":"False"},{"Id":60,"GitPatchModelId":25,"Name":"Database Fixes","Description":"Various fixes to bad data. Added some missing entities","Commit":"Fix","Important":"False"},{"Id":61,"GitPatchModelId":25,"Name":"Plain View","Description":"Database can now change to plain view for easy copy and pasting","Commit":"Feature","Important":"False"},{"Id":62,"GitPatchModelId":25,"Name":"Direct Links","Description":"Database now supports direct links. database/Throne to see just Throne","Commit":"Feature","Important":"False"},{"Id":63,"GitPatchModelId":26,"Name":"Better Navigation","Description":"Documentational pages now use a more logical navigation format, with sections, and parent-child documents","Commit":"Feature","Important":"False"},{"Id":64,"GitPatchModelId":26,"Name":"Style Improvements","Description":"Improved home page styling on website highlighted content","Commit":"Style","Important":"False"},{"Id":65,"GitPatchModelId":26,"Name":"Warning Cleanup","Description":"Removed a bunch of development code warnings","Commit":"Chore","Important":"False"},{"Id":66,"GitPatchModelId":27,"Name":"Toasts","Description":"Added some error toasts to build calculator. Needs work","Commit":"Feature","Important":"False"},{"Id":67,"GitPatchModelId":27,"Name":"Localization Text","Description":"Added localization logic for handling some text. Currently only supporting English","Commit":"Feature","Important":"False"},{"Id":68,"GitPatchModelId":27,"Name":"GitHub Button","Description":"Harass Calculator now links to code in repo, instead of showing it as text","Commit":"Feature","Important":"False"},{"Id":69,"GitPatchModelId":28,"Name":"Markdown","Description":"Docs and Notes are now easily editable markdown files. Navigation will still be handled via SQL formatted data.","Commit":"Feature","Important":"False"}] \ No newline at end of file +[{"Id":1,"GitPatchModelId":1,"Name":"Shrink Header Navigation","Description":"The full header navigation is now only visible on desktop when hovered.","Commit":"Feature","Important":"False"},{"Id":2,"GitPatchModelId":1,"Name":"Database UX Update","Description":"Desktop Database Filter UI has been updated. It\u0027s now always visible.","Commit":"Feature","Important":"False"},{"Id":3,"GitPatchModelId":2,"Name":"Fixing Thrum Stats","Description":"Speed was too low. Health and Shields ratio is slightly different.","Commit":"Fix","Important":"False"},{"Id":4,"GitPatchModelId":3,"Name":"Memory Tester","Description":"Fun quick feature added while I rewrite my database. Tests memory of units ranges and speeds.","Commit":"Feature","Important":"False"},{"Id":5,"GitPatchModelId":3,"Name":"Privacy Policy Removed","Description":"Removed cringe privacy policy. It misses the issue. Will eventually add operational analytics and cookies, and add a more applicable Privacy Policy if needed. Not a priority though.","Commit":"Fix","Important":"False"},{"Id":6,"GitPatchModelId":3,"Name":"Input Tripling","Description":"Fixed a bug where inputs could get tripled on the Build Calculator.","Commit":"Fix","Important":"False"},{"Id":7,"GitPatchModelId":3,"Name":"Agile Changes","Description":"Updated Agile log to indicate the next 2 weeks will be spent on SQL","Commit":"Planning","Important":"False"},{"Id":8,"GitPatchModelId":4,"Name":"Hiding WIP Pyre Feature","Description":"Whoops, WIP Pyre feature accidentally got committed to production. Now hidden.","Commit":"Fix","Important":"False"},{"Id":9,"GitPatchModelId":5,"Name":"Build Calc Optimization","Description":"Improved speeds","Commit":"Fix","Important":"False"},{"Id":10,"GitPatchModelId":5,"Name":"Change Log Filter","Description":"Change log now defaults to showing only important patches","Commit":"Feature","Important":"False"},{"Id":11,"GitPatchModelId":5,"Name":"Motes Consumed","Description":"Motes now consumed in the build calculator when making a townhall.","Commit":"Fix","Important":"False"},{"Id":12,"GitPatchModelId":6,"Name":"Agile UI Tweaks","Description":"Making the agile text look a bit better before stream.","Commit":"Style","Important":"False"},{"Id":13,"GitPatchModelId":7,"Name":"Database Armor","Description":"Added missing armor display to database.","Commit":"Fix","Important":"False"},{"Id":14,"GitPatchModelId":8,"Name":"Home Page","Description":"Added a quick placeholder-ish homepage.","Commit":"Feature","Important":"False"},{"Id":15,"GitPatchModelId":8,"Name":"Database Army Default","Description":"Database UI now defaults to Army selection. Given most people are probably going to want to view the units.","Commit":"Fix","Important":"False"},{"Id":16,"GitPatchModelId":9,"Name":"Mobile Menu Back","Description":"You can now click the page after selecting a Section, to go back to Section nav.","Commit":"Fix","Important":"False"},{"Id":17,"GitPatchModelId":10,"Name":"Mobile Menu Fixed","Description":"Fixed the mobile menu not actually being positioned to the bottom of the screen on phones.","Commit":"Fix","Important":"False"},{"Id":18,"GitPatchModelId":11,"Name":"Tablet Menu","Description":"Added a hamburger nav menu for tablets.","Commit":"Feature","Important":"False"},{"Id":19,"GitPatchModelId":11,"Name":"Mobile Menu","Description":"Added a bottom nav menu for phones.","Commit":"Feature","Important":"False"},{"Id":20,"GitPatchModelId":12,"Name":"0.0.6.8375a","Description":"Database updated to 0.0.6.8375a","Commit":"Game Patch","Important":"True"},{"Id":21,"GitPatchModelId":12,"Name":"Database Descriptions","Description":"Added more text descriptions to buildings and etc..","Commit":"Feature","Important":"False"},{"Id":22,"GitPatchModelId":12,"Name":"Guids","Description":"Now using Guids and strings over enums. View in /raw-database page.","Commit":"Feature","Important":"False"},{"Id":23,"GitPatchModelId":12,"Name":"Mobile UI","Description":"Additional mobile UI improvements. Harass calculator now has fewer inputs that don\u0027t matter.","Commit":"Feature","Important":"False"},{"Id":24,"GitPatchModelId":12,"Name":"Bug Tasks","Description":"Added feature/bug task indicator to agile view. Added consume mote bug in build calculator to next sprint. (Calculator not consuming motes on Town Hall building)","Commit":"Feature","Important":"False"},{"Id":25,"GitPatchModelId":12,"Name":"Entity Display UI","Description":"Display UI improved. Build Calculator now uses the same Entity display UI as the Database.","Commit":"Style","Important":"False"},{"Id":26,"GitPatchModelId":13,"Name":"Removed Embedded YouTube","Description":"Having embedded videos makes my privacy policy look completely untrue. Removed the video (it\u0027s now a link) and added a message on the privacy policy to point out that the error occured.","Commit":"Fix","Important":"False"},{"Id":27,"GitPatchModelId":13,"Name":"Agile View Backlog","Description":"Added backlog rendering to the Agile View Page. Added priority level to better indicate what tasks have high or zero priority.","Commit":"Feature","Important":"False"},{"Id":28,"GitPatchModelId":14,"Name":"Privacy Policy Page","Description":"The privacy policy is now a page rather than a blurb on the About page.","Commit":"Feature","Important":"False"},{"Id":29,"GitPatchModelId":14,"Name":"Privacy Policy Update","Description":"I added information on how I use personal data. And a disclaimer that privacy can never be guaranteed.","Commit":"Privacy Policy","Important":"False"},{"Id":30,"GitPatchModelId":14,"Name":"Minor Tweaks","Description":"Minor UI changes and text fixes.","Commit":"None","Important":"False"},{"Id":31,"GitPatchModelId":15,"Name":"Homepage","Description":"Making Of page no longer shows on the homepage","Commit":"Fix","Important":"False"},{"Id":32,"GitPatchModelId":15,"Name":"DevOnly Component","Description":"Added a DevOnly component to wrap UI content that should not be released to production. I.e. the Homepage bug.","Commit":"Feature","Important":"False"},{"Id":33,"GitPatchModelId":16,"Name":"Agile View","Description":"Add an agile page to show current activities.","Commit":"Feature","Important":"False"},{"Id":34,"GitPatchModelId":16,"Name":"Rendering Entire Database","Description":"I can now render the database without lag. Not sure what fixed it.","Commit":"Fix","Important":"False"},{"Id":35,"GitPatchModelId":16,"Name":"Database Data","Description":"Added a ton of data to the database. Such as various descriptions. More work is still to be done.","Commit":"Feature","Important":"False"},{"Id":36,"GitPatchModelId":16,"Name":"Database Ids","Description":"Database has less duplicated content. Army entities now link to their Upgrades and Abilities. More work is still to be done.","Commit":"Feature","Important":"False"},{"Id":37,"GitPatchModelId":16,"Name":"Blades of the Godhead Requirement","Description":"Fixed the requirement incorrectly being the Eye of Aros. Now is properly Bearer of the Crown.","Commit":"Fix","Important":"False"},{"Id":38,"GitPatchModelId":16,"Name":"UI Changes","Description":"Various UI changes and tweaks","Commit":"Style","Important":"False"},{"Id":39,"GitPatchModelId":16,"Name":"Streams","Description":"Added a Streams page. It mentions plans to do Twitch streams on Sunday.","Commit":"Feature","Important":"False"},{"Id":40,"GitPatchModelId":16,"Name":"IMMORTAL","Description":"Fixed \u0022IMMORTAL: Gates of Pyre\u0022 game title. Will no longer refer to it as \u0022Immortal: Gates of Pyre\u0022.","Commit":"Typo","Important":"False"},{"Id":41,"GitPatchModelId":16,"Name":"Mobile Support","Description":"All the pages should now work on phones.","Commit":"Feature","Important":"False"},{"Id":42,"GitPatchModelId":17,"Name":"Form Text","Description":"Fixed search bar in database, name and colour in build calculator, from not rendering \uD83D\uDE10","Commit":"Fix","Important":"False"},{"Id":43,"GitPatchModelId":17,"Name":"UI Test Automation Road Map","Description":"Adding test automation to the roadmap","Commit":"Planning","Important":"False"},{"Id":44,"GitPatchModelId":18,"Name":"Build Calculator Interval","Description":"600 is too laggy. Reducing to 360 until optimizations are done.","Commit":"Fix","Important":"False"},{"Id":45,"GitPatchModelId":18,"Name":"Changelog Patch Date","Description":"Fixed date on previous patch in changelog. Should be one day earlier.","Commit":"Fix","Important":"False"},{"Id":46,"GitPatchModelId":19,"Name":"UI Overhaul","Description":"Cleaned up and restyled a lot of UI. Like Page Containers, Alerts, Forms, Nav Buttons, and more.","Commit":"Style","Important":"False"},{"Id":47,"GitPatchModelId":19,"Name":"Separate Pages","Description":"Navigation now uses different pages, instead of loading content onto the main page.","Commit":"Feature","Important":"False"},{"Id":48,"GitPatchModelId":19,"Name":"Making Of","Description":"Adding Making Of page for design reference.","Commit":"Feature","Important":"False"},{"Id":49,"GitPatchModelId":19,"Name":"Change Log","Description":"Adding Change Log page for viewing update history.","Commit":"Feature","Important":"False"},{"Id":50,"GitPatchModelId":19,"Name":"Mobile Priority","Description":"Changed mobile support priority in roadmap from low and possible to high and planned, and updated description.","Commit":"Planning","Important":"False"},{"Id":51,"GitPatchModelId":20,"Name":"Purple Colours","Description":"Added placeholder-ish purple color scheme.","Commit":"Style","Important":"False"},{"Id":52,"GitPatchModelId":20,"Name":"SQL","Description":"Agile and Change Log pages now use JSON made from SQL","Commit":"Feature","Important":"False"},{"Id":53,"GitPatchModelId":21,"Name":"Discord Link","Description":"Made a discord for the website, and added invite link to contact page","Commit":"Feature","Important":"False"},{"Id":54,"GitPatchModelId":21,"Name":"Loading Improvemnts","Description":"Agile and Change Log loading improved","Commit":"Feature","Important":"False"},{"Id":55,"GitPatchModelId":21,"Name":"Desktop Nav closing","Description":"Desktop nav menu now closes when a page link is clicked","Commit":"Feature","Important":"False"},{"Id":56,"GitPatchModelId":22,"Name":"0.0.6.8900a","Description":"Database updated to 0.0.6.8900a","Commit":"Game Patch","Important":"True"},{"Id":57,"GitPatchModelId":23,"Name":"Database Links","Description":"Various entity references in the database now link to the entity via a dialog interface","Commit":"Feature","Important":"False"},{"Id":58,"GitPatchModelId":24,"Name":"Documentation Page","Description":"Added a docs page with some starter setup information","Commit":"Feature","Important":"False"},{"Id":59,"GitPatchModelId":24,"Name":"Database Filters","Description":"Fixed filter defaults. Removed unimportant filter types","Commit":"Fix","Important":"False"},{"Id":60,"GitPatchModelId":25,"Name":"Database Fixes","Description":"Various fixes to bad data. Added some missing entities","Commit":"Fix","Important":"False"},{"Id":61,"GitPatchModelId":25,"Name":"Plain View","Description":"Database can now change to plain view for easy copy and pasting","Commit":"Feature","Important":"False"},{"Id":62,"GitPatchModelId":25,"Name":"Direct Links","Description":"Database now supports direct links. database/Throne to see just Throne","Commit":"Feature","Important":"False"},{"Id":63,"GitPatchModelId":26,"Name":"Better Navigation","Description":"Documentational pages now use a more logical navigation format, with sections, and parent-child documents","Commit":"Feature","Important":"False"},{"Id":64,"GitPatchModelId":26,"Name":"Style Improvements","Description":"Improved home page styling on website highlighted content","Commit":"Style","Important":"False"},{"Id":65,"GitPatchModelId":26,"Name":"Warning Cleanup","Description":"Removed a bunch of development code warnings","Commit":"Chore","Important":"False"},{"Id":66,"GitPatchModelId":27,"Name":"Toasts","Description":"Added some error toasts to build calculator. Needs work","Commit":"Feature","Important":"False"},{"Id":67,"GitPatchModelId":27,"Name":"Localization Text","Description":"Added localization logic for handling some text. Currently only supporting English","Commit":"Feature","Important":"False"},{"Id":68,"GitPatchModelId":27,"Name":"GitHub Button","Description":"Harass Calculator now links to code in repo, instead of showing it as text","Commit":"Feature","Important":"False"},{"Id":69,"GitPatchModelId":28,"Name":"Markdown","Description":"Docs and Notes are now easily editable markdown files. Navigation will still be handled via SQL formatted data.","Commit":"Feature","Important":"False"},{"Id":70,"GitPatchModelId":28,"Name":"Passive Data","Description":"Added new passive data from Twitter post.","Commit":"Feature","Important":"True"},{"Id":71,"GitPatchModelId":28,"Name":"Toast Fade","Description":"Fixed toasts not fading out over time.","Commit":"Fix","Important":"False"},{"Id":72,"GitPatchModelId":28,"Name":"Click Desktop Menu","Description":"Added better menu navigation for desktop users.","Commit":"Feature","Important":"False"}] \ No newline at end of file diff --git a/IGP/wwwroot/generated/GitPatchModels.json b/IGP/wwwroot/generated/GitPatchModels.json index 60095c5..0fc1d11 100644 --- a/IGP/wwwroot/generated/GitPatchModels.json +++ b/IGP/wwwroot/generated/GitPatchModels.json @@ -1 +1 @@ -[{"Id":1,"Name":"Database UX Patch","Date":"2022-03-13T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":2,"Name":"Thrum Stats Hotfix","Date":"2022-03-12T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":3,"Name":"Memory Tester Patch","Date":"2022-03-01T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":4,"Name":"Hide Pyre Hotfix","Date":"2022-02-20T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":5,"Name":"Stream Patch","Date":"2022-02-20T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":6,"Name":"Agile UI Hotfix","Date":"2022-02-20T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":7,"Name":"Armor Patch","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":8,"Name":"Home Page Patch","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":9,"Name":"Mobile Menu Hotfix 2","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":10,"Name":"Mobile Menu Hotfix","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":11,"Name":"Mobile Menu Patch","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":12,"Name":"0.0.6.8375a Patch","Date":"2022-02-18T00:00:00","GitChangeModels":[],"Important":"True"},{"Id":13,"Name":"Google Tracking Hotfix","Date":"2022-02-18T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":14,"Name":"Privacy Policy Patch","Date":"2022-02-17T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":15,"Name":"Home Page Quick Hotfix","Date":"2022-02-16T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":16,"Name":"Early Agile Patch","Date":"2022-02-16T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":17,"Name":"Form Text Rendering Hotfix","Date":"2022-02-15T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":18,"Name":"Reducing Timing Interval Hotfix","Date":"2022-02-15T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":19,"Name":"Changelog Patch","Date":"2022-02-14T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":20,"Name":"SQL Patch","Date":"2022-03-26T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":21,"Name":"Stream Patch","Date":"2022-03-30T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":22,"Name":"0.0.6.8900a Patch","Date":"2022-03-30T00:00:00","GitChangeModels":[],"Important":"True"},{"Id":23,"Name":"Database Links Patch","Date":"2022-04-01T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":24,"Name":"Open Source Patch","Date":"2022-04-03T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":25,"Name":"Stream Patch","Date":"2022-04-03T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":26,"Name":"Notes/Docs Patch","Date":"2022-04-10T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":27,"Name":"Stream Patch","Date":"2022-04-10T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":28,"Name":"enterName","Date":"2022-05-10T00:00:00","GitChangeModels":[],"Important":"False"}] \ No newline at end of file +[{"Id":1,"Name":"Database UX Patch","Date":"2022-03-13T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":2,"Name":"Thrum Stats Hotfix","Date":"2022-03-12T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":3,"Name":"Memory Tester Patch","Date":"2022-03-01T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":4,"Name":"Hide Pyre Hotfix","Date":"2022-02-20T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":5,"Name":"Stream Patch","Date":"2022-02-20T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":6,"Name":"Agile UI Hotfix","Date":"2022-02-20T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":7,"Name":"Armor Patch","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":8,"Name":"Home Page Patch","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":9,"Name":"Mobile Menu Hotfix 2","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":10,"Name":"Mobile Menu Hotfix","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":11,"Name":"Mobile Menu Patch","Date":"2022-02-19T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":12,"Name":"0.0.6.8375a Patch","Date":"2022-02-18T00:00:00","GitChangeModels":[],"Important":"True"},{"Id":13,"Name":"Google Tracking Hotfix","Date":"2022-02-18T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":14,"Name":"Privacy Policy Patch","Date":"2022-02-17T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":15,"Name":"Home Page Quick Hotfix","Date":"2022-02-16T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":16,"Name":"Early Agile Patch","Date":"2022-02-16T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":17,"Name":"Form Text Rendering Hotfix","Date":"2022-02-15T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":18,"Name":"Reducing Timing Interval Hotfix","Date":"2022-02-15T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":19,"Name":"Changelog Patch","Date":"2022-02-14T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":20,"Name":"SQL Patch","Date":"2022-03-26T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":21,"Name":"Stream Patch","Date":"2022-03-30T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":22,"Name":"0.0.6.8900a Patch","Date":"2022-03-30T00:00:00","GitChangeModels":[],"Important":"True"},{"Id":23,"Name":"Database Links Patch","Date":"2022-04-01T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":24,"Name":"Open Source Patch","Date":"2022-04-03T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":25,"Name":"Stream Patch","Date":"2022-04-03T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":26,"Name":"Notes/Docs Patch","Date":"2022-04-10T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":27,"Name":"Stream Patch","Date":"2022-04-10T00:00:00","GitChangeModels":[],"Important":"False"},{"Id":28,"Name":"Passive Patch","Date":"2022-04-12T00:00:00","GitChangeModels":[],"Important":"True"}] \ No newline at end of file diff --git a/Model/Entity/Data/DATA.cs b/Model/Entity/Data/DATA.cs index 45ac578..7bcbbb2 100644 --- a/Model/Entity/Data/DATA.cs +++ b/Model/Entity/Data/DATA.cs @@ -58,7 +58,7 @@ public class DATA Name = "Flying Teapot", Description = "Basic observer. Can fly and see hidden units", Notes = @"Much flying, Wow!" }) - .AddPart(new EntityRequirementModel { DataType = DataType.TEAPOT_Teapot }) + .AddPart(new EntityRequirementModel { Id = DataType.TEAPOT_Teapot }) .AddPart(new EntityProductionModel { Alloy = 100, Ether = 50 }) .AddPart(new EntityVitalityModel { Health = 70, Armor = ArmorType.Light }) .AddPart(new EntityMovementModel { Speed = 400, Movement = MovementType.Air }) @@ -236,11 +236,7 @@ public class DATA Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3, RequiresWorker = false, Slots = 1, TotalAmount = -1 }) - .AddPart(new EntityPassiveModel - { - Name = "Mother's Hunger", - Description = "Grants 1 pyre when a unit dies within 600 range of a blood well." - }) + .AddPart(new EntityIdPassiveModel {Id = DataType.IPASSIVE_MothersHunger}) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_SummonGroveGuardian }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_InfuseTroops }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_ConstructBloodWell }) @@ -259,16 +255,11 @@ public class DATA Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3, RequiresWorker = false, Slots = 1, TotalAmount = -1 }) - .AddPart(new EntityPassiveModel - { - Name = "[PlaceholderText] Instincts", - Description = - "[PlaceholderText] Your units can sense nearby enemies in the fog of war. (Not implemented)" - }) + .AddPart(new EntityIdPassiveModel {Id = DataType.IPASSIVE_StalkersSense}) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_SummonGroveGuardian }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_InfuseTroops }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_ConstructBloodWell }) - .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_GreatHunt }) + .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_TheGreatHunt }) .AddPart(new EntityIdVanguardModel { Id = DataType.VANGUARD_BoneStalker_Xol }) .AddPart(new EntityIdVanguardModel { Id = DataType.VANGUARD_WhiteWoodReaper_Xol }) }, @@ -284,11 +275,7 @@ public class DATA Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3, RequiresWorker = false, Slots = 1, TotalAmount = -1 }) - .AddPart(new EntityPassiveModel - { - Name = "[PlaceholderText] Healing Hallowed Ground", - Description = "[PlaceholderText] Your Hallowed Ground also heals units." - }) + .AddPart(new EntityIdPassiveModel {Id = DataType.IPASSIVE_HealingGround}) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_SummonCitadel }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_InfuseTroops }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_DeliverFromEvil }) @@ -306,11 +293,7 @@ public class DATA Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3, RequiresWorker = false, Slots = 1, TotalAmount = -1 }) - .AddPart(new EntityPassiveModel - { - Name = "[PlaceholderText] Expansionist", - Description = "[PlaceholderText] Your towers cost 25 less pyre." - }) + .AddPart(new EntityIdPassiveModel {Id = DataType.IPASSIVE_Expansionist}) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_InfuseTroops }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_SummonCitadel }) .AddPart(new EntityIdPyreSpellModel { Id = DataType.ISPELL_EmpireUnbroken }) @@ -319,6 +302,32 @@ public class DATA .AddPart(new EntityIdVanguardModel { Id = DataType.VANGUARD_Sceptre_Orzum }) }, + // Immortal Passives + { + DataType.IPASSIVE_HealingGround, + new EntityModel(DataType.IPASSIVE_HealingGround, EntityType.Passive) + .AddPart(new EntityInfoModel + { Name = "Healing Ground", Description = "Ajari's Hallowed Ground has a healing effect." }) + }, + { + DataType.IPASSIVE_Expansionist, + new EntityModel(DataType.IPASSIVE_Expansionist, EntityType.Passive) + .AddPart(new EntityInfoModel + { Name = "Expansionist", Description = "Orzum's Pyre Towers cost 25 less pyre." }) + }, + { + DataType.IPASSIVE_MothersHunger, + new EntityModel(DataType.IPASSIVE_MothersHunger, EntityType.Passive) + .AddPart(new EntityInfoModel + { Name = "Mother's Hunger", Description = "Mala's Blood Wells grant you pyre for nearby non-quitl deaths." }) + }, + { + DataType.IPASSIVE_StalkersSense, + new EntityModel(DataType.IPASSIVE_StalkersSense, EntityType.Passive) + .AddPart(new EntityInfoModel + { Name = "Stalker's Sense", Description = "Xol's units sense nearby enemies in the fog of war.", Notes = "Not implemented."}) + }, + // Keys { DataType.COMMAND_Attack, @@ -354,6 +363,7 @@ public class DATA .AddPart(new EntityVitalityModel { Health = 500, Armor = ArmorType.Heavy }) .AddPart(new EntityWeaponModel { Damage = 30, AttacksPerSecond = 1.401f, Targets = TargetType.All, Range = 700 }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_BastionPassives}) }, { DataType.STARTING_Tower, @@ -373,12 +383,13 @@ public class DATA MediumDamage = 25, HeavyDamage = 30 }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Respite }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_HallowedGround}) }, // Starting Structures // Aru { DataType.STARTING_TownHall_Aru, - new EntityModel(DataType.STARTING_TownHall_Aru, EntityType.Building) + new EntityModel(DataType.STARTING_TownHall_Aru, EntityType.Building, true) .AddPart(new EntityInfoModel { Name = "Grove Heart (Starting)", Descriptive = DescriptiveType.Town_Hall_Starting }) .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) @@ -389,12 +400,13 @@ public class DATA HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 6, TotalAmount = 6000 }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_Rootway}) }, // Starting Structures // Q'Rath { DataType.STARTING_TownHall_QRath, - new EntityModel(DataType.STARTING_TownHall_QRath, EntityType.Building) + new EntityModel(DataType.STARTING_TownHall_QRath, EntityType.Building, true) .AddPart(new EntityInfoModel { Name = "Acropolis (Starting)", Descriptive = DescriptiveType.Town_Hall_Starting }) .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) @@ -405,6 +417,7 @@ public class DATA HarvestedPerInterval = 6, RequiresWorker = false, Resource = ResourceType.Alloy, Slots = 1, TotalAmount = 6000 }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_HallowedGround}) }, // Vanguard @@ -432,12 +445,14 @@ public class DATA { Damage = 26, Range = 300, AttacksPerSecond = 0.699f, Targets = TargetType.Ground }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_LegionHall, + Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityMovementModel { Speed = 380, Movement = MovementType.Ground }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_FaithCastBlades }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_IconOfKhastEem }) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_IconOfKhastEem}) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_FaithCastBlades }) }, { DataType.VANGUARD_Sceptre_Orzum, @@ -464,12 +479,13 @@ public class DATA }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Angelarium, + Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVanguardAddedModel { ReplaceId = DataType.UNIT_Warden, ImmortalId = DataType.IMMORTAL_Orzum }) .AddPart(new EntityMovementModel { Speed = 340, Movement = MovementType.Air }) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_RegentsWrath }) }, { DataType.VANGUARD_Saoshin_Ajari, @@ -492,12 +508,12 @@ public class DATA .AddPart(new EntityMovementModel { Speed = 380, Movement = MovementType.Ground }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_LegionHall, + Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Reliquary, + Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Production_Building }) .AddPart(new EntityWeaponModel @@ -525,19 +541,19 @@ public class DATA { Energy = 100, Health = 100, DefenseLayer = 100, Armor = ArmorType.Medium, IsEtheric = true }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_SoulFoundry, + Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_HouseOfFadingSaints, + Id = DataType.BUILDING_HouseOfFadingSaints, Requirement = RequirementType.Research_Building }) .AddPart(new EntityMovementModel { Speed = 335, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 25, Range = 1100, AttacksPerSecond = 0.4f, Targets = TargetType.Ground }) .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_OrdainedPassage }) - .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_StabilizeHallowedGround }) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_HallowingRites }) }, // Vanguards // Aru @@ -548,7 +564,7 @@ public class DATA .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AmberWomb, + Id = DataType.BUILDING_AmberWomb, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HoldSpace = true, HotkeyGroup = "Z" }) @@ -563,6 +579,9 @@ public class DATA .AddPart(new EntityWeaponModel { Damage = 16, Range = 700, AttacksPerSecond = 0.606f, Targets = TargetType.Ground }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_ProjectileGestation }) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_FallenHarvest }) + + }, { DataType.VANGUARD_DreadSister_Mala, @@ -571,12 +590,12 @@ public class DATA .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_RedVale, + Id = DataType.BUILDING_RedVale, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HoldSpace = true, HotkeyGroup = "Z" }) @@ -605,7 +624,7 @@ public class DATA .AddPart(new EntityTierModel { Tier = 1 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HotkeyGroup = "Z" }) @@ -619,6 +638,8 @@ public class DATA .AddPart(new EntityMovementModel { Speed = 350, Movement = MovementType.Ground }) .AddPart(new EntityWeaponModel { Damage = 11, Range = 400, AttacksPerSecond = 1.02f, Targets = TargetType.All }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_Stalk}) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_Ambush}) }, { DataType.VANGUARD_WhiteWoodReaper_Xol, @@ -627,12 +648,12 @@ public class DATA .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_RedVale, + Id = DataType.BUILDING_RedVale, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" }) @@ -686,7 +707,7 @@ public class DATA .AddPart(new EntityVitalityModel { Health = 140, DefenseLayer = 70, Armor = ArmorType.Light }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_LegionHall, + Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityMovementModel { Speed = 380, Movement = MovementType.Ground }) @@ -695,6 +716,10 @@ public class DATA Damage = 20, HeavyDamage = 18, Range = 180, AttacksPerSecond = 0.699f, SecondsBetweenAttacks = 1.43f, Targets = TargetType.Ground }) + .AddPart(new EntityIdUpgradeModel() { Id = DataType.UPGRADE_GreavesOfAhqar}) + .AddPart(new EntityIdUpgradeModel() { Id = DataType.UPGRADE_FortifiedIcons}) + .AddPart(new EntityIdPassiveModel() { Id = DataType.PASSIVE_GreavesOfAhqar}) + .AddPart(new EntityIdPassiveModel() { Id = DataType.PASSIVE_FortifiedIcons}) }, { DataType.UNIT_Magi, @@ -714,12 +739,12 @@ public class DATA { ImmortalId = DataType.IMMORTAL_Ajari, ReplacedById = DataType.VANGUARD_Saoshin_Ajari }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_LegionHall, + Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Reliquary, + Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel @@ -750,12 +775,12 @@ public class DATA .AddPart(new EntitySupplyModel { Takes = 4 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_LegionHall, + Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Reliquary, + Id = DataType.BUILDING_Reliquary, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Health = 180, DefenseLayer = 90, Armor = ArmorType.Heavy }) @@ -784,7 +809,7 @@ public class DATA .AddPart(new EntityVitalityModel { Health = 140, DefenseLayer = 100, Armor = ArmorType.Medium }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_SoulFoundry, + Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityMovementModel { Speed = 435, Movement = MovementType.Ground }) @@ -794,6 +819,8 @@ public class DATA Targets = TargetType.Ground }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_SiroccoScript }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_RadiantWard}) + }, { DataType.UNIT_Absolver, @@ -812,7 +839,7 @@ public class DATA .AddPart(new EntityVitalityModel { Health = 175, DefenseLayer = 150, Armor = ArmorType.Medium }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_SoulFoundry, + Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityMovementModel { Speed = 315, Movement = MovementType.Ground }) @@ -848,7 +875,7 @@ public class DATA .AddPart(new EntityMovementModel { Speed = 340, Movement = MovementType.Ground }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_SoulFoundry, + Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityWeaponModel @@ -859,6 +886,8 @@ public class DATA .AddPart(new EntityWeaponModel { Damage = 8, Range = 500, AttacksPerSecond = 1.429f, Targets = TargetType.Ground }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_RelicOfTheWrathfulGaze }) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Maledictions }) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_RelicOfTheWrathfulGaze }) }, { DataType.UNIT_Hallower, @@ -878,12 +907,12 @@ public class DATA .AddPart(new EntitySupplyModel { Takes = 5 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_SoulFoundry, + Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_HouseOfFadingSaints, + Id = DataType.BUILDING_HouseOfFadingSaints, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Health = 100, DefenseLayer = 130, Armor = ArmorType.Heavy }) @@ -911,7 +940,7 @@ public class DATA .AddPart(new EntityMovementModel { Speed = 525, Movement = MovementType.Air }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Angelarium, + Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityWeaponModel @@ -936,12 +965,12 @@ public class DATA .AddPart(new EntityVitalityModel { Health = 350, DefenseLayer = 200, Armor = ArmorType.Heavy }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Angelarium, + Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_BearerOfTheCrown, + Id = DataType.BUILDING_BearerOfTheCrown, Requirement = RequirementType.Research_Building }) .AddPart(new EntityMovementModel { Speed = 262, Movement = MovementType.Air }) @@ -953,6 +982,7 @@ public class DATA .AddPart(new EntityIdAbilityModel { Id = DataType.ABILITY_BladesOfTheGodhead }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_BladesOfTheGodhead }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_GodstoneBulwark }) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_ThroneMovingShot }) }, { DataType.UNIT_Warden, @@ -972,13 +1002,16 @@ public class DATA .AddPart(new EntitySupplyModel { Takes = 6 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Angelarium, + Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Health = 300, DefenseLayer = 80, Armor = ArmorType.Heavy }) .AddPart(new EntityMovementModel { Speed = 420, Movement = MovementType.Air }) .AddPart(new EntityWeaponModel { Damage = 32, Range = 600, AttacksPerSecond = 0.556f, Targets = TargetType.Ground }) + .AddPart(new EntityIdUpgradeModel(){Id = DataType.UPGRADE_WingsOfTheKenLatir}) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_WingsOfTheKenLatir}) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_ExecutionRites}) }, { DataType.UNIT_SharU, @@ -991,12 +1024,12 @@ public class DATA .AddPart(new EntitySupplyModel { Takes = 6 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Angelarium, + Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_EyeOfAros, + Id = DataType.BUILDING_EyeOfAros, Requirement = RequirementType.Research_Building }) .AddPart(new EntityVitalityModel @@ -1019,7 +1052,7 @@ public class DATA .AddPart(new EntityProductionModel { Alloy = 50, BuildTime = 20 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_GroveHeart, + Id = DataType.BUILDING_GroveHeart, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Health = 50, DefenseLayer = 10, Armor = ArmorType.Light }) @@ -1042,7 +1075,7 @@ public class DATA { ImmortalId = DataType.IMMORTAL_Xol, ReplacedById = DataType.VANGUARD_BoneStalker_Xol }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) @@ -1063,12 +1096,12 @@ public class DATA .AddPart(new EntityTierModel { Tier = 1.5f }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "Z" }) @@ -1094,12 +1127,12 @@ public class DATA { ImmortalId = DataType.IMMORTAL_Xol, ReplacedById = DataType.VANGUARD_WhiteWoodReaper_Xol }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_RedVale, + Id = DataType.BUILDING_RedVale, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "Z" }) @@ -1125,12 +1158,12 @@ public class DATA { ImmortalId = DataType.IMMORTAL_Mala, ReplacedById = DataType.VANGUARD_DreadSister_Mala }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_RedVale, + Id = DataType.BUILDING_RedVale, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HoldSpace = true, HotkeyGroup = "Z" }) @@ -1162,12 +1195,12 @@ public class DATA { ImmortalId = DataType.IMMORTAL_Mala, ReplacedById = DataType.VANGUARD_Incubator_Mala }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "Q", HoldSpace = true, HotkeyGroup = "Z" }) @@ -1197,7 +1230,7 @@ public class DATA .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AmberWomb, + Id = DataType.BUILDING_AmberWomb, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "Z" }) @@ -1213,6 +1246,7 @@ public class DATA }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_DenInstinct }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_PursuitLigaments }) + .AddPart(new EntityIdPassiveModel() { Id = DataType.PASSIVE_ExternalDigestion }) }, { DataType.UNIT_Resinant, @@ -1221,12 +1255,12 @@ public class DATA .AddPart(new EntityTierModel { Tier = 2.5f }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AmberWomb, + Id = DataType.BUILDING_AmberWomb, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "Z" }) @@ -1256,12 +1290,12 @@ public class DATA .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_BoneCanopy, + Id = DataType.BUILDING_BoneCanopy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "E", HoldSpace = true, HotkeyGroup = "Z" }) @@ -1285,7 +1319,7 @@ public class DATA .AddPart(new EntityTierModel { Tier = 3 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_BoneCanopy, + Id = DataType.BUILDING_BoneCanopy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "R", HoldSpace = true, HotkeyGroup = "Z" }) @@ -1298,7 +1332,7 @@ public class DATA { Damage = 11, HeavyDamage = 9, Range = 350, AttacksPerSecond = 0.8f, Targets = TargetType.All }) - .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_ThrumAttackSpeed }) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_BloodFrenzy }) }, { DataType.UNIT_WraithBow, @@ -1307,7 +1341,7 @@ public class DATA .AddPart(new EntityTierModel { Tier = 2 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AmberWomb, + Id = DataType.BUILDING_AmberWomb, Requirement = RequirementType.Production_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "W", HoldSpace = true, HotkeyGroup = "Z" }) @@ -1329,12 +1363,12 @@ public class DATA .AddPart(new EntityTierModel { Tier = 3.5f }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_BoneCanopy, + Id = DataType.BUILDING_BoneCanopy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityHotkeyModel { Hotkey = "A", HoldSpace = true, HotkeyGroup = "Z" }) @@ -1349,7 +1383,11 @@ public class DATA Targets = TargetType.Ground }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_BehemothCapacity }) - .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_SpawnQuitl }) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_QuitlStorage }) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_QuitlStorage2 }) + + + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_FireQuitl }) }, { DataType.SUMMON_Quitl, @@ -1358,9 +1396,44 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityVitalityModel { Health = 65, Armor = ArmorType.Light }) .AddPart(new EntityMovementModel { Speed = 168, Movement = MovementType.Ground }) + .AddPart(new EntityIdPassiveModel() {Id = DataType.PASSIVE_Temporary}) }, // Upgrades // Q'Rath + { + DataType.UPGRADE_GreavesOfAhqar, + new EntityModel(DataType.UPGRADE_GreavesOfAhqar, EntityType.Tech) + .AddPart(new EntityInfoModel + { + Name = "Greaves Of Ahqar", Descriptive = DescriptiveType.Upgrade, + Description = "Increases the Sipari speed by 75." + }) + .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB" }) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + .AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 100 }) + .AddPart(new EntityRequirementModel + { + Requirement = RequirementType.Production_Building + }) + }, + + { + DataType.UPGRADE_FortifiedIcons, + new EntityModel(DataType.UPGRADE_FortifiedIcons, EntityType.Tech) + .AddPart(new EntityInfoModel + { + Name = "Fortified Icons", Descriptive = DescriptiveType.Upgrade, + Description = "Sipari gain +20 shields, and Hallowed Ground grants an additional +20 shields." + }) + .AddPart(new EntityHotkeyModel { Hotkey = "Q", HotkeyGroup = "TAB", HoldSpace = true}) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + .AddPart(new EntityProductionModel { Alloy = 100, Ether = 100, BuildTime = 43 }) + .AddPart(new EntityRequirementModel + { + Requirement = RequirementType.Production_Building + }) + }, + { DataType.UPGRADE_FaithCastBlades, new EntityModel(DataType.UPGRADE_FaithCastBlades, EntityType.Tech) @@ -1390,7 +1463,7 @@ public class DATA .AddPart(new EntityProductionModel { Alloy = 75, Ether = 75, BuildTime = 29 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_HouseOfFadingSaints, + Id = DataType.BUILDING_HouseOfFadingSaints, Requirement = RequirementType.Production_Building }) }, @@ -1432,7 +1505,7 @@ public class DATA .AddPart(new EntityProductionModel { Alloy = 75, Ether = 100, BuildTime = 60 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_HouseOfFadingSaints, + Id = DataType.BUILDING_HouseOfFadingSaints, Requirement = RequirementType.Production_Building }) }, @@ -1465,7 +1538,7 @@ public class DATA .AddPart(new EntityProductionModel { Alloy = 100, Ether = 75, BuildTime = 45 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_BearerOfTheCrown, Requirement = RequirementType.Production_Building + Id = DataType.BUILDING_BearerOfTheCrown, Requirement = RequirementType.Production_Building }) }, { @@ -1481,7 +1554,7 @@ public class DATA .AddPart(new EntityProductionModel { Alloy = 150, Ether = 100, BuildTime = 30 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_BearerOfTheCrown, Requirement = RequirementType.Production_Building + Id = DataType.BUILDING_BearerOfTheCrown, Requirement = RequirementType.Production_Building }) }, // Upgrades @@ -1495,12 +1568,12 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Research_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Production_Building }) .AddPart(new EntityProductionModel { Alloy = 100, Ether = 80, BuildTime = 60 }) @@ -1514,12 +1587,12 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AmberWomb, + Id = DataType.BUILDING_AmberWomb, Requirement = RequirementType.Research_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityProductionModel { Alloy = 100, Ether = 150, BuildTime = 80 }) @@ -1532,7 +1605,7 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityProductionModel { Alloy = 100, Ether = 120, BuildTime = 45 }) @@ -1545,7 +1618,7 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityProductionModel { Alloy = 75, Ether = 100, BuildTime = 45 }) @@ -1558,12 +1631,12 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AmberWomb, + Id = DataType.BUILDING_AmberWomb, Requirement = RequirementType.Research_Building }) .AddPart(new EntityProductionModel { Alloy = 50, Ether = 100, BuildTime = 43 }) @@ -1576,7 +1649,7 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityProductionModel { Alloy = 100, Ether = 75, BuildTime = 60 }) @@ -1589,7 +1662,7 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_DeepNest, + Id = DataType.BUILDING_DeepNest, Requirement = RequirementType.Research_Building }) .AddPart(new EntityProductionModel { Alloy = 150, Ether = 150, BuildTime = 46 }) @@ -1607,11 +1680,12 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Neurocyte, + Id = DataType.BUILDING_Neurocyte, Requirement = RequirementType.Research_Building }) .AddPart(new EntityProductionModel { Alloy = 50, Ether = 75, BuildTime = 29 }) .AddPart(new EntityIdUpgradeModel { Id = DataType.UPGRADE_WraithBowRange }) + .AddPart(new EntityIdPassiveModel() { Id = DataType.PASSIVE_WraithBowRange }) }, { DataType.UPGRADE_BloodPlague, @@ -1625,7 +1699,7 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_RedVale, + Id = DataType.BUILDING_RedVale, Requirement = RequirementType.Research_Building }) .AddPart(new EntityProductionModel { Alloy = 75, Ether = 120, BuildTime = 80 }) @@ -1640,7 +1714,7 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_RedVale, + Id = DataType.BUILDING_RedVale, Requirement = RequirementType.Research_Building }) .AddPart(new EntityProductionModel { Alloy = 75, Ether = 120, BuildTime = 80 }) @@ -1650,40 +1724,389 @@ public class DATA // Passives // Neutral + { + DataType.PASSIVE_BastionPassives, + new EntityModel(DataType.PASSIVE_Respite, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "(Scouts and Pyre)", Descriptive = DescriptiveType.Passive, + Description = + @"Bastion generates one scout in 2 minutes, up to a max of 2 scouts. And generates pyre over time." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Any }) + }, { DataType.PASSIVE_Respite, new EntityModel(DataType.PASSIVE_Respite, EntityType.Passive) .AddPart(new EntityInfoModel { - Name = "Respite", Descriptive = DescriptiveType.Ability, + Name = "Respite", Descriptive = DescriptiveType.Passive, Description = @"Nearby units will slowly heal after not attacking for several seconds." }) .AddPart(new EntityFactionModel { Faction = FactionType.Any }) }, + + { + DataType.PASSIVE_HarvestAlloy, + new EntityModel(DataType.PASSIVE_HarvestAlloy, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Harvest Alloy", Descriptive = DescriptiveType.Passive, + Description = "This unit can harvest alloy." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Any }) + }, // Passives // Q'Rath Passives { - DataType.PASSIVE_MendingCommand, - new EntityModel(DataType.PASSIVE_MendingCommand, EntityType.Passive) + DataType.PASSIVE_HallowedWarrior, + new EntityModel(DataType.PASSIVE_HallowedWarrior, EntityType.Passive) .AddPart(new EntityInfoModel { - Name = "Mending Command", Descriptive = DescriptiveType.Ability, - Description = @"Autocast ability that heals 48 life and 24 shields over 2 seconds." + Name = "Hallowed Warrior", Descriptive = DescriptiveType.Ability, + Description = @"Gains bonus shields when in Hallowed Ground", + Notes = "+20 Shields on Hallowed Ground." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_GreavesOfAhqar, + new EntityModel(DataType.PASSIVE_GreavesOfAhqar, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Greaves Of Ahqar", Descriptive = DescriptiveType.Ability, + Description = @"+75 Sipari Speed" + }) + .AddPart(new EntityRequirementModel(){ Id = DataType.UPGRADE_GreavesOfAhqar, Requirement = RequirementType.Research_Upgrade}) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_RelicOfTheWrathfulGaze, + new EntityModel(DataType.PASSIVE_RelicOfTheWrathfulGaze, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Relic Of The Wrathful Gaze", Descriptive = DescriptiveType.Ability, + Description = @"Increases Castigator range against air." + }) + .AddPart(new EntityRequirementModel(){ Id = DataType.UPGRADE_RelicOfTheWrathfulGaze, Requirement = RequirementType.Research_Upgrade}) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + { + DataType.PASSIVE_WingsOfTheKenLatir, + new EntityModel(DataType.PASSIVE_WingsOfTheKenLatir, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Wings of the Ken'Latir", Descriptive = DescriptiveType.Passive, + Description = @"Increases the Warden's speed and shields significantly." + }) + .AddPart(new EntityRequirementModel(){ Id = DataType.UPGRADE_WingsOfTheKenLatir, Requirement = RequirementType.Research_Upgrade}) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_ExecutionRites, + new EntityModel(DataType.PASSIVE_ExecutionRites, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Execution Rites", Descriptive = DescriptiveType.Passive, + Description = @"Warden's attacks charge up to a hit that deals greatly increased damage." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_IconOfKhastEem, + new EntityModel(DataType.PASSIVE_IconOfKhastEem, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Icon Of Khast'Eem", Descriptive = DescriptiveType.Passive, + Description = @"Grants the Zentari shields and flat armor reduction." + }) + .AddPart(new EntityRequirementModel(){ Id = DataType.UPGRADE_IconOfKhastEem, Requirement = RequirementType.Research_Upgrade}) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_FaithCastBlades, + new EntityModel(DataType.PASSIVE_FaithCastBlades, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Faith Cast Blades", Descriptive = DescriptiveType.Passive, + Description = @"Increases the range of the Zentari's ranged weapon." + }) + .AddPart(new EntityRequirementModel(){ Id = DataType.UPGRADE_FaithCastBlades, Requirement = RequirementType.Research_Upgrade}) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_ThroneMovingShot, + new EntityModel(DataType.PASSIVE_ThroneMovingShot, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Throne Moving Shot", Descriptive = DescriptiveType.Passive, + Description = @"Thrones can attack while moving." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_HallowingRites, + new EntityModel(DataType.PASSIVE_HallowingRites, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Hallowing Rites", Descriptive = DescriptiveType.Passive, + Description = @"Ark Mother's creates Hallowed Ground on stabilize." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_HallowedRuin, + new EntityModel(DataType.PASSIVE_HallowedRuin, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Hallowed Ruin", Descriptive = DescriptiveType.Passive, + Description = @"Hallowers have splash on attacks that leave an area of Hallowed Ground." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_RegentsWrath, + new EntityModel(DataType.PASSIVE_RegentsWrath, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Regent's Wrath", Descriptive = DescriptiveType.Passive, + Description = @"Scepters gain energy when stabilized. They lose energy when moving. Energy is spent to have splash on attack." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_PsalmOfFire, + new EntityModel(DataType.PASSIVE_PsalmOfFire, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Psalm Of Fire", Descriptive = DescriptiveType.Applies_Debuff, + Description = @"Fire Singers deal damage over time against attacked targets." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_Zeal, + new EntityModel(DataType.PASSIVE_Zeal, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Zeal", Descriptive = DescriptiveType.Passive, + Description = @"30% increased attack speed to allied near Pillar of the Heavens" }) - .AddPart(new EntityProductionModel { Pyre = 10, Cooldown = 3 }) .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) }, + { - DataType.PASSIVE_StabilizeHallowedGround, - new EntityModel(DataType.PASSIVE_StabilizeHallowedGround, EntityType.Passive) + DataType.PASSIVE_HallowedGround, + new EntityModel(DataType.PASSIVE_HallowedGround, EntityType.Passive) .AddPart(new EntityInfoModel { - Name = "Stabilize Hallowed Ground", Descriptive = DescriptiveType.Ability, - Description = @"Generates Hallowed Ground on Stabilized" - }) //TODO Add a glossary of terms like for Stabilized + Name = "Hallowed Ground", Descriptive = DescriptiveType.Passive, + Description = @"This building generates Hallowed Ground." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_CastFromLife, + new EntityModel(DataType.PASSIVE_HallowedGround, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Cast From Life", Descriptive = DescriptiveType.Passive, + Description = @"Can spend life instead of energy, when needed.", + Notes = "Can't spend more life then unit has. Unit cannot kill itself with Cast From Life." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + }, + + { + DataType.PASSIVE_WraithBowRange, + new EntityModel(DataType.PASSIVE_WraithBowRange, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Wraith Bow Range", Descriptive = DescriptiveType.Ability, + Description = @"Increases Wraith Bow range against air." + }) + .AddPart(new EntityRequirementModel(){ Id = DataType.UPGRADE_WraithBowRange, Requirement = RequirementType.Research_Upgrade}) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + }, + + { + DataType.PASSIVE_Rootway, + new EntityModel(DataType.PASSIVE_Rootway, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Rootway", Descriptive = DescriptiveType.Passive, + Description = @"Building generates Rootway.", + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + }, + + { + DataType.PASSIVE_QuitlStorage, + new EntityModel(DataType.PASSIVE_QuitlStorage, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Quitl Storage", Descriptive = DescriptiveType.Passive, + Description = @"Unit stores quitl for attacks.", + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + }, + + { + DataType.PASSIVE_QuitlStorage2, + new EntityModel(DataType.PASSIVE_QuitlStorage2, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Quitl Storage", Descriptive = DescriptiveType.Passive, + Description = @"Unit stores more quitl for attacks.", + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + .AddPart(new EntityRequirementModel { Id = DataType.UPGRADE_BehemothCapacity, Requirement = RequirementType.Research_Upgrade} ) + }, + + { + DataType.PASSIVE_ExternalDigestion, + new EntityModel(DataType.PASSIVE_ExternalDigestion, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "External Digestion", Descriptive = DescriptiveType.Passive, + Description = @"Ichor attacks splash in a cone." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + }, + + { + DataType.PASSIVE_Temporary, + new EntityModel(DataType.PASSIVE_Temporary, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Temporary", Descriptive = DescriptiveType.Passive, + Description = @"This unit has a limited duration before it dies.", + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + }, + + { + DataType.PASSIVE_RadiantWard, + new EntityModel(DataType.PASSIVE_RadiantWard, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Radiant Ward", Descriptive = DescriptiveType.Applies_Debuff, + Description = @"This unit is revealed?", + Notes = "Not implemented." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_Stalk, + new EntityModel(DataType.PASSIVE_Stalk, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Stalk", Descriptive = DescriptiveType.Passive, + Description = @"This unit has hidden when stabilized.", + Notes = "Not implemented." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + }, + + { + DataType.PASSIVE_Ambush, + new EntityModel(DataType.PASSIVE_Stalk, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Stalk", Descriptive = DescriptiveType.Passive, + Description = @"This unit deals double damage when attacking from hidden.", + Notes = "Not implemented." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + }, + + { + DataType.PASSIVE_FallenHarvest, + new EntityModel(DataType.PASSIVE_FallenHarvest, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Fallen Harvest", Descriptive = DescriptiveType.Passive, + Description = @"Incubator gets energy when nearby non-quitl units die." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + }, + + { + DataType.PASSIVE_RestoreLifeblood, + new EntityModel(DataType.PASSIVE_RestoreLifeblood, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Restore Lifeblood", Descriptive = DescriptiveType.Passive, + Description = @"Restores health to a single target." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + }, + + + { + DataType.PASSIVE_Transfusion, + new EntityModel(DataType.PASSIVE_Transfusion, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Transfusion", Descriptive = DescriptiveType.Passive, + Description = @"Restores energy to a single target." + }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + }, + + + + + { + DataType.PASSIVE_FortifiedIcons, + new EntityModel(DataType.PASSIVE_FortifiedIcons, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Fortified Icons", Descriptive = DescriptiveType.Ability, + Description = @"Increases Sipari shields and increases the bonus while in Hallowed Ground", + Notes = "+20 Shields, and +20 Shields on Hallowed Ground." + }) + .AddPart(new EntityRequirementModel(){ Id = DataType.UPGRADE_FortifiedIcons, Requirement = RequirementType.Research_Upgrade}) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_Maledictions, + new EntityModel(DataType.PASSIVE_Maledictions, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Maledictions", Descriptive = DescriptiveType.Applies_Debuff, + Description = @"Stun ground unit? With Maledictions spell.", + Notes = "Not implemented" + }) + .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) + }, + + { + DataType.PASSIVE_MendingCommand, + new EntityModel(DataType.PASSIVE_MendingCommand, EntityType.Passive) + .AddPart(new EntityInfoModel + { + Name = "Mending Command", Descriptive = DescriptiveType.Ability, + Description = @"Autocast ability that heals 48 life and 24 shields over 2 seconds." + }) + .AddPart(new EntityProductionModel { Pyre = 10, Cooldown = 3 }) .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) }, { @@ -1711,13 +2134,12 @@ public class DATA }, // Passives // Aru Passives - //PASSIVE_ThrumAttackSpeed { - DataType.PASSIVE_ThrumAttackSpeed, - new EntityModel(DataType.PASSIVE_ThrumAttackSpeed, EntityType.Passive) + DataType.PASSIVE_BloodFrenzy, + new EntityModel(DataType.PASSIVE_BloodFrenzy, EntityType.Passive) .AddPart(new EntityInfoModel { - Name = "Thrum Attack Speed Boost", Descriptive = DescriptiveType.Ability, + Name = "Blood Frenzy", Descriptive = DescriptiveType.Ability, Description = @"Thrums gain more attack speed for a short duration when a near by allied Thrum kills an enemy unit" }) @@ -1733,6 +2155,7 @@ public class DATA Description = @"Xacal builds up charges for double damage overtime. These charges can be spent on attacking." }) + .AddPart(new EntityRequirementModel(){ Id = DataType.UPGRADE_XacalDamage, Requirement = RequirementType.Research_Upgrade}) .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) }, { @@ -1811,8 +2234,8 @@ public class DATA }, { - DataType.PASSIVE_SpawnQuitl, - new EntityModel(DataType.PASSIVE_SpawnQuitl, EntityType.Passive) + DataType.PASSIVE_FireQuitl, + new EntityModel(DataType.PASSIVE_FireQuitl, EntityType.Passive) .AddPart(new EntityInfoModel { Name = "Spawn Quitl", Descriptive = DescriptiveType.Ability, @@ -1867,7 +2290,7 @@ public class DATA new EntityModel(DataType.ABILITY_OrdainedPassage, EntityType.Ability) .AddPart(new EntityInfoModel { - Name = "Intervention", Descriptive = DescriptiveType.Ability, + Name = "Ordained Passage", Descriptive = DescriptiveType.Ability, Description = @"Creates a large area that grants significant damage reduction to friendly ground troops within. Reduces the Ark Mother's shields to 0 when used." }) @@ -2129,6 +2552,7 @@ public class DATA MediumDamage = 25, HeavyDamage = 30 }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Respite }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_HallowedGround}) }, { DataType.ISPELL_PillarOfHeaven, @@ -2143,6 +2567,8 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) .AddPart(new EntityVanguardAddedModel { ImmortalId = DataType.IMMORTAL_Orzum }) .AddPart(new EntityProductionModel { Pyre = 100, Cooldown = 15 }) + .AddPart(new EntityVitalityModel { Health = 300, DefenseLayer = 200, Armor = ArmorType.Heavy, IsStructure = true}) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Zeal }) }, { DataType.ISPELL_EmpireUnbroken, @@ -2217,6 +2643,7 @@ public class DATA .AddPart(new EntityWeaponModel { Damage = 15, Range = 800, AttacksPerSecond = 1.887f, Targets = TargetType.All }) .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_Respite }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_Rootway}) }, { DataType.ISPELL_ConstructBloodWell, @@ -2230,6 +2657,10 @@ public class DATA .AddPart(new EntityHotkeyModel { Hotkey = "F", HotkeyGroup = "1" }) .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityProductionModel { Pyre = 50, Cooldown = 21 }) + .AddPart(new EntityVitalityModel {Health = 400, Energy = 100, DefenseLayer = 50, Armor = ArmorType.Heavy, IsStructure = true}) + .AddPart(new EntityIdPassiveModel {Id = DataType.PASSIVE_RestoreLifeblood}) + .AddPart(new EntityIdPassiveModel {Id = DataType.PASSIVE_Transfusion}) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_Rootway}) }, { DataType.ISPELL_RedTithe, @@ -2258,9 +2689,18 @@ public class DATA .AddPart(new EntityProductionModel { Pyre = 130, Cooldown = 30 }) }, { - DataType.ISPELL_GreatHunt, - new EntityModel(DataType.ISPELL_GreatHunt, EntityType.Pyre_Spell) - .AddPart(new EntityInfoModel { Name = "Great Hunt" }) + DataType.ISPELL_MarkPrey, + new EntityModel(DataType.ISPELL_MarkPrey, EntityType.Pyre_Spell) + .AddPart(new EntityInfoModel { Name = "Mark Prey", Description = "Knowing where things are lets you hunt them?", Notes = "Not implemented."}) + .AddPart(new EntityHotkeyModel { Hotkey = "E", HotkeyGroup = "1" }) + .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) + .AddPart(new EntityVanguardAddedModel { ImmortalId = DataType.IMMORTAL_Xol }) + .AddPart(new EntityProductionModel { }) + }, + { + DataType.ISPELL_TheGreatHunt, + new EntityModel(DataType.ISPELL_TheGreatHunt, EntityType.Pyre_Spell) + .AddPart(new EntityInfoModel { Name = "The Great Hunt", Description = "Reduces enemy vision to 300."}) .AddPart(new EntityHotkeyModel { Hotkey = "R", HotkeyGroup = "1" }) .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityVanguardAddedModel { ImmortalId = DataType.IMMORTAL_Xol }) @@ -2288,6 +2728,7 @@ public class DATA HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 2, TotalAmount = 3600 }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_HallowedGround}) }, { DataType.BUPGRADE_MiningLevel2_QRath, @@ -2322,7 +2763,7 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.QRath }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUPGRADE_MiningLevel2_QRath, + Id = DataType.BUPGRADE_MiningLevel2_QRath, Requirement = RequirementType.Morph }) .AddPart(new EntityProductionModel { Alloy = 125, BuildTime = 20, RequiresWorker = false }) @@ -2365,6 +2806,7 @@ public class DATA .AddPart(new EntityProductionModel { Alloy = 250, BuildTime = 38, RequiresWorker = true }) .AddPart(new EntityVitalityModel { Health = 500, DefenseLayer = 500, Armor = ArmorType.Heavy, IsStructure = true }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_HallowedGround}) }, { DataType.DEFENSE_FireSinger, @@ -2379,11 +2821,12 @@ public class DATA .AddPart(new EntityProductionModel { Alloy = 150, BuildTime = 30, RequiresWorker = true }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_KeeperOfTheHardenedFlames, + Id = DataType.BUILDING_KeeperOfTheHardenedFlames, Requirement = RequirementType.Research_Building }) .AddPart(new EntityVitalityModel { Health = 300, DefenseLayer = 300, Armor = ArmorType.Heavy, IsStructure = true }) + .AddPart(new EntityIdPassiveModel { Id = DataType.PASSIVE_PsalmOfFire }) }, { DataType.BUILDING_KeeperOfTheHardenedFlames, @@ -2415,7 +2858,7 @@ public class DATA { Alloy = 150, Ether = 10, BuildTime = 45, RequiresWorker = true }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_LegionHall, + Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel @@ -2436,11 +2879,12 @@ public class DATA .AddPart(new EntitySupplyModel { Grants = 16 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_LegionHall, + Id = DataType.BUILDING_LegionHall, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Health = 450, DefenseLayer = 450, Armor = ArmorType.Heavy, IsStructure = true }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_HallowedGround}) }, { DataType.BUILDING_HouseOfFadingSaints, @@ -2456,7 +2900,7 @@ public class DATA { Alloy = 175, Ether = 200, BuildTime = 52, RequiresWorker = true }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_SoulFoundry, + Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel @@ -2477,11 +2921,12 @@ public class DATA .AddPart(new EntitySupplyModel { Grants = 16 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_SoulFoundry, + Id = DataType.BUILDING_SoulFoundry, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel { Health = 600, DefenseLayer = 600, Armor = ArmorType.Heavy, IsStructure = true }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_HallowedGround}) }, { DataType.BUILDING_EyeOfAros, @@ -2497,7 +2942,7 @@ public class DATA { Alloy = 200, Ether = 200, BuildTime = 36, RequiresWorker = true }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Angelarium, + Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel @@ -2517,7 +2962,7 @@ public class DATA { Alloy = 250, Ether = 200, BuildTime = 52, RequiresWorker = true }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_Angelarium, + Id = DataType.BUILDING_Angelarium, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel @@ -2546,6 +2991,7 @@ public class DATA HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 2, TotalAmount = 3600 }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_Rootway}) }, { DataType.BUPGRADE_GodHeart, @@ -2557,16 +3003,17 @@ public class DATA { Health = 2150, DefenseLayer = 450, Armor = ArmorType.Heavy, IsStructure = true }) .AddPart(new EntityRequirementModel { - DataType = DataType.STARTING_TownHall_Aru, + Id = DataType.STARTING_TownHall_Aru, Requirement = RequirementType.Morph }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Research_Building }) .AddPart(new EntityProductionModel { Alloy = 100, Ether = 75, BuildTime = 36, RequiresWorker = false }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_Rootway}) }, { DataType.BUPGRADE_MiningLevel2_Aru, @@ -2580,7 +3027,7 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_GroveHeart, + Id = DataType.BUILDING_GroveHeart, Requirement = RequirementType.Morph }) .AddPart(new EntityProductionModel { Alloy = 75, BuildTime = 20, RequiresWorker = false }) @@ -2602,7 +3049,7 @@ public class DATA .AddPart(new EntityFactionModel { Faction = FactionType.Aru }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUPGRADE_MiningLevel2_Aru, + Id = DataType.BUPGRADE_MiningLevel2_Aru, Requirement = RequirementType.Morph }) .AddPart(new EntityProductionModel { Alloy = 125, BuildTime = 20, RequiresWorker = false }) @@ -2645,6 +3092,7 @@ public class DATA .AddPart(new EntityProductionModel { Alloy = 250, BuildTime = 36, RequiresWorker = true }) .AddPart(new EntityVitalityModel { Health = 900, DefenseLayer = 100, Armor = ArmorType.Heavy, IsStructure = true }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_Rootway}) }, { DataType.BUILDING_Neurocyte, @@ -2660,7 +3108,7 @@ public class DATA { Alloy = 100, Ether = 75, BuildTime = 30, RequiresWorker = true }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel @@ -2706,16 +3154,17 @@ public class DATA .AddPart(new EntitySupplyModel { Grants = 16 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Research_Building }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUPGRADE_GodHeart, + Id = DataType.BUPGRADE_GodHeart, Requirement = RequirementType.Research_Building }) .AddPart(new EntityVitalityModel { Health = 1000, DefenseLayer = 250, Armor = ArmorType.Heavy, IsStructure = true }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_Rootway}) }, { DataType.BUILDING_BoneCanopy, @@ -2732,11 +3181,12 @@ public class DATA .AddPart(new EntitySupplyModel { Grants = 16 }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUPGRADE_GodHeart, + Id = DataType.BUPGRADE_GodHeart, Requirement = RequirementType.Research_Building }) .AddPart(new EntityVitalityModel { Health = 1000, DefenseLayer = 300, Armor = ArmorType.Heavy, IsStructure = true }) + .AddPart(new EntityIdPassiveModel(){Id = DataType.PASSIVE_Rootway}) }, { DataType.BUILDING_RedVale, @@ -2752,7 +3202,7 @@ public class DATA { Alloy = 100, Ether = 100, BuildTime = 36, RequiresWorker = true }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_AltarOfTheWorthy, + Id = DataType.BUILDING_AltarOfTheWorthy, Requirement = RequirementType.Production_Building }) .AddPart(new EntityVitalityModel @@ -2772,7 +3222,7 @@ public class DATA { Alloy = 175, Ether = 150, BuildTime = 38, RequiresWorker = true }) .AddPart(new EntityRequirementModel { - DataType = DataType.BUILDING_BoneCanopy, + Id = DataType.BUILDING_BoneCanopy, Requirement = RequirementType.Research_Building }) .AddPart(new EntityVitalityModel diff --git a/Model/Entity/Data/Ids_Entity.cs b/Model/Entity/Data/Ids_Entity.cs index 1e9ef33..8239950 100644 --- a/Model/Entity/Data/Ids_Entity.cs +++ b/Model/Entity/Data/Ids_Entity.cs @@ -49,7 +49,17 @@ public static class DataType public static string ISPELL_ConstructBloodWell = "07aee142-02dd-4804-878a-2d5c6881e8c8"; public static string ISPELL_RedTithe = "57008163-5e3a-4b95-98f3-d00b54e18684"; public static string ISPELL_RainOfBlood = "792df385-c66a-4710-9f75-97731897a565"; - public static string ISPELL_GreatHunt = "efa14586-33f0-487f-b691-1ed3bcd5b0e6"; + + public static string IPASSIVE_HealingGround = "3ec17526-8dc5-4592-9c15-ef1d9b1ca2f6"; + public static string IPASSIVE_Expansionist = "b6cd4335-2165-44c3-b3dc-4500c0111870"; + + public static string IPASSIVE_MothersHunger = "382dc614-9228-4494-9a80-d1a72604a1ee"; + public static string IPASSIVE_StalkersSense = "a3d255aa-94f2-4aed-bb44-e9becb736fca"; + + + public static string ISPELL_MarkPrey = "8505419c-bb42-41fa-9c5b-fc0db280d7c0"; + public static string ISPELL_TheGreatHunt = "efa14586-33f0-487f-b691-1ed3bcd5b0e6"; + public static string TOWER_Citadel = "e4bb8fbd-9c42-449c-82a6-2f72504bd2b4"; public static string TOWER_GroveGuardian = "ea772cd5-534b-4bb0-9d4b-36498b8a6c8f"; public static string BUILDING_Acropolis = "ee1498cf-3c8c-4793-8869-5e097fe4d372"; @@ -81,6 +91,11 @@ public static class DataType public static string DEFENSE_Aerovore = "b68307b7-4759-43a3-8679-d844ac3aa73f"; + + + public static string UPGRADE_GreavesOfAhqar = "eac602b3-e3ae-4e36-aa14-28532e3485a7"; + public static string UPGRADE_FortifiedIcons = "b16bdb3a-6c61-44da-89c5-5be37c7e9d66"; + public static string UPGRADE_FaithCastBlades = "32087a66-900e-4f25-95f7-de56d5b424c7"; public static string UPGRADE_RelicOfTheWrathfulGaze = "e6fa5ded-53f5-4914-85bb-1fdff5f32b64"; public static string UPGRADE_WindStep = "c263fe42-ebde-4145-8b7f-42e5d5d5d10c"; @@ -100,10 +115,52 @@ public static class DataType public static string UPGRADE_BloodPlague = "9c207e21-f595-49d0-967d-f30ca8cc3745"; public static string UPGRADE_BirthingStorm = "0cb2f1a4-03b3-491b-9db3-d2d4590ede3a"; + public static string PASSIVE_WraithBowRange = "196dd8a6-2044-44e1-aac4-fbaa40552699"; + public static string PASSIVE_Respite = "607c39f4-a957-4a7a-8fc6-a239f9e570ec"; + public static string PASSIVE_BastionPassives = "ea42b9cb-2456-4ed2-b490-fcfde12c6153"; + public static string PASSIVE_HallowedWarrior = "fea43ced-33f3-4531-af7d-740c1789fec1"; + public static string PASSIVE_GreavesOfAhqar = "3c408d75-7bee-4089-84c0-74620ac708b6"; + public static string PASSIVE_FortifiedIcons = "35f3f02f-e22e-44be-b2ea-82972c383308"; + + public static string PASSIVE_Maledictions = "6cdc109c-157d-433a-b225-192e39c0b613"; + public static string PASSIVE_HarvestAlloy = "84bacf5a-b106-455c-8cff-66c3998404f8"; + public static string PASSIVE_RelicOfTheWrathfulGaze = "ccebc0c9-cfd5-465a-8a5d-2495bd745a83"; + + public static string PASSIVE_WingsOfTheKenLatir = "48909ff5-63db-4c99-b62f-d290e127e0bf"; + + public static string PASSIVE_ExecutionRites = "8d017a17-320f-4c2a-b139-d2d83bf7ecd0"; + + + public static string PASSIVE_IconOfKhastEem = "7a211da6-4713-40f5-a171-1e3b6e02bf09"; + public static string PASSIVE_FaithCastBlades = "da4f8c9c-1b22-4b3f-94fc-11bc12cde02d"; + + public static string PASSIVE_ThroneMovingShot = "699423ed-7410-4daf-8b07-9dc733a8bf55"; + + public static string PASSIVE_HallowingRites = "9c8ae47b-954e-4a17-8f35-f128c9114b61"; + public static string PASSIVE_RegentsWrath = "f111f004-6548-4430-9d13-ef44ab108ae7"; + public static string PASSIVE_PsalmOfFire = "d28f6b7c-d319-4fb8-bdd4-92ede40a0751"; + public static string PASSIVE_Zeal = "62c4942b-5578-422d-8d4e-d1789f4efa68"; + public static string PASSIVE_HallowedGround = "bdb28984-246f-4642-84ab-9e83c02b3e2e"; + public static string PASSIVE_CastFromLife = "3cc734de-f8e7-4e69-9fa5-bdf725c4941b"; + public static string PASSIVE_Rootway = "46768d4a-5047-4973-b5ca-995cda25ee8d"; + public static string PASSIVE_QuitlStorage = "a210f109-d3ac-44d4-9724-601c795a2394"; + public static string PASSIVE_QuitlStorage2 = "0b27b863-fce5-40e4-96c7-6df94bdd92b9"; + public static string PASSIVE_Temporary = "940c04f1-df0b-4cf7-9514-09dfd9009554"; + public static string PASSIVE_RadiantWard = "db1fc8bd-d86a-4eda-b83c-16e8d0ce4f81"; + public static string PASSIVE_Stalk = "9c107bfd-0050-4670-91b8-f9a8d771225d"; + public static string PASSIVE_Ambush = "9d0a9482-0303-4a15-bb88-972f6ae60a39"; + public static string PASSIVE_FallenHarvest = "d209e13f-d631-40d7-90e1-d9845b51b8d4"; + public static string PASSIVE_RestoreLifeblood = "fa213bc6-336c-4510-8a4b-db9ccfc54d62"; + public static string PASSIVE_Transfusion = "e67a3d6d-f2bb-4622-9e4d-ea2a26af2f39"; + + public static string PASSIVE_HallowedRuin = "402b555a-eb8a-4065-bd25-465d190b30c7"; + public static string PASSIVE_ExternalDigestion = "2563723b-4a75-4a17-a104-1f5ac3b79a06"; + + public static string PASSIVE_OssifyingSwarm = "b8897247-8393-416e-b246-409a6b3263c2"; public static string PASSIVE_QuenchingScythes = "dbf07db4-e7b6-4f81-9f8e-e5391850eead"; @@ -114,11 +171,10 @@ public static class DataType public static string PASSIVE_GodstoneBulwark = "482189ac-713d-4870-a960-d2930961c486"; public static string PASSIVE_Invervention = "3a70d237-1530-455a-b4f8-a626d708334c"; - public static string PASSIVE_ThrumAttackSpeed = "356b6c33-a857-489c-8218-68c53d03db90"; + public static string PASSIVE_BloodFrenzy = "356b6c33-a857-489c-8218-68c53d03db90"; public static string PASSIVE_MendingCommand = "25d94c3d-dba9-4f02-abf4-904269b539c6"; - public static string PASSIVE_StabilizeHallowedGround = "0bbbaf06-fd22-4f48-a888-cc1ab6af046e"; - public static string PASSIVE_SpawnQuitl = "80f6b382-da1c-49a1-8235-1ea37983ea54"; + public static string PASSIVE_FireQuitl = "80f6b382-da1c-49a1-8235-1ea37983ea54"; public static string PASSIVE_XacalDamage = "69928f20-5332-418f-ada3-694da3f7b199"; public static string ABILITY_BladesOfTheGodhead = "000154ac-faf5-483d-b0bd-e84335891a27"; diff --git a/Model/Entity/Parts/EntityRequirementModel.cs b/Model/Entity/Parts/EntityRequirementModel.cs index f4dbcd4..5c28dd0 100644 --- a/Model/Entity/Parts/EntityRequirementModel.cs +++ b/Model/Entity/Parts/EntityRequirementModel.cs @@ -5,6 +5,6 @@ namespace Model.Entity.Parts; public class EntityRequirementModel : IEntityPartInterface { public string Type { get; set; } = "EntityRequirementModel"; - public string DataType { get; set; } + public string Id { get; set; } public string Requirement { get; set; } = RequirementType.Production_Building; } \ No newline at end of file diff --git a/Model/Entity/Types/DescriptiveType.cs b/Model/Entity/Types/DescriptiveType.cs index bdecc14..ce05dda 100644 --- a/Model/Entity/Types/DescriptiveType.cs +++ b/Model/Entity/Types/DescriptiveType.cs @@ -26,4 +26,7 @@ public static class DescriptiveType public static string Summon = "Summon"; public static string Upgrade = "Upgrade"; public static string Ability = "Ability"; + + public static string Passive = "Passive"; + public static string Applies_Debuff = "Applies_Debuff"; } \ No newline at end of file diff --git a/Services/Immortal/BuildOrderService.cs b/Services/Immortal/BuildOrderService.cs index 46157a9..eb51f69 100644 --- a/Services/Immortal/BuildOrderService.cs +++ b/Services/Immortal/BuildOrderService.cs @@ -201,7 +201,7 @@ public class BuildOrderService : IBuildOrderService from requiredEntity in entitiesAtInterval.Value where requestedInterval > entitiesAtInterval.Key + (requiredEntity.Production() == null ? 0 : requiredEntity.Production().BuildTime) - where requiredEntity.DataType == requirement.DataType + where requiredEntity.DataType == requirement.Id select requiredEntity; var entitiesAlreadyMorphed = from entitiesAtInterval in buildOrder.Orders @@ -218,7 +218,7 @@ public class BuildOrderService : IBuildOrderService from requiredEntity in entitiesAtInterval.Value where requestedInterval > entitiesAtInterval.Key + (requiredEntity.Production() == null ? 0 : requiredEntity.Production().BuildTime) - where requiredEntity.DataType == requirement.DataType + where requiredEntity.DataType == requirement.Id select requiredEntity;