Fixing broken image links in Card Gallery and adding Immortal filter
This commit is contained in:
+161
-174
File diff suppressed because it is too large
Load Diff
@@ -7,96 +7,5 @@ public static class DeckDatabase
|
|||||||
{
|
{
|
||||||
public static readonly System.Collections.Generic.List<DeckData> Decks =
|
public static readonly System.Collections.Generic.List<DeckData> Decks =
|
||||||
[
|
[
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "Big Energy",
|
|
||||||
Cards = [
|
|
||||||
"Brilliant Martyr",
|
|
||||||
"Brilliant Martyr",
|
|
||||||
"Brilliant Martyr",
|
|
||||||
"Kinetic Absorber",
|
|
||||||
"Kinetic Absorber",
|
|
||||||
"Kinetic Absorber",
|
|
||||||
"Hidden Locus",
|
|
||||||
"Hidden Locus",
|
|
||||||
"Hidden Locus",
|
|
||||||
"Suncursed Conduit",
|
|
||||||
"Suncursed Conduit",
|
|
||||||
"Suncursed Conduit",
|
|
||||||
"Paradox Capacitor",
|
|
||||||
"Paradox Capacitor",
|
|
||||||
"Lumbering Starseeker",
|
|
||||||
"Lumbering Starseeker",
|
|
||||||
"Novathermal Mining",
|
|
||||||
"Novathermal Mining",
|
|
||||||
"Novathermal Mining",
|
|
||||||
"Radiant Channeling",
|
|
||||||
"Radiant Channeling",
|
|
||||||
"Radiant Channeling",
|
|
||||||
"Supernova",
|
|
||||||
"Supernova",
|
|
||||||
"Supernova",
|
|
||||||
"Gunnery Captain",
|
|
||||||
"Lightsteel Colossus",
|
|
||||||
"Lightsteel Colossus",
|
|
||||||
"Devourer Spawn",
|
|
||||||
"Devourer Spawn",
|
|
||||||
"Army of the Sun",
|
|
||||||
"Curb the Anomalies",
|
|
||||||
"Curb the Anomalies",
|
|
||||||
"Curb the Anomalies",
|
|
||||||
"Bearer of the Broth",
|
|
||||||
"Bearer of the Broth",
|
|
||||||
"Bearer of the Broth",
|
|
||||||
"Blessed Soup",
|
|
||||||
"Blessed Soup",
|
|
||||||
"Blessed Soup",
|
|
||||||
],
|
|
||||||
Keycards = [
|
|
||||||
"Kinetic Absorber",
|
|
||||||
"Lumbering Starseeker",
|
|
||||||
"Lightsteel Colossus",
|
|
||||||
"Curb the Anomalies",
|
|
||||||
],
|
|
||||||
Divers = [
|
|
||||||
"Peaceful Synthesizer",
|
|
||||||
"Nonlethal Special Forces",
|
|
||||||
],
|
|
||||||
Description = "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.\nYou 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.\nYou need to Overflow your mana once in a while, or some of your Supernova removal will be useless. Be pass heavy.\nYou're going to win on very low health if you win. Such is life.\nNo 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.\nAttack aggressively with Brilliant Martyr. You really want Star Siphon to ramp.\nAs divers, Peaceful Synthesizer is a 1 drop that will quickly turn into a 3/3. Can't get more stat efficient than that. Nonlethal Special Forces is to enable Phasetide for AOE Mute cards given we don't care about stat buffs. Also as it stands, it always seems to punch a above it's weight on the board given the Disarm effect.\nSo ya, Curb the Anomalies can weaken the enemy board, by shutting off all there better stats, activates, and synergies. Hopefully destroy the entire enemy board in combat.\nAnd 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.",
|
|
||||||
Factions = [
|
|
||||||
"Sungrace",
|
|
||||||
"Phasetide",
|
|
||||||
],
|
|
||||||
IsVisible = true,
|
|
||||||
DeckCode = "AUHUE2LHEBCW4ZLSM54SAQ3POB4QWY3PNZZXI4TVMN2GKZBTAADACASPCICESCQCAUFDCAYGAMCAGAQDDYBQCAYBAOTQCAYQAMDQG",
|
|
||||||
},
|
|
||||||
new()
|
|
||||||
{
|
|
||||||
Name = "Rewind Me",
|
|
||||||
Cards = [
|
|
||||||
"Curious Acolyte",
|
|
||||||
"Chronicle of the One",
|
|
||||||
"Prayer of Rescue",
|
|
||||||
"Backhand",
|
|
||||||
"Snap Back",
|
|
||||||
"Sunbringer Artillerist",
|
|
||||||
"Sunshock",
|
|
||||||
"Temple Analyst",
|
|
||||||
"Holy Cleaner",
|
|
||||||
"Balance Blade",
|
|
||||||
"Rescind Authorization",
|
|
||||||
"Out of Line",
|
|
||||||
"Divergence Assassin",
|
|
||||||
"Chronal Quarantine",
|
|
||||||
"Holder of the Instruments",
|
|
||||||
],
|
|
||||||
Keycards = [
|
|
||||||
],
|
|
||||||
Divers = [
|
|
||||||
],
|
|
||||||
Factions = [
|
|
||||||
],
|
|
||||||
IsVisible = false,
|
|
||||||
}
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,12 +13,18 @@
|
|||||||
<button class="tab @(categoryFilter == "" ? "active" : "")" @onclick='@(() => SetCategory(""))'>
|
<button class="tab @(categoryFilter == "" ? "active" : "")" @onclick='@(() => SetCategory(""))'>
|
||||||
<i class="bi bi-grid-3x3-gap-fill"></i> All
|
<i class="bi bi-grid-3x3-gap-fill"></i> All
|
||||||
</button>
|
</button>
|
||||||
<button class="tab agent @(categoryFilter == "Immortalized" ? "active" : "")" @onclick='@(() => SetCategory("IsImmortalized"))'>
|
|
||||||
<i class="bi bi-person-fill"></i> Agents
|
|
||||||
</button>
|
|
||||||
<button class="tab agent @(categoryFilter == "Agent" ? "active" : "")" @onclick='@(() => SetCategory("Agent"))'>
|
<button class="tab agent @(categoryFilter == "Agent" ? "active" : "")" @onclick='@(() => SetCategory("Agent"))'>
|
||||||
<i class="bi bi-person-fill"></i> Agents
|
<i class="bi bi-person-fill"></i> Agents
|
||||||
</button>
|
</button>
|
||||||
|
<button class="tab agent @(categoryFilter == "Immortalized" ? "active" : "")" @onclick='@(() => SetCategory("Immortalized"))'>
|
||||||
|
<i class="bi bi-person-fill"></i> Immortalized
|
||||||
|
</button>
|
||||||
|
<!-- //Todo make agent being linked to immortal for side by side sorting
|
||||||
|
<button class="tab agent @(agentLink ? "active" : "")" @onclick='@(() => ToggleAgentLink())'>
|
||||||
|
<i class="bi bi-person-fill"></i> Link
|
||||||
|
</button>
|
||||||
|
-->
|
||||||
<button class="tab spell @(categoryFilter == "Spell" ? "active" : "")" @onclick='@(() => SetCategory("Spell"))'>
|
<button class="tab spell @(categoryFilter == "Spell" ? "active" : "")" @onclick='@(() => SetCategory("Spell"))'>
|
||||||
<i class="bi bi-wand"></i> Spells
|
<i class="bi bi-wand"></i> Spells
|
||||||
</button>
|
</button>
|
||||||
@@ -50,8 +56,8 @@
|
|||||||
</select>
|
</select>
|
||||||
<div class="sort-group d-flex gap-1">
|
<div class="sort-group d-flex gap-1">
|
||||||
<select @bind="sortBy" class="form-select filter-select sort-select">
|
<select @bind="sortBy" class="form-select filter-select sort-select">
|
||||||
<option value="Name">Sort by Name</option>
|
|
||||||
<option value="Cost">Sort by Cost</option>
|
<option value="Cost">Sort by Cost</option>
|
||||||
|
<option value="Name">Sort by Name</option>
|
||||||
<option value="Attack">Sort by Attack</option>
|
<option value="Attack">Sort by Attack</option>
|
||||||
<option value="Health">Sort by Health</option>
|
<option value="Health">Sort by Health</option>
|
||||||
<option value="Efficiency">Sort by Efficiency</option>
|
<option value="Efficiency">Sort by Efficiency</option>
|
||||||
@@ -108,7 +114,7 @@
|
|||||||
{
|
{
|
||||||
<div class="card-grid @(showDetailedView ? "detailed-view" : "")">
|
<div class="card-grid @(showDetailedView ? "detailed-view" : "")">
|
||||||
@{ var idx = 0; }
|
@{ var idx = 0; }
|
||||||
@foreach (var card in filteredCards.Where(a=>a.Category is "Agent" or "Spell"))
|
@foreach (var card in filteredCards.Where(a=>a.Category is "Agent" or "Spell" or "Immortalized"))
|
||||||
{
|
{
|
||||||
<div class="card-cell @(selectedCard == card ? "selected" : "")"
|
<div class="card-cell @(selectedCard == card ? "selected" : "")"
|
||||||
style="--i: @idx"
|
style="--i: @idx"
|
||||||
@@ -117,20 +123,16 @@
|
|||||||
<div class="card-shimmer"></div>
|
<div class="card-shimmer"></div>
|
||||||
<img src="@card.ImagePath" alt="@card.Name" loading="lazy"
|
<img src="@card.ImagePath" alt="@card.Name" loading="lazy"
|
||||||
onerror="this.src='data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%22200%22 height=%22280%22><rect fill=%22%23222244%22 width=%22200%22 height=%22280%22/><text fill=%22%23686888%22 font-size=%2214%22 x=%22100%22 y=%22140%22 text-anchor=%22middle%22 dominant-baseline=%22middle%22>No Image</text></svg>'"/>
|
onerror="this.src='data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%22200%22 height=%22280%22><rect fill=%22%23222244%22 width=%22200%22 height=%22280%22/><text fill=%22%23686888%22 font-size=%2214%22 x=%22100%22 y=%22140%22 text-anchor=%22middle%22 dominant-baseline=%22middle%22>No Image</text></svg>'"/>
|
||||||
@if (card.Cost.HasValue)
|
|
||||||
{
|
|
||||||
<div class="card-cost-badge">@card.Cost</div>
|
|
||||||
}
|
|
||||||
@if (card.IsImmortalized)
|
@if (card.IsImmortalized)
|
||||||
{
|
{
|
||||||
<div class="card-immortalize-badge" title="Immortalizes"><i class="bi bi-star-fill"></i>
|
<div class="card-immortalize-badge" title="Immortalizes"><i class="bi bi-star-fill"></i>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="card-label">
|
@if (showDetailedView)
|
||||||
<div class="card-name">@card.Name</div>
|
{
|
||||||
@if (showDetailedView)
|
<div class="card-label">
|
||||||
{
|
<div class="card-name">@card.Name</div>
|
||||||
<div class="card-stats">
|
<div class="card-stats">
|
||||||
@if (card.Attack.HasValue)
|
@if (card.Attack.HasValue)
|
||||||
{
|
{
|
||||||
@@ -142,9 +144,10 @@
|
|||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
<div class="card-description-preview">@card.Description</div>
|
<div class="card-description-preview">@card.Description</div>
|
||||||
}
|
<div class="card-category-badge @card.Category?.ToLowerInvariant()">@card.Category</div>
|
||||||
<div class="card-category-badge @card.Category?.ToLowerInvariant()">@card.Category</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
@@ -266,6 +269,9 @@
|
|||||||
private IEnumerable<CardData> filteredCards => ApplyFilters();
|
private IEnumerable<CardData> filteredCards => ApplyFilters();
|
||||||
private string search = "";
|
private string search = "";
|
||||||
private string categoryFilter = "";
|
private string categoryFilter = "";
|
||||||
|
private string immortalFilter = "";
|
||||||
|
private bool agentOnly = true;
|
||||||
|
private bool agentLink = true;
|
||||||
private string factionFilter = "";
|
private string factionFilter = "";
|
||||||
private string costFilter = "";
|
private string costFilter = "";
|
||||||
private string sortBy = "Name";
|
private string sortBy = "Name";
|
||||||
@@ -276,7 +282,7 @@
|
|||||||
private string currentNote = "";
|
private string currentNote = "";
|
||||||
private bool isSaving;
|
private bool isSaving;
|
||||||
|
|
||||||
private bool HasActiveFilters => categoryFilter != "" || factionFilter != "" || costFilter != "";
|
private bool HasActiveFilters => categoryFilter != "" || factionFilter != "" || costFilter != "" || immortalFilter != "";
|
||||||
|
|
||||||
protected override void OnInitialized()
|
protected override void OnInitialized()
|
||||||
{
|
{
|
||||||
@@ -307,6 +313,16 @@
|
|||||||
_ => sortDescending ? filtered.OrderByDescending(c => c.Name) : filtered.OrderBy(c => c.Name)
|
_ => sortDescending ? filtered.OrderByDescending(c => c.Name) : filtered.OrderBy(c => c.Name)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetImmortal(string imm)
|
||||||
|
{
|
||||||
|
immortalFilter = immortalFilter == imm ? "" : imm;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ClearImmortalFilter()
|
||||||
|
{
|
||||||
|
immortalFilter = "";
|
||||||
|
}
|
||||||
|
|
||||||
private void SetCategory(string cat)
|
private void SetCategory(string cat)
|
||||||
{
|
{
|
||||||
@@ -323,6 +339,11 @@
|
|||||||
factionFilter = "";
|
factionFilter = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ToggleAgentLink()
|
||||||
|
{
|
||||||
|
agentLink = !agentLink;
|
||||||
|
}
|
||||||
|
|
||||||
private void ClearCostFilter()
|
private void ClearCostFilter()
|
||||||
{
|
{
|
||||||
costFilter = "";
|
costFilter = "";
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 178 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 160 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 153 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 145 KiB After Width: | Height: | Size: 145 KiB |
Vendored
+3
-1
@@ -1 +1,3 @@
|
|||||||
{}
|
{
|
||||||
|
"alwaysUpdateLinks": true
|
||||||
|
}
|
||||||
+3
-1
@@ -1 +1,3 @@
|
|||||||
[]
|
[
|
||||||
|
"frontmatter-folder-organizer"
|
||||||
|
]
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
/*
|
||||||
|
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||||
|
if you want to view the source, please visit the github repository of this plugin
|
||||||
|
*/
|
||||||
|
|
||||||
|
"use strict";var d=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var w=(i,t)=>{for(var e in t)d(i,e,{get:t[e],enumerable:!0})},z=(i,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of p(t))!y.call(i,r)&&r!==e&&d(i,r,{get:()=>t[r],enumerable:!(n=F(t,r))||n.enumerable});return i};var S=i=>z(d({},"__esModule",{value:!0}),i);var b={};w(b,{default:()=>m});module.exports=S(b);var g=require("obsidian");var l=require("obsidian"),f={frontmatterHierarchy:"Category, Faction"},h=class extends l.PluginSettingTab{constructor(t,e){super(t,e),this.plugin=e}display(){let{containerEl:t}=this;t.empty(),t.createEl("h2",{text:"Frontmatter Folder Organizer"}),new l.Setting(t).setName("Frontmatter hierarchy").setDesc("Enter frontmatter keys in order. Files will be organized into folders based on these values.").addTextArea(e=>e.setPlaceholder("category").setValue(this.plugin.settings.frontmatterHierarchy).onChange(async n=>{this.plugin.settings.frontmatterHierarchy=n,await this.plugin.saveSettings()})),new l.Setting(t).setName("Organize files now").setDesc("Create folders and move markdown files according to the configured frontmatter hierarchy.").addButton(e=>e.setButtonText("Organize now").onClick(async()=>{await this.plugin.organizeFilesByFrontmatter()}))}};var m=class extends g.Plugin{async onload(){await this.loadSettings(),this.addCommand({id:"organize-frontmatter-folders",name:"Organize markdown by frontmatter hierarchy",callback:async()=>{await this.organizeFilesByFrontmatter()}}),this.addSettingTab(new h(this.app,this))}async organizeFilesByFrontmatter(){let t=this.getHierarchyKeys();if(!t.length){new g.Notice("Set a frontmatter hierarchy in plugin settings before organizing files.");return}let e=this.app.vault.getFiles().filter(r=>r.extension==="md"),n=0;for(let r of e){let a=this.getFolderSegmentsForFile(r,t);if(!a||!a.length)continue;let s=a.join("/");if(`${s}/${r.name}`===r.path)continue;await this.ensureFolderExists(s);let c=await this.getAvailableTargetPath(s,r.name);await this.app.vault.rename(r,c),n+=1}new g.Notice(`Organized ${n} markdown file${n===1?"":"s"} by frontmatter folder hierarchy.`)}getHierarchyKeys(){return this.settings.frontmatterHierarchy.split(/[,\r\n]+/).map(t=>t.trim()).filter(Boolean)}getFolderSegmentsForFile(t,e){let n=this.app.metadataCache.getFileCache(t);if(!n?.frontmatter)return null;let r=[];for(let a of e){let s=this.getFrontmatterValueByKey(n.frontmatter,a),o=this.normalizeFrontmatterValue(s);if(o===null)break;r.push(this.sanitizeFolderName(o))}return r.length?r:null}getFrontmatterValueByKey(t,e){let n=e.trim().toLowerCase();for(let[r,a]of Object.entries(t))if(r.trim().toLowerCase()===n)return a}normalizeFrontmatterValue(t){if(t==null||typeof t=="object")return null;let e=String(t).trim();return e.length?e:null}sanitizeFolderName(t){return t.replace(/[<>:"/\\|?*]/g,"-").trim()}async ensureFolderExists(t){let e=t.replace(/\\/g,"/").split("/").filter(Boolean),n="";for(let r of e)n=n?`${n}/${r}`:r,this.app.vault.getAbstractFileByPath(n)||await this.app.vault.createFolder(n)}async getAvailableTargetPath(t,e){let n=t.replace(/\\/g,"/"),r=`${n}/${e}`;if(!this.app.vault.getAbstractFileByPath(r))return r;let a=e.lastIndexOf("."),s=a>=0?e.slice(0,a):e,o=a>=0?e.slice(a):"",c=1;for(;;){let u=`${n}/${s}-${c}${o}`;if(!this.app.vault.getAbstractFileByPath(u))return u;c+=1}}async loadSettings(){this.settings=Object.assign({},f,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}};
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"id": "frontmatter-folder-organizer",
|
||||||
|
"name": "Frontmatter Folder Organizer",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"minAppVersion": "1.0.0",
|
||||||
|
"description": "Organize markdown files into folders based on frontmatter hierarchy.",
|
||||||
|
"author": "Obsidian",
|
||||||
|
"authorUrl": "https://obsidian.md",
|
||||||
|
"isDesktopOnly": false
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
/*
|
||||||
|
|
||||||
|
This CSS file will be included with your plugin, and
|
||||||
|
available in the app when your plugin is enabled.
|
||||||
|
|
||||||
|
If your plugin does not need CSS, delete this file.
|
||||||
|
|
||||||
|
*/
|
||||||
Vendored
+60
-48
@@ -13,12 +13,24 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "markdown",
|
"type": "markdown",
|
||||||
"state": {
|
"state": {
|
||||||
"file": "Decks/Big Energy.md",
|
"file": "Immortalized/[[Splintergleam]]/The Ripper.md",
|
||||||
"mode": "source",
|
"mode": "source",
|
||||||
"source": false
|
"source": false
|
||||||
},
|
},
|
||||||
"icon": "lucide-file",
|
"icon": "lucide-file",
|
||||||
"title": "Big Energy"
|
"title": "The Ripper"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "260e40ab6f70e60e",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "image",
|
||||||
|
"state": {
|
||||||
|
"file": "Agents Immortalized/Lifeblood/Horticulturist Oswald.png"
|
||||||
|
},
|
||||||
|
"icon": "lucide-image",
|
||||||
|
"title": "Horticulturist Oswald"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -95,7 +107,7 @@
|
|||||||
"state": {
|
"state": {
|
||||||
"type": "search",
|
"type": "search",
|
||||||
"state": {
|
"state": {
|
||||||
"query": "Immedi",
|
"query": "The Ripper",
|
||||||
"matchingCase": false,
|
"matchingCase": false,
|
||||||
"explainSearch": false,
|
"explainSearch": false,
|
||||||
"collapseAll": false,
|
"collapseAll": false,
|
||||||
@@ -225,55 +237,55 @@
|
|||||||
"bases:Create new base": false
|
"bases:Create new base": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"active": "d6fd830908a482d3",
|
"active": "0ce4e65b7e2934e1",
|
||||||
"lastOpenFiles": [
|
"lastOpenFiles": [
|
||||||
"Decks/Big Energy.md",
|
"Immortalized/[[Splintergleam]]/The Ripper.png",
|
||||||
"Disarm.md",
|
"Immortalized/[[Splintergleam]]/The Ripper.png.crdownload",
|
||||||
"Factions/Singularity.md",
|
"Agent/[[Splintergleam]]/Toothy Pugilist.md",
|
||||||
"Spells/Lifeblood/Affront to Nature.md",
|
"Immortalized/[[Silence]]/Alina Who Cuts the Strings.md",
|
||||||
"Spells/Singularity/Aggressive Recycling.md",
|
"Agent/[[Silence]]/Destiny Ripper.md",
|
||||||
"Mute.md",
|
"Immortalized/[[Splintergleam]]/The Ripper.md",
|
||||||
"Agents/Sungrace/Brilliant Martyr.md",
|
"Immortalized/[[Splintergleam]]/Sareh, Rebel Strategist.md",
|
||||||
"Decks/Sub/Big Energy.md",
|
"Immortalized/[[Splintergleam]]/Scoot Sparkles.md",
|
||||||
"Decks/Sub",
|
"Immortalized/[[Splintergleam]]/Scoot Sparkles.png",
|
||||||
"Redirects/Agents.md",
|
"Immortalized/[[Splintergleam]]/Scoot Sparkles.png.crdownload",
|
||||||
"_Timeline.base",
|
"Agent/[[Phasetide]]/Divergence Assassin.md",
|
||||||
"Redirects",
|
"Immortalized/[[Lifeblood]]/Horticulturist Oswald.md",
|
||||||
"Rules/Chain.md",
|
"Immortalized/[[Phasetide]]/Violent Inquisitioner.md",
|
||||||
"Rules/Discarded.md",
|
"Immortalized/[[Silence]]/A'kon, Starry Diviner.md",
|
||||||
"Rules/Round End.md",
|
"Immortalized/[[Phasetide]]/Masa, Time-Lost.md",
|
||||||
"Rules/Core.md",
|
"Immortalized/[[Phasetide]]/Dedicated Missionary.md",
|
||||||
"Keywords/Sprout.md",
|
"Immortalized/[[Phasetide]]/Violet Inquisitioner.md",
|
||||||
"Rules",
|
"Immortalized/[[Phasetide]]/Zel, the First Diver.md",
|
||||||
"Speed/Fast.md",
|
"Immortalized/[[Phasetide]]/The 'Stache.md",
|
||||||
"Speed/Immediate.md",
|
"Immortalized/[[Phasetide]]/Symphony of the Path.md",
|
||||||
"Speed/Slow.md",
|
"Immortalized/[[Phasetide]]/Grand Judge Dhael.md",
|
||||||
"Speed",
|
"Immortalized/[[Phasetide]]/Harker, Metal Reporter.md",
|
||||||
"Tokens/Pocket Scout.md",
|
"Immortalized/[[Phasetide]]/Khaela the Savior.md",
|
||||||
|
"Immortalized/[[Phasetide]]/Pontifex Dhabu.md",
|
||||||
|
"Immortalized/[[Phasetide]]/Priestess Minia.md",
|
||||||
|
"Immortalized/[[Phasetide]]/Rift Mender Aris.md",
|
||||||
|
"Agents Immortalized/Lifeblood/Horticulturist Oswald.png",
|
||||||
|
"Immortalized/[[Lifeblood]]/Gritmancer Grant.md",
|
||||||
|
"Immortalized/[[Phasetide]]/Consequence Admin Cain.md",
|
||||||
|
"Immortalized/[[Phasetide]]/Alina, the Overflowing Cup.md",
|
||||||
|
"Decks/Rewind Me.canvas",
|
||||||
|
"Agents Immortalized/Silence/A'kon, Starry Diviner.png",
|
||||||
|
"Agent/[[Lifeblood]]",
|
||||||
|
"Agent/[[Singularity]]",
|
||||||
|
"Agent/[[Phasetide]]",
|
||||||
|
"Agent/[[Silence]]",
|
||||||
|
"Agent/[[Sungrace]]",
|
||||||
|
"Agent/[[Splintergleam]]",
|
||||||
|
"Agent",
|
||||||
|
"Immortalized/[[Phasetide]]",
|
||||||
|
"Agents/Phasetide/Divergence Assassin.png",
|
||||||
|
"Agents/Phasetide/Divergence Assasin.png",
|
||||||
|
"Agents Immortalized/Lifeblood/Horticulturalist Oswald.png",
|
||||||
|
"Agents/Singularity/Awakened Security System.png",
|
||||||
"Tokens/Seedling.png",
|
"Tokens/Seedling.png",
|
||||||
"Tokens/Pocket Scout.png",
|
"Tokens/Pocket Scout.png",
|
||||||
"Factions/Silence.md",
|
|
||||||
"Tokens/Wolf.md",
|
|
||||||
"Tokens",
|
|
||||||
"Sets",
|
|
||||||
"Sets/Core Set.md",
|
|
||||||
"_Spells.base",
|
|
||||||
"_Keyword.base",
|
|
||||||
"_Factions.base",
|
|
||||||
"Rules/Cores.md",
|
|
||||||
"Factions/Sungrace.md",
|
|
||||||
"Factions/Phasetide.md",
|
|
||||||
"Factions/Splintergleam.md",
|
|
||||||
"Untitled.md",
|
|
||||||
"Khaelar.png",
|
"Khaelar.png",
|
||||||
"Agents Immortalized/Singularity/Zorp, Unrecyclable.png",
|
|
||||||
"Agents Immortalized/Singularity/Ziv, the Adaptable.png",
|
|
||||||
"Agents Immortalized/Phasetide/Zel, the First Diver.png",
|
|
||||||
"Agents/Lifeblood/Zealot of the Hunt.png",
|
|
||||||
"Agents Immortalized/Silence/Ylka, the Headliner.png",
|
|
||||||
"Agents Immortalized/Lifeblood/Xae, Dreamstrider.png",
|
|
||||||
"Agents Immortalized/Lifeblood/Wreck-o Rex.png",
|
|
||||||
"Decks/Rewind Me.canvas",
|
|
||||||
"_Agents.canvas"
|
"_Agents.canvas"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
+5
-1
@@ -3,7 +3,7 @@ category: Agent
|
|||||||
cost: 6
|
cost: 6
|
||||||
attack: 6
|
attack: 6
|
||||||
health: 3
|
health: 3
|
||||||
description: "[[Blitz]]. I cost 1 less for each time you've [[Phased]] or [[Rewound]] an Agent this game. Strike: [[Rewind]] me.]]"
|
description: "[[Blitz]]. I cost 1 less for each time you've [[Phased]] or [[Rewound]] an Agent this game. Strike: [[Rewind]] me."
|
||||||
immortalizeWhen: You've [[Phased]] or [[Rewound]] Agents 6+ times this game.
|
immortalizeWhen: You've [[Phased]] or [[Rewound]] Agents 6+ times this game.
|
||||||
immortalizeTo:
|
immortalizeTo:
|
||||||
- "[[Masa, Time-Lost]]"
|
- "[[Masa, Time-Lost]]"
|
||||||
@@ -12,4 +12,8 @@ faction: "[[Phasetide]]"
|
|||||||
set: "[[Core Set]]"
|
set: "[[Core Set]]"
|
||||||
archetypes:
|
archetypes:
|
||||||
- "[[Rewound]]"
|
- "[[Rewound]]"
|
||||||
|
imageLink: "[[Divergence Assassin.png]]"
|
||||||
---
|
---
|
||||||
|
![[Divergence Assassin.png]]
|
||||||
|
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user