- @{
- var desc = GetDescription(doc);
- }
- @if (desc != null)
+ @if (GetField(doc, "description") is { Length: > 0 } desc)
{
}
@@ -67,37 +64,34 @@
- @if (!string.IsNullOrWhiteSpace(selectedDoc.Content))
- {
-
- @((MarkupString)FormatContent(selectedDoc.Content))
-
+ @{
+ var fm = selectedDoc.Frontmatter;
+ }
- @if (HasExtraFrontmatter(selectedDoc))
- {
-
}
@@ -122,8 +116,7 @@
.Where(d => (selectedCategory == null || d.Category == selectedCategory) &&
(string.IsNullOrWhiteSpace(searchQuery) ||
d.Title.Contains(searchQuery, StringComparison.OrdinalIgnoreCase) ||
- (GetDescription(d)?.Contains(searchQuery, StringComparison.OrdinalIgnoreCase) ?? false) ||
- d.Content.Contains(searchQuery, StringComparison.OrdinalIgnoreCase)));
+ (GetField(d, "description")?.Contains(searchQuery, StringComparison.OrdinalIgnoreCase) ?? false)));
private void SelectCategory(string? category)
{
@@ -136,102 +129,25 @@
selectedDoc = doc;
}
- private static string? GetDescription(DocData doc)
+ private static string? GetField(DocData doc, string key)
{
- return doc.Frontmatter.TryGetValue("description", out var desc) && !string.IsNullOrWhiteSpace(desc) ? desc : null;
+ return doc.Frontmatter.TryGetValue(key, out var val) && !string.IsNullOrWhiteSpace(val) ? val : null;
}
- private static bool HasExtraFrontmatter(DocData doc)
+ private static string GetLabel(string key) => key switch
{
- var count = doc.Frontmatter.Count;
- if (count == 0) return false;
- if (count == 1 && doc.Frontmatter.ContainsKey("category")) return false;
- if (count == 2 && doc.Frontmatter.ContainsKey("category") && doc.Frontmatter.ContainsKey("description")) return false;
- return doc.Frontmatter.Any(kvp => kvp.Key != "category" && kvp.Key != "description");
- }
-
- private string FormatContent(string content)
- {
- if (string.IsNullOrWhiteSpace(content)) return "";
-
- var lines = content.Replace("\r\n", "\n").Split('\n');
- var html = new System.Text.StringBuilder();
- var inList = false;
-
- foreach (var rawLine in lines)
- {
- var line = rawLine.TrimEnd();
-
- if (string.IsNullOrWhiteSpace(line))
- {
- if (inList) { html.AppendLine(""); inList = false; }
- continue;
- }
-
- if (line.StartsWith("- "))
- {
- var item = line[2..].Trim();
- if (item.Length > 0)
- {
- if (!inList) { html.AppendLine("
"); inList = true; }
- html.Append("- ");
- html.Append(EncodeInline(item));
- html.AppendLine("
");
- }
- continue;
- }
-
- if (inList) { html.AppendLine("
"); inList = false; }
-
- if (line.EndsWith(":") || line.Contains(":\n"))
- {
- var trimmed = line.TrimEnd(':');
- if (trimmed.Length > 0)
- {
- html.Append("
");
- html.Append(System.Web.HttpUtility.HtmlEncode(trimmed));
- html.AppendLine("
");
- }
- }
- else
- {
- html.Append("
");
- html.Append(EncodeInline(line));
- html.AppendLine("
");
- }
- }
-
- if (inList) html.AppendLine("");
-
- return html.ToString();
- }
-
- private string EncodeInline(string text)
- {
- var result = new System.Text.StringBuilder();
- var remaining = text;
-
- while (remaining.Length > 0)
- {
- var boldIdx = remaining.IndexOf("**", StringComparison.Ordinal);
- if (boldIdx >= 0)
- {
- var endBold = remaining.IndexOf("**", boldIdx + 2, StringComparison.Ordinal);
- if (endBold >= 0)
- {
- result.Append(System.Web.HttpUtility.HtmlEncode(remaining[..boldIdx]));
- result.Append("
");
- result.Append(System.Web.HttpUtility.HtmlEncode(remaining[(boldIdx + 2)..endBold]));
- result.Append("");
- remaining = remaining[(endBold + 2)..];
- continue;
- }
- }
-
- result.Append(System.Web.HttpUtility.HtmlEncode(remaining));
- break;
- }
-
- return result.ToString();
- }
+ "category" => "Category",
+ "description" => "Description",
+ "essencePrice" => "Essence Price",
+ "crytalPrice" => "Crystal Price",
+ "coreChargesPrice" => "Core Charges Price",
+ "pricePerPack" => "Price per Pack",
+ "codeCharges" => "Code Charges",
+ "coreCharges" => "Core Charges",
+ "currency" => "Currency",
+ "faction" => "Faction",
+ "exp" => "EXP Reward",
+ "see" => "See Also",
+ _ => string.Concat(key.Select((c, i) => i > 0 && char.IsUpper(c) ? " " + c : c.ToString())),
+ };
}
diff --git a/Chrono/Shared/Pages/Docs.razor.css b/Chrono/Shared/Pages/Docs.razor.css
index 6d774f6..2909a75 100644
--- a/Chrono/Shared/Pages/Docs.razor.css
+++ b/Chrono/Shared/Pages/Docs.razor.css
@@ -171,119 +171,45 @@
}
.doc-header h1 {
- margin: 0 0 0.75rem;
+ margin: 0;
font-size: 1.8rem;
font-weight: 700;
}
-.doc-description {
+.doc-fields {
+ display: flex;
+ flex-direction: column;
+ gap: 1rem;
+}
+
+.doc-field {
+ display: flex;
+ flex-direction: column;
+ gap: 0.25rem;
+}
+
+.doc-field-key {
+ font-size: 0.72rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ color: var(--text-muted);
+}
+
+.doc-field-val {
+ font-size: 0.95rem;
+ color: var(--text-primary);
+}
+
+.doc-field-desc {
font-size: 1.05rem;
line-height: 1.6;
color: var(--text-secondary);
margin: 0;
-}
-
-.doc-body {
- line-height: 1.7;
- font-size: 1rem;
- color: var(--text-primary);
- margin-bottom: 1.5rem;
-}
-
-.doc-body p {
- margin: 0 0 0.6rem;
-}
-
-.doc-body p:last-child {
- margin-bottom: 0;
-}
-
-.doc-label {
- font-weight: 600;
- color: var(--text-primary);
- margin-bottom: 0.4rem;
-}
-
-.doc-list-items {
- margin: 0 0 0.8rem;
- padding-left: 1.5rem;
- list-style: none;
-}
-
-.doc-list-items li {
- position: relative;
- padding: 0.2rem 0;
- color: var(--text-secondary);
- font-size: 0.95rem;
-}
-
-.doc-list-items li::before {
- content: "▸";
- position: absolute;
- left: -1.2rem;
- color: var(--accent);
- font-size: 0.75rem;
-}
-
-.doc-extra {
- margin-top: 2rem;
- padding-top: 1.5rem;
- border-top: 1px solid var(--border);
-}
-
-.doc-extra h3 {
- font-size: 0.9rem;
- font-weight: 600;
- margin: 0 0 0.75rem;
- color: var(--text-muted);
- text-transform: uppercase;
- letter-spacing: 0.05em;
-}
-
-.doc-frontmatter {
- display: grid;
- grid-template-columns: auto 1fr;
- gap: 0.4rem 1rem;
padding: 0.75rem 1rem;
background: var(--bg-elevated);
border-radius: var(--radius);
- border: 1px solid var(--border);
-}
-
-.fm-item {
- display: contents;
-}
-
-.fm-key {
- color: var(--text-muted);
- font-weight: 500;
- font-size: 0.85rem;
- white-space: nowrap;
-}
-
-.fm-value {
- color: var(--text-secondary);
- font-size: 0.85rem;
-}
-
-.doc-link-btn {
- background: none;
- border: none;
- padding: 0;
- font-family: inherit;
- font-size: inherit;
- font-weight: 600;
- color: var(--accent);
- cursor: pointer;
- text-decoration: underline;
- text-underline-offset: 2px;
- text-decoration-color: rgba(108, 99, 255, 0.3);
- transition: color var(--transition), text-decoration-color var(--transition);
-}
-
-.doc-link-btn:hover {
- color: #7b73ff;
- text-decoration-color: #7b73ff;
+ border-left: 3px solid var(--accent);
}
.empty-state {
diff --git a/Chrono/Tests/PlaywrightTests.cs b/Chrono/Tests/PlaywrightTests.cs
index 6fb31ab..9c8fdce 100644
--- a/Chrono/Tests/PlaywrightTests.cs
+++ b/Chrono/Tests/PlaywrightTests.cs
@@ -1,3 +1,4 @@
+using Microsoft.Playwright;
using Microsoft.Playwright.NUnit;
namespace Tests;
@@ -6,4 +7,36 @@ namespace Tests;
[TestFixture]
public class PlaywrightTests : PageTest
{
+ private const string BaseUrl = "http://localhost:5256";
+
+ [Test]
+ public async Task HomePage_ShouldLoad()
+ {
+ await Page.GotoAsync(BaseUrl);
+ await Expect(Page).ToHaveTitleAsync(new System.Text.RegularExpressions.Regex("Chrono CCG"));
+
+ // Check for some content that should be on the home page
+ var heading = Page.Locator("h1");
+ await Expect(heading).ToBeVisibleAsync();
+ await Expect(heading).ToContainTextAsync("Slop Game Reference - Chrono CCG");
+ }
+
+ [Test]
+ public async Task DocsPage_ShouldLoad()
+ {
+ await Page.GotoAsync($"{BaseUrl}/docs");
+ var heading = Page.Locator("h1");
+ await Expect(heading).ToBeVisibleAsync();
+ await Expect(heading).ToContainTextAsync("Documentation");
+ }
+
+ [Test]
+ public async Task AgentsPage_ShouldLoad()
+ {
+ await Page.GotoAsync($"{BaseUrl}/agents");
+ // Agents page uses Telerik Grid, let's wait for it
+ await Page.WaitForLoadStateAsync(LoadState.NetworkIdle);
+ var grid = Page.Locator(".agents-grid");
+ await Expect(grid).ToBeVisibleAsync();
+ }
}
\ No newline at end of file
diff --git a/chrono.docs/.obsidian/types.json b/chrono.docs/.obsidian/types.json
index 6d9a261..6b4aff4 100644
--- a/chrono.docs/.obsidian/types.json
+++ b/chrono.docs/.obsidian/types.json
@@ -15,6 +15,8 @@
"factions": "multitext",
"essencePrice": "number",
"codeCharges": "number",
- "exp": "number"
+ "exp": "number",
+ "expPer": "number",
+ "size": "number"
}
}
\ No newline at end of file
diff --git a/chrono.docs/.obsidian/workspace.json b/chrono.docs/.obsidian/workspace.json
index 1c2a99f..f877ef2 100644
--- a/chrono.docs/.obsidian/workspace.json
+++ b/chrono.docs/.obsidian/workspace.json
@@ -10,18 +10,46 @@
{
"id": "852a1aaf6b54ec43",
"type": "leaf",
+ "state": {
+ "type": "bases",
+ "state": {
+ "file": "_Store.base",
+ "viewName": "Table"
+ },
+ "icon": "lucide-table",
+ "title": "_Store"
+ }
+ },
+ {
+ "id": "711239c069fbdec8",
+ "type": "leaf",
"state": {
"type": "markdown",
"state": {
- "file": "Rule/Slow.md",
+ "file": "Rule/Energy Reserves.md",
"mode": "source",
"source": false
},
"icon": "lucide-file",
- "title": "Slow"
+ "title": "Energy Reserves"
+ }
+ },
+ {
+ "id": "a2a9bf0db5bd1fb6",
+ "type": "leaf",
+ "state": {
+ "type": "markdown",
+ "state": {
+ "file": "Pass/Beta Season 1 Track.md",
+ "mode": "source",
+ "source": false
+ },
+ "icon": "lucide-file",
+ "title": "Beta Season 1 Track"
}
}
- ]
+ ],
+ "currentTab": 2
}
],
"direction": "vertical"
@@ -53,7 +81,7 @@
"state": {
"type": "search",
"state": {
- "query": "The Ripper",
+ "query": "deckType: store",
"matchingCase": false,
"explainSearch": false,
"collapseAll": false,
@@ -183,45 +211,45 @@
"bases:Create new base": false
}
},
- "active": "852a1aaf6b54ec43",
+ "active": "a2a9bf0db5bd1fb6",
"lastOpenFiles": [
- "Rule/Immediate.md",
- "Rule/Fast.md",
+ "Pass",
+ "Pass/Onboarding Track.md",
+ "Pass/Beta Season 1 Track.md",
+ "Rule/Energy Reserves.md",
+ "Keyword/Overflow.md",
"_Store.base",
- "Untitled.md",
+ "Faction/Sungrace.md",
+ "Overload.md",
+ "Faction/Splintergleam.md",
+ "Faction/Phasetide.md",
+ "Faction/Lifeblood.md",
+ "Deck/Example.md",
+ "Deck/Big Energy.md",
"_Timeline.base",
- "Store/Core Set Packs x1.md",
- "Store/Core Set Packs x5.md",
- "Store/Core Set Packs x10.md",
+ "Deck/Aggro.md",
+ "Deck/Kyln Control.md",
+ "Deck/Rewind.md",
+ "Deck/Somnus Spam.md",
+ "Deck/Sunbleed.md",
+ "Deck/Untitled.md",
+ "Deck/Tempo Deplete.md",
+ "Deck/Rewind Me.md",
"Store/Core Set Packs x50.md",
- "Store/Card Backs.md",
- "Store/Text Emote.md",
- "Store/Common.md",
- "Store/Rare.md",
- "Store/Divergent.md",
+ "Store/Core Set Packs x1.md",
+ "_Spells.base",
+ "Rule/Slow.md",
+ "Speed/Slow.md",
+ "Speed/Immediate.md",
+ "Speed/Fast.md",
+ "Speed",
"_Quests.base",
"Quest",
- "Quest/Overflow 10 Times.md",
- "exp.md",
- "Quest/Deal 30 Damage with Overpower Agents.md",
- "Quest/Deal 50 Damage with Specific Faction.md",
- "Quest/Erase 7 Cards.md",
- "Quest/Deplete 10 Agents.md",
- "Quest/Deal 200 Damage.md",
- "Quest/Weekly Wins.md",
- "Quest/Daily Wins.md",
- "Currency/Draft Ticket.md",
- "Store/Lost.md",
- "Currency/Flux.md",
"Store",
"Currency",
- "Currency/Core Charges.md",
- "Currency/Crystals.md",
"_Factions.base",
"Decks/Rewind Me.canvas",
"_Debuff.base",
- "_Keyword.base",
- "Agent/[[Lifeblood]]/1",
"images/Wolf.png",
"images/Seedling.png",
"images/Pocket Scout.png",
diff --git a/chrono.docs/Deck/Aggro.md b/chrono.docs/Deck/Aggro.md
new file mode 100644
index 0000000..703a05c
--- /dev/null
+++ b/chrono.docs/Deck/Aggro.md
@@ -0,0 +1,55 @@
+---
+category: Deck
+cards:
+ - "[[Headbanging]]"
+ - "[[Headbanging]]"
+ - "[[Chronal Scan]]"
+ - "[[Chronal Scan]]"
+ - "[[Gilded Behemoth]]"
+ - "[[Gilded Behemoth]]"
+ - "[[Bathe in Flames]]"
+ - "[[Bathe in Flames]]"
+ - "[[Paradox Cacophony]]"
+ - "[[Paradox Cacophony]]"
+ - "[[Enhanced Retriever]]"
+ - "[[Enhanced Retriever]]"
+ - "[[Enhanced Retriever]]"
+ - "[[Fractal Phantasm]]"
+ - "[[Fractal Phantasm]]"
+ - "[[Fractal Phantasm]]"
+ - "[[Denizen of Flames]]"
+ - "[[Denizen of Flames]]"
+ - "[[Denizen of Flames]]"
+ - "[[Glittering Gladiator]]"
+ - "[[Glittering Gladiator]]"
+ - "[[Glittering Gladiator]]"
+ - "[[Desperate Primordial]]"
+ - "[[Desperate Primordial]]"
+ - "[[Desperate Primordial]]"
+ - "[[Blazing Shifter]]"
+ - "[[Blazing Shifter]]"
+ - "[[Blazing Shifter]]"
+ - "[[Devoted Bloodletter]]"
+ - "[[Devoted Bloodletter]]"
+ - "[[Devoted Bloodletter]]"
+ - "[[Channel Vigor]]"
+ - "[[Channel Vigor]]"
+ - "[[Channel Vigor]]"
+ - "[[Bloodbolt]]"
+ - "[[Bloodbolt]]"
+ - "[[Bloodbolt]]"
+ - "[[Go for the Heart]]"
+ - "[[Go for the Heart]]"
+ - "[[Go for the Heart]]"
+divers:
+ - "[[Efficient Scrapbot]]
+ - "[[Bloodline Tracker]]"
+isVisible: true
+keycards:
+description:
+factions:
+ - "[[Splintergleam]]"
+ - "[[Singularity]]"
+deckCode:
+deckType: store
+---
diff --git a/chrono.docs/Deck/Big Energy.md b/chrono.docs/Deck/Big Energy.md
index 32df55d..2b9ea7f 100644
--- a/chrono.docs/Deck/Big Energy.md
+++ b/chrono.docs/Deck/Big Energy.md
@@ -72,16 +72,13 @@ factions:
- "[[Sungrace]]"
- "[[Phasetide]]"
deckCode: AUHUE2LHEBCW4ZLSM54SAQ3POB4QWY3PNZZXI4TVMN2GKZBTAADACASPCICESCQCAUFDCAYGAMCAGAQDDYBQCAYBAOTQCAYQAMDQG
+deckType: custom
---
The idea of this deck is to go heavy on stat-efficient cards. Like 2 for a 2/3 [[Kinetic Absorber]], 5/6 [[Lumbering Starseeker]], and 8 for a 9/14 [[Lightsteel Colossus]].
You got [[Devourer Spawn]] to help push for lethal. It's going to have a bunch of keywords on it, given how popular timelines are in the meta.
-You need to Overflow your mana once in a while, or some of your [[Supernova]] removal will be useless. Be pass heavy.
-
-You're going to win on very low health if you win. Such is life.
-
-No strong card draw, so [[Army of the Sun]] is your hope if things go long. At the worst, it's a spell that summons a big unit right away if it goes off.
+You need to Overflow your mana once in a while, or some of your [[Supernova]] removal will be useless. Be pass heavy. And if you do end up overflowing many times [[Supernova]] can refill for mana bar, and it's worth adding some [[Snap Back]]s to the deck to use that spell multiple times.
Attack aggressively with [[Brilliant Martyr]]. You really want [[Star Siphon]] to ramp.
@@ -91,3 +88,6 @@ So ya, [[Curb the Anomalies]] can weaken the enemy board, by shutting off all th
And I suppose [[Bearer of the Broth]]. Since the deck has so much raw stats, you will probably find somewhere to heal. Like healing [[Kinetic Absorber]] so it can keep killing after it Immortalizes.
+Also in practice [[Bearer of the Broth]] has proven to be an insane and reliable draw engine for this deck.
+
+[[Gunnery Captain]] helps clear up the board. Tokens are just 1 to 2 cost units that grew to absurd sizes. And [[Army of the Sun]] helps in the mirror match, given how common this deck is due to the precon.
\ No newline at end of file
diff --git a/chrono.docs/Deck/Example.md b/chrono.docs/Deck/Example.md
new file mode 100644
index 0000000..52182ef
--- /dev/null
+++ b/chrono.docs/Deck/Example.md
@@ -0,0 +1,17 @@
+---
+category: Deck
+cards:
+ - "[[]]"
+ - "[[]]"
+divers:
+ - "[[]]
+ - "[[]]"
+isVisible: false
+keycards:
+description:
+factions:
+ - "[[]]"
+ - "[[]]"
+deckCode:
+deckType: store
+---
diff --git a/chrono.docs/Deck/Kyln Control.md b/chrono.docs/Deck/Kyln Control.md
new file mode 100644
index 0000000..836d925
--- /dev/null
+++ b/chrono.docs/Deck/Kyln Control.md
@@ -0,0 +1,55 @@
+---
+category: Deck
+cards:
+ - "[[Devourer Spawn]]"
+ - "[[Devourer Spawn]]"
+ - "[[Radiant Channeling]]"
+ - "[[Radiant Channeling]]"
+ - "[[Brilliant Martyr]]"
+ - "[[Brilliant Martyr]]"
+ - "[[Brilliant Martyr]]"
+ - "[[Hidden Locus]]"
+ - "[[Hidden Locus]]"
+ - "[[Hidden Locus]]"
+ - "[[Debris Collector]]"
+ - "[[Debris Collector]]"
+ - "[[Debris Collector]]"
+ - "[[Sunshock]]"
+ - "[[Sunshock]]"
+ - "[[Sunshock]]"
+ - "[[Throw into the Sun]]"
+ - "[[Throw into the Sun]]"
+ - "[[Throw into the Sun]]"
+ - "[[Enlightened Refugee]]"
+ - "[[Enlightened Refugee]]"
+ - "[[Enlightened Refugee]]"
+ - "[[Scuttling Spares]]"
+ - "[[Scuttling Spares]]"
+ - "[[Scuttling Spares]]"
+ - "[[Nascent Clone]]"
+ - "[[Nascent Clone]]"
+ - "[[Nascent Clone]]"
+ - "[[Recycler]]"
+ - "[[Recycler]]"
+ - "[[Recycler]]"
+ - "[[Rapid Iteration]]"
+ - "[[Rapid Iteration]]"
+ - "[[Rapid Iteration]]"
+ - "[[Frontline Fellowship]]"
+ - "[[Frontline Fellowship]]"
+ - "[[Frontline Fellowship]]"
+ - "[[Timestop]]"
+ - "[[Timestop]]"
+ - "[[Timestop]]"
+divers:
+ - "[[Planet Seeder]]
+ - "[[Traffic Conductor]]"
+isVisible: true
+keycards:
+description:
+factions:
+ - "[[Sungrace]]"
+ - "[[Singularity]]"
+deckCode:
+deckType: store
+---
diff --git a/chrono.docs/Deck/Rewind.md b/chrono.docs/Deck/Rewind.md
new file mode 100644
index 0000000..f4493da
--- /dev/null
+++ b/chrono.docs/Deck/Rewind.md
@@ -0,0 +1,55 @@
+---
+category: Deck
+cards:
+ - "[[Holder of the Instruments]]"
+ - "[[Holder of the Instruments]]"
+ - "[[Invigorating Balm]]"
+ - "[[Invigorating Balm]]"
+ - "[[Fervent Mycologist]]"
+ - "[[Fervent Mycologist]]"
+ - "[[Fervent Mycologist]]"
+ - "[[Pterosaur Rider]]"
+ - "[[Pterosaur Rider]]"
+ - "[[Pterosaur Rider]]"
+ - "[[Scent the Prey]]"
+ - "[[Scent the Prey]]"
+ - "[[Scent the Prey]]"
+ - "[[Curious Acolyte]]"
+ - "[[Curious Acolyte]]"
+ - "[[Curious Acolyte]]"
+ - "[[Temple Analyst]]"
+ - "[[Temple Analyst]]"
+ - "[[Temple Analyst]]"
+ - "[[Holy Cleaner]]"
+ - "[[Holy Cleaner]]"
+ - "[[Holy Cleaner]]"
+ - "[[Karmic Debtor]]"
+ - "[[Karmic Debtor]]"
+ - "[[Karmic Debtor]]"
+ - "[[Divergence Assassin]]"
+ - "[[Divergence Assassin]]"
+ - "[[Divergence Assassin]]"
+ - "[[Chronicle of the One]]"
+ - "[[Chronicle of the One]]"
+ - "[[Chronicle of the One]]"
+ - "[[Prayer of Rescue]]"
+ - "[[Prayer of Rescue]]"
+ - "[[Prayer of Rescue]]"
+ - "[[Backhand]]"
+ - "[[Backhand]]"
+ - "[[Backhand]]"
+ - "[[Rescind Authorization]]"
+ - "[[Rescind Authorization]]"
+ - "[[Rescind Authorization]]"
+divers:
+ - "[[Zealot of the Hunt]]"
+ - "[[Nonlethal Special Forces]]"
+isVisible: true
+keycards:
+description:
+factions:
+ - "[[Phasetide]]"
+ - "[[Lifeblood]]"
+deckCode:
+deckType: store
+---
diff --git a/chrono.docs/Deck/Somnus Spam.md b/chrono.docs/Deck/Somnus Spam.md
new file mode 100644
index 0000000..d7795aa
--- /dev/null
+++ b/chrono.docs/Deck/Somnus Spam.md
@@ -0,0 +1,55 @@
+---
+category: Deck
+cards:
+ - "[[Return to Stillness]]
+ - "[[Pressure Spike]]""
+ - "[[Pressure Spike]]""
+ - "[[Bury the Evidence]]"
+ - "[[Bury the Evidence]]"
+ - "[[Hush Now]]"
+ - "[[Hush Now]]"
+ - "[[Quiet Repose]]"
+ - "[[Quiet Repose]]"
+ - "[[Spirit's Lament]]"
+ - "[[Spirit's Lament]]"
+ - "[[Stern Arbiter]]"
+ - "[[Stern Arbiter]]"
+ - "[[Braindead Bouncer]]"
+ - "[[Braindead Bouncer]]"
+ - "[[Braindead Bouncer]]"
+ - "[[Somber Astronomer]]"
+ - "[[Somber Astronomer]]"
+ - "[[Somber Astronomer]]"
+ - "[[Nameless Spirit]]"
+ - "[[Nameless Spirit]]"
+ - "[[Nameless Spirit]]"
+ - "[[Destiny Ripper]]"
+ - "[[Destiny Ripper]]"
+ - "[[Destiny Ripper]]"
+ - "[[Rotting Rocker]]"
+ - "[[Rotting Rocker]]"
+ - "[[Rotting Rocker]]"
+ - "[[Sensory Deprivation Pod]]"
+ - "[[Sensory Deprivation Pod]]"
+ - "[[Sensory Deprivation Pod]]"
+ - "[[Mind Over Matter]]"
+ - "[[Mind Over Matter]]"
+ - "[[Mind Over Matter]]"
+ - "[[Backhand]]"
+ - "[[Backhand]]"
+ - "[[Backhand]]"
+ - "[[Snap Back]]"
+ - "[[Snap Back]]"
+ - "[[Snap Back]]"
+divers:
+ - "[[Librarian's Assistant]]"
+ - "[[Bareknuckle Inquisitor]]"
+isVisible: true
+keycards:
+description:
+factions:
+ - "[[Silence]]"
+ - "[[Phasetide]]"
+deckCode:
+deckType: store
+---
diff --git a/chrono.docs/Deck/Sunbleed.md b/chrono.docs/Deck/Sunbleed.md
new file mode 100644
index 0000000..dded4fe
--- /dev/null
+++ b/chrono.docs/Deck/Sunbleed.md
@@ -0,0 +1,55 @@
+---
+category: Deck
+cards:
+ - "[[Chaos Control]]"
+ - "[[Chaos Control]]"
+ - "[[Chaos Control]]"
+ - "[[Persistent Squire]]"
+ - "[[Persistent Squire]]"
+ - "[[Persistent Squire]]"
+ - "[[Bright-Eyed Supplicant]]"
+ - "[[Bright-Eyed Supplicant]]"
+ - "[[Bright-Eyed Supplicant]]"
+ - "[[Red Reaper]]"
+ - "[[Red Reaper]]"
+ - "[[Red Reaper]]"
+ - "[[Hungry Engine]]"
+ - "[[Hungry Engine]]"
+ - "[[Hungry Engine]]"
+ - "[[Channel Vigor]]"
+ - "[[Channel Vigor]]"
+ - "[[Channel Vigor]]"
+ - "[[Kintsu-Kai]]"
+ - "[[Kintsu-Kai]]"
+ - "[[Kintsu-Kai]]"
+ - "[[Paradox Cacophony]]"
+ - "[[Paradox Cacophony]]"
+ - "[[Paradox Cacophony]]"
+ - "[[Ironblood Elixir]]"
+ - "[[Ironblood Elixir]]"
+ - "[[Ironblood Elixir]]"
+ - "[[Rippling Resplendence]]"
+ - "[[Rippling Resplendence]]"
+ - "[[Rippling Resplendence]]"
+ - "[[Soothing Glow]]"
+ - "[[Soothing Glow]]"
+ - "[[BREAK AND SHATTER!]]"
+ - "[[BREAK AND SHATTER!]]"
+ - "[[Kinetic Absorber]]"
+ - "[[Kinetic Absorber]]"
+ - "[[Kinetic Absorber]]"
+ - "[[Debris Collector]]"
+ - "[[Debris Collector]]"
+ - "[[Debris Collector]]"
+divers:
+ - "[[Containment Breach]]"
+ - "[[Devoted Bloodletter]]"
+isVisible: true
+keycards:
+description:
+factions:
+ - "[[Sungrace]]"
+ - "[[Splintergleam]]"
+deckCode:
+deckType: store
+---
diff --git a/chrono.docs/Deck/Tempo Deplete.md b/chrono.docs/Deck/Tempo Deplete.md
new file mode 100644
index 0000000..fc8c3ed
--- /dev/null
+++ b/chrono.docs/Deck/Tempo Deplete.md
@@ -0,0 +1,55 @@
+---
+category: Deck
+cards:
+ - "[[Cascading Serenity]]"
+ - "[[Mulch]]"
+ - "[[Mulch]]"
+ - "[[Unstoppable Growth]]"
+ - "[[Unstoppable Growth]]"
+ - "[[Somber Astronomer]]"
+ - "[[Somber Astronomer]]"
+ - "[[Destiny Ripper]]"
+ - "[[Destiny Ripper]]"
+ - "[[Forest Recluse]]"
+ - "[[Forest Recluse]]"
+ - "[[The Forgotten Tale]]"
+ - "[[The Forgotten Tale]]"
+ - "[[Gnosis]]"
+ - "[[Gnosis]]"
+ - "[[Muffle]]"
+ - "[[Muffle]]"
+ - "[[Hush Now]]"
+ - "[[Hush Now]]"
+ - "[[Sleepy Druid]]"
+ - "[[Sleepy Druid]]"
+ - "[[Sleepy Druid]]"
+ - "[[Zealot of the Hunt]]"
+ - "[[Zealot of the Hunt]]"
+ - "[[Zealot of the Hunt]]"
+ - "[[Bloom]]"
+ - "[[Bloom]]"
+ - "[[Bloom]]"
+ - "[[Focused Adaptation]]"
+ - "[[Focused Adaptation]]"
+ - "[[Focused Adaptation]]"
+ - "[[Rotting Rocker]]"
+ - "[[Rotting Rocker]]"
+ - "[[Rotting Rocker]]"
+ - "[[Telepathic Scavenger]]"
+ - "[[Telepathic Scavenger]]"
+ - "[[Telepathic Scavenger]]"
+ - "[[Not so Fast]]"
+ - "[[Not so Fast]]"
+ - "[[Not so Fast]]"
+divers:
+ - "[[Egg Tender]]"
+ - "[[Redactionist]]"
+isVisible: true
+keycards:
+description:
+factions:
+ - "[[Lifeblood]]"
+ - "[[Silence]]"
+deckCode:
+deckType: store
+---
diff --git a/chrono.docs/Faction/Splintergleam.md b/chrono.docs/Faction/Splintergleam.md
index b0bfb55..b46fd64 100644
--- a/chrono.docs/Faction/Splintergleam.md
+++ b/chrono.docs/Faction/Splintergleam.md
@@ -1,7 +1,11 @@
---
category: Faction
---
-Concepts:
-- Self Damage
-- Bleed
--
\ No newline at end of file
+
+# Self Damage
+
+Can hurt it's own units for power. Has [[Bleed]] to make reoccurring damage on units very easy.
+
+# Core Damage
+
+Can hurt both cores easily. Has [[Breakdown]] to take advantage of having an injured core for more damage.
\ No newline at end of file
diff --git a/chrono.docs/Faction/Sungrace.md b/chrono.docs/Faction/Sungrace.md
index f40d7c0..bdc798f 100644
--- a/chrono.docs/Faction/Sungrace.md
+++ b/chrono.docs/Faction/Sungrace.md
@@ -1,6 +1,10 @@
---
category: Faction
---
+# Energy Reserves
+
+Care about always having banked energy. Spells can refund themselves when using [[Energy Reserves]], or get stronger is you [[Overflow]] your energy reserve.
+
Concepts:
- Ramp
- Using and Replenishing Reserved Energy
diff --git a/chrono.docs/Keyword/Overflow.md b/chrono.docs/Keyword/Overflow.md
new file mode 100644
index 0000000..ee2f415
--- /dev/null
+++ b/chrono.docs/Keyword/Overflow.md
@@ -0,0 +1,4 @@
+---
+category: Keyword
+description: Adding more energy then your reserves increase this passive stack by 1.
+---
diff --git a/chrono.docs/Pass/Beta Season 1 Track.md b/chrono.docs/Pass/Beta Season 1 Track.md
new file mode 100644
index 0000000..8740f02
--- /dev/null
+++ b/chrono.docs/Pass/Beta Season 1 Track.md
@@ -0,0 +1,5 @@
+---
+category: Pass
+expPer: 500
+size: 30
+---
diff --git a/chrono.docs/Pass/Onboarding Track.md b/chrono.docs/Pass/Onboarding Track.md
new file mode 100644
index 0000000..b73d8b6
--- /dev/null
+++ b/chrono.docs/Pass/Onboarding Track.md
@@ -0,0 +1,22 @@
+---
+expPer: 30
+size: 10
+category: Pass
+---
+
+| Tier | Reward |
+| ---- | -------------------------------- |
+| 1 | Sprouts Record |
+| 2 | 120 Core Charges |
+| 3 | Burn Precon |
+| 4 | 120 Core Charges, 25 Flux |
+| 5 | Profile Pictures |
+| 6 | Emotes |
+| 7 | 120 Core Charges |
+| 8 | Profile Pictures |
+| 9 | 60 Core Charges, 50 Flux |
+| 10 | 240 Core Charges, 1 Draft Ticket |
+
+| Core Charges | Flux |
+| ------------ | ---- |
+| 660 | 75 |
diff --git a/chrono.docs/Rule/Energy Reserves.md b/chrono.docs/Rule/Energy Reserves.md
new file mode 100644
index 0000000..7d61327
--- /dev/null
+++ b/chrono.docs/Rule/Energy Reserves.md
@@ -0,0 +1,4 @@
+---
+category: Rule
+description: Up to three unused mana can be banked per turn for spell usage only.
+---