Update to dnd 0.98 Core with some fixes
Updated to 0.98 core for 0.7.x compatability (untested) Class Skills are pulling in automatically on class item drop to character sheet. TODO: Expand automated skill drop for Archetypes KNOWN ISSUE: init.value is being converted to a string causing some NaN errors on the html. Initiative was changed to a number instead of a string in 0.98 likely some place is assuming it is still a string. I had to use Number() on the value because it was forcing other vales to be a string because the value is "". Maybe someone can fix this
17
lang/en.json
|
@ -64,6 +64,7 @@
|
|||
"SW5E.AlignmentNL": "Neutral Light",
|
||||
"SW5E.AlignmentBN": "Balanced Neutral",
|
||||
"SW5E.Archetypes": "Archetypes",
|
||||
"SW5E.Appearance": "Appearance",
|
||||
"SW5E.ArmorClass": "Armor Class",
|
||||
"SW5E.AC": "AC",
|
||||
"SW5E.ArmorProperties": "Armor Properties",
|
||||
|
@ -104,6 +105,7 @@
|
|||
"SW5E.Attuned": "Attuned",
|
||||
"SW5E.Background": "Background",
|
||||
"SW5E.Biography": "Biography",
|
||||
"SW5E.Bonds": "Bonds",
|
||||
"SW5E.BonusAbilityCheck": "Global Ability Check Bonus",
|
||||
"SW5E.BonusAbilitySave": "Global Saving Throw Bonus",
|
||||
"SW5E.BonusAbilitySkill": "Global Skill Check Bonus",
|
||||
|
@ -176,7 +178,8 @@
|
|||
"SW5E.ConsumableMedpac": "Medpac",
|
||||
"SW5E.ConsumableTrinket": "Trinket",
|
||||
"SW5E.ConsumableTechnology": "Technology",
|
||||
"SW5E.ConsumableAmmunition": "Ammunition",
|
||||
"SW5E.ConsumableForce": "Force Points",
|
||||
"SW5E.ConsumableTech": "Tech Points",
|
||||
"SW5E.ConsumableUseWarnStart": "This consumable has",
|
||||
"SW5E.ConsumableUseWarnEnd": "of the current unit",
|
||||
"SW5E.ConsumableUnitWarn": "units remaining",
|
||||
|
@ -230,6 +233,7 @@
|
|||
"SW5E.DistSelf": "Self",
|
||||
"SW5E.DistTouch": "Touch",
|
||||
"SW5E.Duration": "Duration",
|
||||
"SW5E.Effects": "Effects",
|
||||
"SW5E.EquipmentBonus": "Magical Bonus",
|
||||
"SW5E.EquipmentClothing": "Clothing",
|
||||
"SW5E.EquipmentHeavy": "Heavy Armor",
|
||||
|
@ -244,9 +248,13 @@
|
|||
"SW5E.Exhaustion": "Exhaustion",
|
||||
"SW5E.Expertise": "Expertise",
|
||||
"SW5E.FeatureActionRecharge": "Action Recharge",
|
||||
"SW5E.Flaws": "Flaws",
|
||||
|
||||
"SW5E.ItemTypeArchetype": "Archetype",
|
||||
"SW5E.ItemTypeClass": "Class",
|
||||
"SW5E.ItemTypeClassPl": "Class Levels",
|
||||
"SW5E.ItemTypeClassFeat": "Class Feature",
|
||||
"SW5E.ItemTypeClassFeats": "Class Features",
|
||||
"SW5E.ItemTypeConsumable": "Consumable",
|
||||
"SW5E.ItemTypeConsumablePl": "Consumables",
|
||||
"SW5E.ItemTypeContainer": "Container",
|
||||
|
@ -319,6 +327,7 @@
|
|||
"SW5E.HitDiceRoll": "Roll Hit Dice",
|
||||
"SW5E.HitDiceUsed": "Hit Dice Used",
|
||||
"SW5E.HitDiceWarn": "{name} has no available {formula} Hit Dice remaining!",
|
||||
"SW5E.Ideals": "Ideals",
|
||||
"SW5E.Identified": "Identified",
|
||||
"SW5E.Initiative": "Initiative",
|
||||
"SW5E.Inspiration": "Inspiration",
|
||||
|
@ -497,6 +506,7 @@
|
|||
"SW5E.OtherFormula": "Other Formula",
|
||||
"SW5E.PactMagic": "Pact Magic",
|
||||
"SW5E.Passive": "Passive",
|
||||
"SW5E.PersonalityTraits": "Personality Traits",
|
||||
"SW5E.PlaceTemplate": "Place Measured Template",
|
||||
"SW5E.Polymorph": "Polymorph",
|
||||
"SW5E.PolymorphAcceptSettings": "Custom Settings",
|
||||
|
@ -519,8 +529,9 @@
|
|||
"SW5E.PolymorphTokens": "Transform all linked tokens?",
|
||||
"SW5E.PolymorphWarn": "You are not allowed to polymorph this actor!",
|
||||
"SW5E.PolymorphWildShape": "Wild Shape",
|
||||
"SW5E.Prepared": "Known",
|
||||
"SW5E.Prepared": "Prepared",
|
||||
"SW5E.Concentrate": "Concentrate",
|
||||
"SW5E.Concentrated": "Concentrate",
|
||||
"SW5E.Price": "Price",
|
||||
"SW5E.Proficiency": "Proficiency",
|
||||
"SW5E.Proficient": "Proficient",
|
||||
|
@ -640,6 +651,8 @@
|
|||
"SW5E.PowerPrepInnate": "Innate Powercasting",
|
||||
"SW5E.PowerPrepPrepared": "Prepared",
|
||||
"SW5E.PowerPrepAlways": "Always Prepared",
|
||||
"SW5E.PowerPreparationMode": "Power Preparation Mode",
|
||||
"SW5E.PowerPrepared": "Prepared",
|
||||
"SW5E.PowerConcentrationMode": "Power Concentration Mode",
|
||||
"SW5E.PowerConcentrating": "Concentrating",
|
||||
"SW5E.PowerProgArt": "Artificer",
|
||||
|
|
|
@ -302,7 +302,8 @@
|
|||
}
|
||||
}
|
||||
|
||||
input[type="text"] {
|
||||
input[type="text"],
|
||||
input[type="number"] {
|
||||
height: 20px;
|
||||
max-width: 20px;
|
||||
margin: 0;
|
||||
|
@ -419,6 +420,7 @@
|
|||
padding: 0 5px;
|
||||
overflow-y: auto;
|
||||
scrollbar-width: thin;
|
||||
color: @colorTan;
|
||||
|
||||
// Inventory Item
|
||||
.item {
|
||||
|
@ -482,6 +484,7 @@
|
|||
.inventory-header {
|
||||
margin: 2px 0;
|
||||
padding: 0;
|
||||
align-items: center;
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
border: @borderGroove;
|
||||
font-weight: bold;
|
||||
|
@ -499,6 +502,11 @@
|
|||
}
|
||||
}
|
||||
|
||||
// Item names
|
||||
.item-name {
|
||||
color: @colorDark;
|
||||
}
|
||||
|
||||
// Item Detail Sections
|
||||
.item-detail {
|
||||
flex: 0 0 70px;
|
||||
|
@ -686,6 +694,44 @@
|
|||
// Empty powerbook controls
|
||||
.powerbook-empty .item-controls { flex: 1; }
|
||||
|
||||
/* ----------------------------------------- */
|
||||
/* Active Effects */
|
||||
/* ----------------------------------------- */
|
||||
|
||||
.effects {
|
||||
.effect-name{
|
||||
flex: 2;
|
||||
align-items: center;
|
||||
color: @colorDark;
|
||||
h4 { margin: 0; }
|
||||
}
|
||||
|
||||
.effect-icon {
|
||||
flex: 0 0 30px;
|
||||
height: 30px;
|
||||
margin-right: 5px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.effect-source,
|
||||
.effect-duration {
|
||||
text-align: center;
|
||||
border-left: 1px solid @colorFaint;
|
||||
border-right: 1px solid @colorFaint;
|
||||
}
|
||||
|
||||
.effect-controls {
|
||||
flex: 0 0 60px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.effect {
|
||||
align-items: center;
|
||||
border-bottom: 1px solid @colorFaint;
|
||||
&:last-child { border-bottom: none; }
|
||||
}
|
||||
}
|
||||
|
||||
/* ----------------------------------------- */
|
||||
/* TinyMCE */
|
||||
/* ----------------------------------------- */
|
||||
|
|
|
@ -20,7 +20,9 @@
|
|||
/* ----------------------------------------- */
|
||||
|
||||
// Item Sheet form fields
|
||||
input[type="text"], select {
|
||||
input[type="text"],
|
||||
input[type="number"],
|
||||
select {
|
||||
height: calc(100% - 2px);
|
||||
border: 1px solid @colorTan;
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
|
@ -28,7 +30,8 @@
|
|||
}
|
||||
|
||||
// Hovered Fields
|
||||
input[type="text"] {
|
||||
input[type="text"],
|
||||
input[type="number"] {
|
||||
&:hover,
|
||||
&:focus {
|
||||
border: 1px solid #111;
|
||||
|
@ -157,7 +160,8 @@
|
|||
/* ----------------------------------------- */
|
||||
|
||||
// Input Fields
|
||||
input[type="text"] {
|
||||
input[type="text"],
|
||||
input[type="number"] {
|
||||
background: none;
|
||||
border: 1px solid transparent;
|
||||
&:hover,
|
||||
|
|
|
@ -160,14 +160,14 @@
|
|||
padding: 0 3px 3px;
|
||||
label {
|
||||
flex: 0 0 20px;
|
||||
.openSans();
|
||||
.bungeeInline();
|
||||
font-size: 16px;
|
||||
font-weight: normal;
|
||||
line-height: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
textarea {
|
||||
font-family: "Signika", serif;
|
||||
.openSans();
|
||||
border: 1px solid @colorFaint;
|
||||
resize: none;
|
||||
}
|
||||
|
|
|
@ -88,7 +88,9 @@
|
|||
.details {
|
||||
|
||||
// Item Sheet form fields
|
||||
input[type="text"], select {
|
||||
input[type="text"],
|
||||
input[type="number"],
|
||||
select {
|
||||
height: 24px;
|
||||
border: 1px solid @colorTan;
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
|
|
|
@ -6,3 +6,33 @@
|
|||
@import "character.less";
|
||||
@import "npc.less";
|
||||
@import "vehicle.less";
|
||||
|
||||
// TODO: Remove number styling after 0.7.x
|
||||
input[type="number"] {
|
||||
width: calc(100% - 2px);
|
||||
min-width: 20px;
|
||||
height: 26px;
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
padding: 1px 3px;
|
||||
margin: 0;
|
||||
color: #191813;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
text-align: inherit;
|
||||
line-height: inherit;
|
||||
border: 1px solid #7a7971;
|
||||
border-radius: 3px;
|
||||
-webkit-user-select: text;
|
||||
-moz-user-select: text;
|
||||
-ms-user-select: text;
|
||||
user-select: text;
|
||||
-moz-appearance: textfield;
|
||||
&:focus {
|
||||
box-shadow: 0 0 5px red;
|
||||
}
|
||||
}
|
||||
input[type="number"]::-webkit-inner-spin-button,
|
||||
input[type="number"]::-webkit-outer-spin-button {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
|
@ -100,7 +100,7 @@ export default class Actor5e extends Actor {
|
|||
}
|
||||
|
||||
// Ability modifiers and saves
|
||||
const dcBonus = Number.isNumeric(data.bonuses.power.dc) ? parseInt(data.bonuses.power.dc) : 0;
|
||||
const dcBonus = Number.isNumeric(data.bonuses.power?.dc) ? parseInt(data.bonuses.power.dc) : 0;
|
||||
const saveBonus = Number.isNumeric(bonuses.save) ? parseInt(bonuses.save) : 0;
|
||||
const checkBonus = Number.isNumeric(bonuses.check) ? parseInt(bonuses.check) : 0;
|
||||
for (let [id, abl] of Object.entries(data.abilities)) {
|
||||
|
@ -109,7 +109,7 @@ export default class Actor5e extends Actor {
|
|||
abl.saveBonus = saveBonus;
|
||||
abl.checkBonus = checkBonus;
|
||||
abl.save = abl.mod + abl.prof + abl.saveBonus;
|
||||
abl.dc = 8 + abl.mod + abl.prof + dcBonus;
|
||||
abl.dc = 8 + abl.mod + data.attributes.prof + dcBonus;
|
||||
|
||||
// If we merged saves when transforming, take the highest bonus here.
|
||||
if (originalSaves && abl.proficient) {
|
||||
|
@ -126,7 +126,7 @@ export default class Actor5e extends Actor {
|
|||
if ( joat ) init.prof = Math.floor(0.5 * data.attributes.prof);
|
||||
else if ( athlete ) init.prof = Math.ceil(0.5 * data.attributes.prof);
|
||||
else init.prof = 0;
|
||||
init.bonus = init.value + (flags.initiativeAlert ? 5 : 0);
|
||||
init.bonus = Number(init.value + (flags.initiativeAlert ? 5 : 0));
|
||||
init.total = init.mod + init.prof + init.bonus;
|
||||
|
||||
// Prepare power-casting data
|
||||
|
|
|
@ -19,7 +19,8 @@ export default class ActorSheet5e extends ActorSheet {
|
|||
this._filters = {
|
||||
inventory: new Set(),
|
||||
powerbook: new Set(),
|
||||
features: new Set()
|
||||
features: new Set(),
|
||||
effects: new Set()
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -31,7 +32,8 @@ export default class ActorSheet5e extends ActorSheet {
|
|||
scrollY: [
|
||||
".inventory .inventory-list",
|
||||
".features .inventory-list",
|
||||
".powerbook .inventory-list"
|
||||
".powerbook .inventory-list",
|
||||
".effects .inventory-list"
|
||||
],
|
||||
tabs: [{navSelector: ".tabs", contentSelector: ".sheet-body", initial: "description"}]
|
||||
});
|
||||
|
@ -82,7 +84,7 @@ export default class ActorSheet5e extends ActorSheet {
|
|||
abl.label = CONFIG.SW5E.abilities[a];
|
||||
}
|
||||
|
||||
// Update skill labels
|
||||
// Skills
|
||||
if (data.actor.data.skills) {
|
||||
for ( let [s, skl] of Object.entries(data.actor.data.skills)) {
|
||||
skl.ability = CONFIG.SW5E.abilityAbbreviations[skl.ability];
|
||||
|
@ -98,12 +100,21 @@ export default class ActorSheet5e extends ActorSheet {
|
|||
// Prepare owned items
|
||||
this._prepareItems(data);
|
||||
|
||||
// Prepare active effects
|
||||
// TODO Disabled until 0.7.5 release
|
||||
// this._prepareEffects(data);
|
||||
|
||||
// Return data to the sheet
|
||||
return data
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Prepare the data structure for traits data like languages, resistances & vulnerabilities, and proficiencies
|
||||
* @param {object} traits The raw traits data object from the actor data
|
||||
* @private
|
||||
*/
|
||||
_prepareTraits(traits) {
|
||||
const map = {
|
||||
"dr": CONFIG.SW5E.damageResistanceTypes,
|
||||
|
@ -137,6 +148,43 @@ export default class ActorSheet5e extends ActorSheet {
|
|||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Prepare the data structure for Active Effects which are currently applied to the Actor.
|
||||
* @param {object} data The object of rendering data which is being prepared
|
||||
* @private
|
||||
*/
|
||||
_prepareEffects(data) {
|
||||
|
||||
// Define effect header categories
|
||||
const categories = {
|
||||
temporary: {
|
||||
label: "Temporary Effects",
|
||||
effects: []
|
||||
},
|
||||
passive: {
|
||||
label: "Passive Effects",
|
||||
effects: []
|
||||
},
|
||||
inactive: {
|
||||
label: "Inactive Effects",
|
||||
effects: []
|
||||
}
|
||||
};
|
||||
|
||||
// Iterate over active effects, classifying them into categories
|
||||
for ( let e of this.actor.effects ) {
|
||||
e._getSourceName(); // Trigger a lookup for the source name
|
||||
if ( e.data.disabled ) categories.inactive.effects.push(e);
|
||||
else if ( e.isTemporary ) categories.temporary.effects.push(e);
|
||||
else categories.inactive.push(e);
|
||||
}
|
||||
|
||||
// Add the prepared categories of effects to the rendering data
|
||||
return data.effects = categories;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Insert a power into the powerbook object when rendering the character sheet
|
||||
* @param {Object} data The Actor data being prepared
|
||||
|
@ -344,6 +392,10 @@ export default class ActorSheet5e extends ActorSheet {
|
|||
html.find('.item-delete').click(this._onItemDelete.bind(this));
|
||||
html.find('.item-uses input').click(ev => ev.target.select()).change(this._onUsesChange.bind(this));
|
||||
html.find('.slot-max-override').click(this._onPowerSlotOverride.bind(this));
|
||||
|
||||
// Active Effect management
|
||||
html.find(".effect-control").click(this._onManageActiveEffect.bind(this));
|
||||
|
||||
}
|
||||
|
||||
// Owner Only Listeners
|
||||
|
@ -680,6 +732,28 @@ export default class ActorSheet5e extends ActorSheet {
|
|||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Manage Active Effect instances through the Actor Sheet via effect control buttons.
|
||||
* @param {MouseEvent} event The left-click event on the effect control
|
||||
* @private
|
||||
*/
|
||||
_onManageActiveEffect(event) {
|
||||
event.preventDefault();
|
||||
const a = event.currentTarget;
|
||||
const li = a.closest(".effect");
|
||||
const effect = this.actor.effects.get(li.dataset.effectId);
|
||||
switch ( a.dataset.action ) {
|
||||
case "edit":
|
||||
return new ActiveEffectConfig(effect).render(true);
|
||||
case "delete":
|
||||
return effect.delete();
|
||||
case "toggle":
|
||||
return effect.update({disabled: !effect.data.disabled});
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/**
|
||||
* Handle rolling an Ability check, either a test or a saving throw
|
||||
* @param {Event} event The originating click event
|
||||
|
|
|
@ -70,7 +70,7 @@ export default class ActorSheet5eCharacter extends ActorSheet5e {
|
|||
};
|
||||
|
||||
// Partition items by category
|
||||
let [items, powers, feats, classes, species] = data.items.reduce((arr, item) => {
|
||||
let [items, powers, feats, classes, species, archetypes, classfeatures] = data.items.reduce((arr, item) => {
|
||||
|
||||
// Item details
|
||||
item.img = item.img || DEFAULT_TOKEN;
|
||||
|
@ -89,10 +89,12 @@ export default class ActorSheet5eCharacter extends ActorSheet5e {
|
|||
if ( item.type === "power" ) arr[1].push(item);
|
||||
else if ( item.type === "feat" ) arr[2].push(item);
|
||||
else if ( item.type === "class" ) arr[3].push(item);
|
||||
else if ( item.type === "species" ) arr[4].push(item);
|
||||
else if ( item.type === "species" ) arr[4].push(item);
|
||||
else if ( item.type === "archetype" ) arr[5].push(item);
|
||||
else if ( item.type === "classfeature" ) arr[6].push(item);
|
||||
else if ( Object.keys(inventory).includes(item.type ) ) arr[0].push(item);
|
||||
return arr;
|
||||
}, [[], [], [], [], []]);
|
||||
}, [[], [], [], [], [], [], []]);
|
||||
|
||||
// Apply active item filters
|
||||
items = this._filterItems(items, this._filters.inventory);
|
||||
|
@ -116,6 +118,8 @@ export default class ActorSheet5eCharacter extends ActorSheet5e {
|
|||
// Organize Features
|
||||
const features = {
|
||||
classes: { label: "SW5E.ItemTypeClassPl", items: [], hasActions: false, dataset: {type: "class"}, isClass: true },
|
||||
classfeatures: { label: "SW5E.ItemTypeClassFeats", items: [], hasActions: false, dataset: {type: "classfeature"}, isClassfeature: true},
|
||||
archetype: { label: "SW5E.ItemTypeArchetype", items: [], hasActions: false, dataset: {type: "archetype"}, isArchetype: true },
|
||||
species: { label: "SW5E.ItemTypeSpecies", items: [], hasActions: false, dataset: {type: "species"}, isSpecies: true},
|
||||
active: { label: "SW5E.FeatureActive", items: [], hasActions: true, dataset: {type: "feat", "activation.type": "action"} },
|
||||
passive: { label: "SW5E.FeaturePassive", items: [], hasActions: false, dataset: {type: "feat"} }
|
||||
|
@ -126,6 +130,8 @@ export default class ActorSheet5eCharacter extends ActorSheet5e {
|
|||
}
|
||||
classes.sort((a, b) => b.levels - a.levels);
|
||||
features.classes.items = classes;
|
||||
features.classfeatures.items = classfeatures;
|
||||
features.archetype.items = archetypes;
|
||||
features.species.items = species;
|
||||
|
||||
// Assign and return
|
||||
|
@ -274,9 +280,18 @@ export default class ActorSheet5eCharacter extends ActorSheet5e {
|
|||
}
|
||||
|
||||
// If the actor already has the class, increment the level instead of creating a new item
|
||||
// then add new features as long as level increases
|
||||
if ( classWasAlreadyPresent ) {
|
||||
const lvl = cls.data.data.levels;
|
||||
return cls.update({"data.levels": Math.min(lvl + 1, 20 + lvl - this.actor.data.data.details.level)})
|
||||
const newLvl = Math.min(lvl + 1, 20 + lvl - this.actor.data.data.details.level);
|
||||
if ( !(lvl === newLvl) ) {
|
||||
cls.update({"data.levels": newLvl});
|
||||
itemData.data.levels = newLvl;
|
||||
Actor5e.getClassFeatures(itemData).then(features => {
|
||||
this.actor.createEmbeddedEntity("OwnedItem", features);
|
||||
});
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -120,7 +120,7 @@ export default class ActorSheetFlags extends BaseEntitySheet {
|
|||
// Diff the data against any applied overrides and apply
|
||||
// TODO: Remove this logical gate once 0.7.x is release channel
|
||||
if ( !isNewerVersion("0.7.1", game.data.version) ){
|
||||
updateData.data = diffObject(this.object.overrides, updateData.data);
|
||||
updateData = diffObject(this.object.data, updateData);
|
||||
}
|
||||
await actor.update(updateData, {diff: false});
|
||||
}
|
||||
|
|
|
@ -1,694 +1,35 @@
|
|||
export const ClassFeatures = {
|
||||
/* These are the class features for DND5E left in for reference to help build SW5E Class features
|
||||
// Remove once SW5E Class features are added.
|
||||
"barbarian": {
|
||||
"subclasses": {
|
||||
"path-of-the-ancestral-guardian": {
|
||||
"label": "Path of the Ancestral Guardian",
|
||||
"source": "XGE pg. 9"
|
||||
},
|
||||
"path-of-the-battlerager": {
|
||||
"label": "Path of the Battlerager",
|
||||
"source": "SCAG pg. 121"
|
||||
},
|
||||
"path-of-the-berserker": {
|
||||
"label": "Path of the Berserker",
|
||||
"source": "PHB pg. 49",
|
||||
"features": {
|
||||
"3": ["Compendium.sw5e.classfeatures.CkbbAckeCtyHXEnL"],
|
||||
"6": ["Compendium.sw5e.classfeatures.0Jgf8fYY2ExwgQpN"],
|
||||
"10": ["Compendium.sw5e.classfeatures.M6VSMzVtKPhh8B0i"],
|
||||
"14": ["Compendium.sw5e.classfeatures.xzD9zlRP6dUxCtCl"]
|
||||
}
|
||||
},
|
||||
"path-of-the-juggernaut": {
|
||||
"label": "Path of the Juggernaut",
|
||||
"source": "TCS pg. 102"
|
||||
},
|
||||
"path-of-the-storm-herald": {
|
||||
"label": "Path of the Storm Herald",
|
||||
"source": "XGE pg. 10"
|
||||
},
|
||||
"path-of-the-totem-warrior": {
|
||||
"label": "Path of the Totem Warrior",
|
||||
"source": "PHB pg. 50; SCAG pg. 121"
|
||||
},
|
||||
"path-of-the-zealot": {
|
||||
"label": "Path of the Zealot",
|
||||
"source": "XGE pg. 11"
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.VoR0SUrNX5EJVPIO", "Compendium.sw5e.classfeatures.SZbsNbaxFFGwBpNK"],
|
||||
"2": ["Compendium.sw5e.classfeatures.SCVjqRdlZ9cvHVSR", "Compendium.sw5e.classfeatures.vt31lWAULygEl7yk"],
|
||||
"3": ["Compendium.sw5e.classfeatures.TH1QAf6YNGSeBVjT"],
|
||||
"5": ["Compendium.sw5e.classfeatures.XogoBnFWmCAHXppo", "Compendium.sw5e.classfeatures.Kl6zifJ5OmdHlOi2"],
|
||||
"7": ["Compendium.sw5e.classfeatures.NlXslw4yAqmKZWtN"],
|
||||
"9": ["Compendium.sw5e.classfeatures.L94gyvNpUhUe0rwh"],
|
||||
"11": ["Compendium.sw5e.classfeatures.FqfmbPgxiyrWzhYk"],
|
||||
"15": ["Compendium.sw5e.classfeatures.l8tUhZ5Pecm9wz7I"],
|
||||
"18": ["Compendium.sw5e.classfeatures.Q1exex5ALteprrPo"],
|
||||
"20": ["Compendium.sw5e.classfeatures.jVU4AgqfrFaqgXns"]
|
||||
}
|
||||
},
|
||||
"bard": {
|
||||
"subclasses": {
|
||||
"college-of-glamour": {
|
||||
"label": "College of Glamour",
|
||||
"source": "XGE pg. 14",
|
||||
"features": {}
|
||||
},
|
||||
"college-of-lore": {
|
||||
"label": "College of Lore",
|
||||
"source": "PHB pg. 54",
|
||||
"features": {
|
||||
"3": ["Compendium.sw5e.classfeatures.5zPmHPQUne7RDfaU"],
|
||||
"6": ["Compendium.sw5e.classfeatures.myBu3zi5eYvQIcuy"],
|
||||
"14": ["Compendium.sw5e.classfeatures.pquwueEMweRhiWaq"]
|
||||
}
|
||||
},
|
||||
"college-of-swords": {
|
||||
"label": "College of Swords",
|
||||
"source": "XGE pg. 15",
|
||||
"features": {}
|
||||
},
|
||||
"college-of-valor": {
|
||||
"label": "College of Valor",
|
||||
"source": "PHB pg. 55",
|
||||
"features": {}
|
||||
},
|
||||
"college-of-whispers": {
|
||||
"label": "College of Whispers",
|
||||
"source": "XGE pg. 16",
|
||||
"features": {}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.hpLNiGq7y67d2EHA", "Compendium.sw5e.classfeatures.u4NLajXETJhJU31v"],
|
||||
"2": ["Compendium.sw5e.classfeatures.ezWijmCnlnQ9ZRX2", "Compendium.sw5e.classfeatures.he8RpPXwSl2lVSIk"],
|
||||
"3": ["Compendium.sw5e.classfeatures.ILhzFHiRrqgQ9dFJ", "Compendium.sw5e.classfeatures.aQLg7BWdRnm4Hr9S"],
|
||||
"5": ["Compendium.sw5e.classfeatures.3VDZGs5Ug3hIE322"],
|
||||
"6": ["Compendium.sw5e.classfeatures.SEJmsjkEhdAZ90ki"],
|
||||
"10": ["Compendium.sw5e.classfeatures.aonJ2YjkqkYB9WYB"],
|
||||
"20": ["Compendium.sw5e.classfeatures.GBYN5rH4nh1ocRlY"]
|
||||
}
|
||||
},
|
||||
"cleric": {
|
||||
"subclasses": {
|
||||
"ambition-domain": {
|
||||
"label": "Ambition Domain",
|
||||
"source": "PS:A pg. 27",
|
||||
"features": {}
|
||||
},
|
||||
"arcana-domain": {
|
||||
"label": "Arcana Domain",
|
||||
"source": "SCAG pg. 125",
|
||||
"features": {}
|
||||
},
|
||||
"blood-domain": {
|
||||
"label": "Blood Domain",
|
||||
"source": "TCS pg. 101",
|
||||
"features": {}
|
||||
},
|
||||
"death-domain": {
|
||||
"label": "Death Domain",
|
||||
"source": "DMG pg. 96",
|
||||
"features": {}
|
||||
},
|
||||
"forge-domain": {
|
||||
"label": "Forge Domain",
|
||||
"source": "XGE pg. 18",
|
||||
"features": {}
|
||||
},
|
||||
"grave-domain": {
|
||||
"label": "Grave Domain",
|
||||
"source": "XGE pg. 19",
|
||||
"features": {}
|
||||
},
|
||||
"knowledge-domain": {
|
||||
"label": "Knowledge Domain",
|
||||
"source": "PHB pg. 59",
|
||||
"features": {}
|
||||
},
|
||||
"life-domain": {
|
||||
"label": "Life Domain",
|
||||
"source": "PHB pg. 60",
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.68bYIOvx6rIqnlOW", "Compendium.sw5e.classfeatures.jF8AFfEMICIJnAkR", "Compendium.sw5e.powers.8dzaICjGy6mTUaUr", "Compendium.sw5e.powers.uUWb1wZgtMou0TVP"],
|
||||
"2": ["Compendium.sw5e.classfeatures.hEymt45rICi4f9eL"],
|
||||
"3": ["Compendium.sw5e.powers.F0GsG0SJzsIOacwV", "Compendium.sw5e.powers.JbxsYXxSOTZbf9I0"],
|
||||
"5": ["Compendium.sw5e.powers.ZU9d6woBdUP8pIPt", "Compendium.sw5e.powers.LmRHHMtplpxr9fX6"],
|
||||
"6": ["Compendium.sw5e.classfeatures.yv49QN6Bzqs0ecCs"],
|
||||
"7": ["Compendium.sw5e.powers.VtCXMdyM6mAdIJZb", "Compendium.sw5e.powers.TgHsuhNasPbhu8MO"],
|
||||
"8": ["Compendium.sw5e.classfeatures.T6u5z8ZTX6UftXqE"],
|
||||
"9": ["Compendium.sw5e.powers.Pyzmm8R7rVsNAPsd", "Compendium.sw5e.powers.AGFMPAmuzwWO6Dfz"],
|
||||
"17": ["Compendium.sw5e.classfeatures.4UOgxzr83vFuUash"]
|
||||
}
|
||||
},
|
||||
"light-domain": {
|
||||
"label": "Light Domain",
|
||||
"source": "PHB pg. 60",
|
||||
"features": {}
|
||||
},
|
||||
"nature-domain": {
|
||||
"label": "Nature Domain",
|
||||
"source": "PHB pg. 61",
|
||||
"features": {}
|
||||
},
|
||||
"order-domain": {
|
||||
"label": "Order Domain",
|
||||
"source": "GGR pg. 25",
|
||||
"features": {}
|
||||
},
|
||||
"solidarity-domain": {
|
||||
"label": "Solidarity Domain",
|
||||
"source": "PS:A pg. 24",
|
||||
"features": {}
|
||||
},
|
||||
"strength-domain": {
|
||||
"label": "Strength Domain",
|
||||
"source": "PS:A pg. 25",
|
||||
"features": {}
|
||||
},
|
||||
"tempest-domain": {
|
||||
"label": "Tempest Domain",
|
||||
"source": "PHB pg. 62",
|
||||
"features": {}
|
||||
},
|
||||
"trickery-domain": {
|
||||
"label": "Trickery Domain",
|
||||
"source": "PHB pg. 62",
|
||||
"features": {}
|
||||
},
|
||||
"war-domain": {
|
||||
"label": "War Domain",
|
||||
"source": "PHB pg. 63",
|
||||
"features": {}
|
||||
},
|
||||
"zeal-domain": {
|
||||
"label": "Zeal Domain",
|
||||
"source": "PS:A pg. 28",
|
||||
"features": {}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.x637K2Icp2ZFM1TB", "Compendium.sw5e.classfeatures.v4gKwLhAq9vuqza7"],
|
||||
"2": ["Compendium.sw5e.classfeatures.YpiLQEKGalROn7iJ"],
|
||||
"5": ["Compendium.sw5e.classfeatures.NMy4piwXIpLjYbRE"],
|
||||
"10": ["Compendium.sw5e.classfeatures.eVXqHn0ojWrEuYGU"]
|
||||
},
|
||||
},
|
||||
"druid": {
|
||||
"subclasses": {
|
||||
"circle-of-dreams": {
|
||||
"label": "Circle of Dreams",
|
||||
"source": "XGE pg. 22",
|
||||
"features": {}
|
||||
},
|
||||
"circle-of-the-land": {
|
||||
"label": "Circle of the Land",
|
||||
"source": "PHB pg. 68",
|
||||
"features": {
|
||||
"2": ["Compendium.sw5e.classfeatures.lT8GsPOPgRzDC3QJ", "Compendium.sw5e.classfeatures.wKdRtFsvGfMKQHLY"],
|
||||
"3": ["Compendium.sw5e.classfeatures.YiK59gWSlcQ6Mbdz"],
|
||||
"6": ["Compendium.sw5e.classfeatures.3FB25qKxmkmxcxuC"],
|
||||
"10": ["Compendium.sw5e.classfeatures.OTvrJSJSUgAwXrWX"],
|
||||
"14": ["Compendium.sw5e.classfeatures.EuX1kJNIw1F68yus"]
|
||||
}
|
||||
},
|
||||
"circle-of-the-moon": {
|
||||
"label": "Circle of the Moon",
|
||||
"source": "PHB pg. 69",
|
||||
"features": {}
|
||||
},
|
||||
"circle-of-the-shepherd": {
|
||||
"label": "Circle of the Shepherd",
|
||||
"source": "XGE pg. 23",
|
||||
"features": {}
|
||||
},
|
||||
"circle-of-spores": {
|
||||
"label": "Circle of Spores",
|
||||
"source": "GGR pg. 26",
|
||||
"features": {}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.LzJ5ayHt0OlSVGxi", "Compendium.sw5e.classfeatures.i6tPm3FNK13Ftc9v"],
|
||||
"2": ["Compendium.sw5e.classfeatures.swK0r5TOIxredxWS", "Compendium.sw5e.classfeatures.u6Du2P9s81SWuGbi"],
|
||||
"18": ["Compendium.sw5e.classfeatures.cVDEQo0ow1WJT7Wl", "Compendium.sw5e.classfeatures.xvgPu1O57DgXCM86"],
|
||||
"20": ["Compendium.sw5e.classfeatures.ip4bvmGoz3qkoqes"]
|
||||
},
|
||||
},
|
||||
"fighter": {
|
||||
"subclasses": {
|
||||
"arcane-archer": {
|
||||
"label": "Arcane Archer",
|
||||
"source": "XGE pg. 28",
|
||||
"features": {}
|
||||
},
|
||||
"banneret": {
|
||||
"label": "Banneret",
|
||||
"source": "SCAG pg. 128",
|
||||
"features": {}
|
||||
},
|
||||
"battle-master": {
|
||||
"label": "Battle Master",
|
||||
"source": "PHB pg. 73",
|
||||
"features": {}
|
||||
},
|
||||
"cavalier": {
|
||||
"label": "Cavalier",
|
||||
"source": "XGE pg. 30",
|
||||
"features": {}
|
||||
},
|
||||
"champion": {
|
||||
"label": "Champion",
|
||||
"source": "PHB pg. 72",
|
||||
"features": {
|
||||
"3": ["Compendium.sw5e.classfeatures.YgLQV1O849wE5TgM"],
|
||||
"7": ["Compendium.sw5e.classfeatures.dHu1yzIjD38BvGGd"],
|
||||
"11": ["Compendium.sw5e.classfeatures.kYJsED0rqqqUcgKz"],
|
||||
"15": ["Compendium.sw5e.classfeatures.aVKH6TLn1AG9hPSA"],
|
||||
"18": ["Compendium.sw5e.classfeatures.ipG5yx1tRNmeJfSH"]
|
||||
}
|
||||
},
|
||||
"echo-knight": {
|
||||
"label": "Echo Knight",
|
||||
"source": "EGW pg. 183",
|
||||
"features": {}
|
||||
},
|
||||
"eldritch-knight": {
|
||||
"label": "Eldritch Knight",
|
||||
"source": "PHB pg. 74",
|
||||
"features": {}
|
||||
},
|
||||
"samurai": {
|
||||
"label": "Samurai",
|
||||
"source": "XGE pg. 31",
|
||||
"features": {}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.fbExzwNwEAl2kW9c", "Compendium.sw5e.classfeatures.nTjmWbyHweXuIqwc"],
|
||||
"2": ["Compendium.sw5e.classfeatures.xF1VTcJ3AdkbTsdQ"],
|
||||
"3": ["Compendium.sw5e.classfeatures.ax8M0X0q1GGWM26j"],
|
||||
"5": ["Compendium.sw5e.classfeatures.q9g1MLXuLZyxjQMg"],
|
||||
"9": ["Compendium.sw5e.classfeatures.653ZHbNcmm7ZGXbw"]
|
||||
},
|
||||
},
|
||||
"monk": {
|
||||
"subclasses": {
|
||||
"way-of-the-cobalt-soul": {
|
||||
"label": "Way of the Cobalt Soul",
|
||||
"source": "TCS pg. 104",
|
||||
"features": {}
|
||||
},
|
||||
"way-of-the-drunken-master": {
|
||||
"label": "Way of the Drunken Master",
|
||||
"source": "XGE pg. 33",
|
||||
"features": {}
|
||||
},
|
||||
"way-of-the-elements": {
|
||||
"label": "Way of the Four Elements",
|
||||
"source": "PHB pg. 80",
|
||||
"features": {}
|
||||
},
|
||||
"way-of-the-kensei": {
|
||||
"label": "Way of the Kensei",
|
||||
"source": "XGE pg. 34",
|
||||
"features": {}
|
||||
},
|
||||
"way-of-the-long-death": {
|
||||
"label": "Way of the Long Death",
|
||||
"source": "SCAG pg. 130",
|
||||
"features": {}
|
||||
},
|
||||
"way-of-the-open-hand": {
|
||||
"label": "Way of the Open Hand",
|
||||
"source": "PHB pg. 79",
|
||||
"features": {
|
||||
"3": ["Compendium.sw5e.classfeatures.iQxLNydNLlCHNKbp"],
|
||||
"6": ["Compendium.sw5e.classfeatures.Q7mOdk4b1lgjcptF"],
|
||||
"11": ["Compendium.sw5e.classfeatures.rBDZLatuoolT2FUW"],
|
||||
"17": ["Compendium.sw5e.classfeatures.h1gM8SH3BNRtFevE"]
|
||||
}
|
||||
},
|
||||
"way-of-the-shadow": {
|
||||
"label": "Way of Shadow",
|
||||
"source": "PHB pg. 80",
|
||||
"features": {}
|
||||
},
|
||||
"way-of-the-sun-soul": {
|
||||
"label": "Way of the Sun Soul",
|
||||
"source": "XGE pg. 35; SCAG pg. 131",
|
||||
"features": {}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.UAvV7N7T4zJhxdfI", "Compendium.sw5e.classfeatures.l50hjTxO2r0iecKw"],
|
||||
"2": ["Compendium.sw5e.classfeatures.10b6z2W1txNkrGP7", "Compendium.sw5e.classfeatures.7vSrGc0MP5Vzm9Ac"],
|
||||
"3": ["Compendium.sw5e.classfeatures.rtpQdX77dYWbDIOH", "Compendium.sw5e.classfeatures.mzweVbnsJPQiVkAe"],
|
||||
"4": ["Compendium.sw5e.classfeatures.KQz9bqxVkXjDl8gK"],
|
||||
"5": ["Compendium.sw5e.classfeatures.XogoBnFWmCAHXppo", "Compendium.sw5e.classfeatures.pvRc6GAu1ok6zihC"],
|
||||
"6": ["Compendium.sw5e.classfeatures.7flZKruSSu6dHg6D"],
|
||||
"7": ["Compendium.sw5e.classfeatures.a4P4DNMmH8CqSNkC", "Compendium.sw5e.classfeatures.ZmC31XKS4YNENnoc"],
|
||||
"10": ["Compendium.sw5e.classfeatures.bqWA7t9pDELbNRkp"],
|
||||
"13": ["Compendium.sw5e.classfeatures.XjuGBeB8Y0C3A5D4"],
|
||||
"14": ["Compendium.sw5e.classfeatures.7D2EkLdISwShEDlN"],
|
||||
"15": ["Compendium.sw5e.classfeatures.gDH8PMrKvLHaNmEI"],
|
||||
"18": ["Compendium.sw5e.classfeatures.3jwFt3hSqDswBlOH"],
|
||||
"20": ["Compendium.sw5e.classfeatures.mQNPg89YIs7g5tG4"]
|
||||
},
|
||||
},
|
||||
"paladin": {
|
||||
"subclasses": {
|
||||
"oath-of-the-ancients": {
|
||||
"label": "Oath of the Ancients",
|
||||
"source": "PHB pg. 86",
|
||||
"features": {}
|
||||
},
|
||||
"oath-of-conquest": {
|
||||
"label": "Oath of Conquest",
|
||||
"source": "SCAG pg. 128",
|
||||
"features": {}
|
||||
},
|
||||
"oath-of-the-crown": {
|
||||
"label": "Oath of the Crown",
|
||||
"source": "SCAG pg. 132",
|
||||
"features": {}
|
||||
},
|
||||
"oath-of-devotion": {
|
||||
"label": "Oath of Devotion",
|
||||
"source": "PHB pg. 85",
|
||||
"features": {
|
||||
"3": ["Compendium.sw5e.powers.xmDBqZhRVrtLP8h2", "Compendium.sw5e.powers.gvdA9nPuWLck4tBl"],
|
||||
"5": ["Compendium.sw5e.powers.F0GsG0SJzsIOacwV", "Compendium.sw5e.powers.CylBa7jR8DSbo8Z3"],
|
||||
"9": ["Compendium.sw5e.powers.ZU9d6woBdUP8pIPt", "Compendium.sw5e.powers.15Fa6q1nH27XfbR8"],
|
||||
"13": ["Compendium.sw5e.powers.da0a1t2FqaTjRZGT", "Compendium.sw5e.powers.TgHsuhNasPbhu8MO"],
|
||||
"17": ["Compendium.sw5e.powers.d54VDyFulD9xxY7J", "Compendium.sw5e.powers.5e1xTohkzqFqbYH4"]
|
||||
}
|
||||
},
|
||||
"oathbreaker": {
|
||||
"label": "Oathbreaker",
|
||||
"source": "DMG pg. 97",
|
||||
"features": {}
|
||||
},
|
||||
"oath-of-redemption": {
|
||||
"label": "Oath of Redemption",
|
||||
"source": "XGE pg. 38",
|
||||
"features": {}
|
||||
},
|
||||
"oath-of-vengeance": {
|
||||
"label": "Oath of Vengeance",
|
||||
"source": "PHB pg. 87",
|
||||
"features": {}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.E8ozg8avUVOX9N7u", "Compendium.sw5e.classfeatures.OdrvL3afwLOPeuYZ"],
|
||||
"2": ["Compendium.sw5e.classfeatures.ySMPQ6zNSlvkrl2f", "Compendium.sw5e.classfeatures.fbExzwNwEAl2kW9c", "Compendium.sw5e.classfeatures.ihoQHsmVZlyDbPhX"],
|
||||
"3": ["Compendium.sw5e.classfeatures.dY9yrqkyEDuF0CG2", "Compendium.sw5e.classfeatures.olAqNsUTIef9x8xC"],
|
||||
"5": ["Compendium.sw5e.classfeatures.XogoBnFWmCAHXppo"],
|
||||
"6": ["Compendium.sw5e.classfeatures.carGDhkIdoduTC0I"],
|
||||
"10": ["Compendium.sw5e.classfeatures.nahSkBO6LH4HkpaT"],
|
||||
"11": ["Compendium.sw5e.classfeatures.FAk41RPCTcvCk6KI"],
|
||||
"14": ["Compendium.sw5e.classfeatures.U7BIPVPsptBmwsnV"]
|
||||
},
|
||||
},
|
||||
"ranger": {
|
||||
"subclasses": {
|
||||
"beast-master": {
|
||||
"label": "Beast Master",
|
||||
"source": "PHB pg. 93",
|
||||
"features": {}
|
||||
},
|
||||
"gloom-stalker": {
|
||||
"label": "Gloom Stalker",
|
||||
"source": "XGE pg. 41",
|
||||
"features": {}
|
||||
},
|
||||
"horizon-walker": {
|
||||
"label": "Horizon Walker",
|
||||
"source": "XGE pg. 42",
|
||||
"features": {}
|
||||
},
|
||||
"hunter": {
|
||||
"label": "Hunter",
|
||||
"source": "PHB pg. 93",
|
||||
"features": {
|
||||
"3": ["Compendium.sw5e.classfeatures.wrxIW5sDfmGr3u5s"],
|
||||
"7": ["Compendium.sw5e.classfeatures.WgQrqjmeyMqDzVt3"],
|
||||
"11": ["Compendium.sw5e.classfeatures.7zlTRRXT1vWSBGjX"],
|
||||
"15": ["Compendium.sw5e.classfeatures.a0Sq88dgnREcIMfl"]
|
||||
}
|
||||
},
|
||||
"monster-slayer": {
|
||||
"label": "Monster Slayer",
|
||||
"source": "XGE pg. 43",
|
||||
"features": {}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.4Vpj9vCOB37GtXk6", "Compendium.sw5e.classfeatures.8fbZt2Qh7ZttwIan"],
|
||||
"2": ["Compendium.sw5e.classfeatures.fbExzwNwEAl2kW9c", "Compendium.sw5e.classfeatures.u6xV3Ki3TXRrD7zg"],
|
||||
"3": ["Compendium.sw5e.classfeatures.1dJHU48yNqn3lcfx", "Compendium.sw5e.classfeatures.kaHcUGiwi8AtfZIm"],
|
||||
"5": ["Compendium.sw5e.classfeatures.XogoBnFWmCAHXppo"],
|
||||
"8": ["Compendium.sw5e.classfeatures.C5fzaOBc6HxyOWRn"],
|
||||
"10": ["Compendium.sw5e.classfeatures.r0unvWK0lPsDthDx"],
|
||||
"14": ["Compendium.sw5e.classfeatures.DhU2dWCNnX78TstR"],
|
||||
"18": ["Compendium.sw5e.classfeatures.QBVmY56RMQuh6C8h"],
|
||||
"20": ["Compendium.sw5e.classfeatures.3CaP1vFHVR8LgHjx"]
|
||||
},
|
||||
},
|
||||
"rogue": {
|
||||
"subclasses": {
|
||||
"arcane-trickster": {
|
||||
"label": "Arcane Trickster",
|
||||
"source": "PHB pg. 97",
|
||||
"features": {}
|
||||
},
|
||||
"assassin": {
|
||||
"label": "Assassin",
|
||||
"source": "PHB pg. 97",
|
||||
"features": {}
|
||||
},
|
||||
"inquisitive": {
|
||||
"label": "Inquisitive",
|
||||
"source": "XGE pg. 45",
|
||||
"features": {}
|
||||
},
|
||||
"mastermind": {
|
||||
"label": "Mastermind",
|
||||
"source": "XGE pg. 46; SCAG pg. 135",
|
||||
"features": {}
|
||||
},
|
||||
"scout": {
|
||||
"label": "Scout",
|
||||
"source": "XGE pg. 47",
|
||||
"features": {}
|
||||
},
|
||||
"swashbuckler": {
|
||||
"label": "Swashbuckler",
|
||||
"source": "XGE pg. 47; SCAG pg. 135",
|
||||
"features": {}
|
||||
},
|
||||
"thief": {
|
||||
"label": "Thief",
|
||||
"source": "PHB pg. 97",
|
||||
"features": {
|
||||
"3": ["Compendium.sw5e.classfeatures.ga3dt2zrCn2MHK8R", "Compendium.sw5e.classfeatures.FGrbXs6Ku5qxFK5G"],
|
||||
"9": ["Compendium.sw5e.classfeatures.Ei1Oh4UAA2E30jcD"],
|
||||
"13": ["Compendium.sw5e.classfeatures.NqWyHE7Rpw9lyKWu"],
|
||||
"17": ["Compendium.sw5e.classfeatures.LhRm1EeUMvp2EWhV"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.3sYPftQKnbbVnHrh", "Compendium.sw5e.classfeatures.DPN2Gfk8yi1Z5wp7", "Compendium.sw5e.classfeatures.ohwfuwnvuoBWlSQr"],
|
||||
"2": ["Compendium.sw5e.classfeatures.01pcLg6PRu5zGrsb"],
|
||||
"3": ["Compendium.sw5e.classfeatures.80USV8ZFPIahpLd0"],
|
||||
"5": ["Compendium.sw5e.classfeatures.Mm64SKAHJWYecgXS"],
|
||||
"7": ["Compendium.sw5e.classfeatures.a4P4DNMmH8CqSNkC"],
|
||||
"11": ["Compendium.sw5e.classfeatures.YN9xm6MCvse4Y60u"],
|
||||
"14": ["Compendium.sw5e.classfeatures.fjsBk7zxoAbLf8ZI"],
|
||||
"15": ["Compendium.sw5e.classfeatures.V4pwFxlwHtNeB4w9"],
|
||||
"18": ["Compendium.sw5e.classfeatures.L7nJSRosos8sHJH9"],
|
||||
"20": ["Compendium.sw5e.classfeatures.rQhWDaMHMn7iU4f2"]
|
||||
},
|
||||
},
|
||||
"sorcerer": {
|
||||
"subclasses": {
|
||||
"draconic-bloodline": {
|
||||
"label": "Draconic Bloodline",
|
||||
"source": "PHB pg. 102",
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.EZsonMThTNLZq35j", "Compendium.sw5e.classfeatures.MW1ExvBLm8Hg82aA"],
|
||||
"6": ["Compendium.sw5e.classfeatures.x6eEZ9GUsuOcEa3G"],
|
||||
"14": ["Compendium.sw5e.classfeatures.3647zjKSE9zFwOXc"],
|
||||
"18": ["Compendium.sw5e.classfeatures.Gsha4bl0apxqspFy"]
|
||||
}
|
||||
},
|
||||
"divine-soul": {
|
||||
"label": "Divine Soul",
|
||||
"source": "XGE pg. 50",
|
||||
"features": {}
|
||||
},
|
||||
"pyromancer": {
|
||||
"label": "Pyromancer",
|
||||
"source": "PS:K pg. 9",
|
||||
"features": {}
|
||||
},
|
||||
"runechild": {
|
||||
"label": "Runechild",
|
||||
"source": "TCS pg. 103",
|
||||
"features": {}
|
||||
},
|
||||
"shadow-magic": {
|
||||
"label": "Shadow Magic",
|
||||
"source": "XGE pg. 50",
|
||||
"features": {}
|
||||
},
|
||||
"storm-sorcery": {
|
||||
"label": "Storm Sorcery",
|
||||
"source": "XGE pg. 51; SCAG pg. 137",
|
||||
"features": {}
|
||||
},
|
||||
"wild-magic": {
|
||||
"label": "Wild Magic",
|
||||
"source": "PHB pg. 103",
|
||||
"features": {}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.cmRCL9T9UgRYOj1c", "Compendium.sw5e.classfeatures.oygRF3ZjTv2T7z0Y"],
|
||||
"2": ["Compendium.sw5e.classfeatures.LBKChJY5n02Afhnq"],
|
||||
"3": ["Compendium.sw5e.classfeatures.9Uh7uTDNZ04oTJsL"],
|
||||
"20": ["Compendium.sw5e.classfeatures.F2lEKSmOY0NUruzY"]
|
||||
},
|
||||
},
|
||||
"warlock": {
|
||||
"subclasses": {
|
||||
"the-archfey": {
|
||||
"label": "The Archfey",
|
||||
"source": "PHB pg. 108",
|
||||
"features": {}
|
||||
},
|
||||
"the-celestial": {
|
||||
"label": "The Celestial",
|
||||
"source": "XGE pg. 54",
|
||||
"features": {}
|
||||
},
|
||||
"the-fiend": {
|
||||
"label": "The Fiend",
|
||||
"source": "PHB pg. 109",
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.Jv0zu4BtUi8bFCqJ"],
|
||||
"6": ["Compendium.sw5e.classfeatures.OQSb0bO1yDI4aiMx"],
|
||||
"10": ["Compendium.sw5e.classfeatures.9UZ2WjUF2k58CQug"],
|
||||
"14": ["Compendium.sw5e.classfeatures.aCUmlnHlUPHS0rdu"]
|
||||
}
|
||||
},
|
||||
"the-hexblade": {
|
||||
"label": "The Hexblade",
|
||||
"source": "XGE pg. 55",
|
||||
"features": {}
|
||||
},
|
||||
"the-oldone": {
|
||||
"label": "The Great Old One",
|
||||
"source": "PHB pg. 109",
|
||||
"features": {}
|
||||
},
|
||||
"the-undying": {
|
||||
"label": "The Undying",
|
||||
"source": "SCAG pg. 139",
|
||||
"features": {}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.jTXHaK0vvT5DV3uO", "Compendium.sw5e.classfeatures.x6IJZwr6f0SGral7"],
|
||||
"2": ["Compendium.sw5e.classfeatures.8MlxM2nEfE3Q0EVk"],
|
||||
"3": ["Compendium.sw5e.classfeatures.QwgfIpCN8VWfoUtX"],
|
||||
"11": ["Compendium.sw5e.classfeatures.zB77V8BcCJvWVxck"],
|
||||
"13": ["Compendium.sw5e.classfeatures.HBn6FXLz7Eiudz0V"],
|
||||
"15": ["Compendium.sw5e.classfeatures.knDZR4l4QfLTKinm"],
|
||||
"17": ["Compendium.sw5e.classfeatures.vMxJQEKeK6WwZFaF"],
|
||||
"20": ["Compendium.sw5e.classfeatures.0C04rwyvoknvFYiy"]
|
||||
},
|
||||
},
|
||||
"wizard": {
|
||||
"subclasses": {
|
||||
"school-of-abjuration": {
|
||||
"label": "School of Abjuration",
|
||||
"source": "PHB pg. 115",
|
||||
"features": {}
|
||||
},
|
||||
"school-of-bladesinging": {
|
||||
"label": "School of Bladesinging",
|
||||
"source": "SCAG pg. 141",
|
||||
"features": {}
|
||||
},
|
||||
"school-of-chronurgy-magic": {
|
||||
"label": "School of Chronurgy Magic",
|
||||
"source": "EGW pg. 185",
|
||||
"features": {}
|
||||
},
|
||||
"school-of-conjuration": {
|
||||
"label": "School of Conjuration",
|
||||
"source": "PHB pg. 116",
|
||||
"features": {}
|
||||
},
|
||||
"school-of-divination": {
|
||||
"label": "School of Divination",
|
||||
"source": "PHB pg. 116",
|
||||
"features": {}
|
||||
},
|
||||
"school-of-enchantment": {
|
||||
"label": "School of Enchantment",
|
||||
"source": "PHB pg. 117",
|
||||
"features": {}
|
||||
},
|
||||
"school-of-evocation": {
|
||||
"label": "School of Evocation",
|
||||
"source": "PHB pg. 117",
|
||||
"features": {
|
||||
"2": ["Compendium.sw5e.classfeatures.7uzJ2JkmsdRGLra3", "Compendium.sw5e.classfeatures.6VBXkjjBgjSpNElh"],
|
||||
"6": ["Compendium.sw5e.classfeatures.evEWCpE5MYgr5RRW"],
|
||||
"10": ["Compendium.sw5e.classfeatures.7O85kj6uDEG5NzUE"],
|
||||
"14": ["Compendium.sw5e.classfeatures.VUtSLeCzFubGXmGx"]
|
||||
}
|
||||
},
|
||||
"school-of-graviturgy-magic": {
|
||||
"label": "School of Graviturgy Magic",
|
||||
"source": "EGW pg. 185",
|
||||
"features": {}
|
||||
},
|
||||
"school-of-illusion": {
|
||||
"label": "School of Illusion",
|
||||
"source": "PHB pg. 118",
|
||||
"features": {}
|
||||
},
|
||||
"school-of-necromancy": {
|
||||
"label": "School of Necromancy",
|
||||
"source": "PHB pg. 118",
|
||||
"features": {}
|
||||
},
|
||||
"school-of-transmutation": {
|
||||
"label": "School of Transmutation",
|
||||
"source": "PHB pg. 119",
|
||||
"features": {}
|
||||
},
|
||||
"school-of-war-magic": {
|
||||
"label": "School of War Magic",
|
||||
"source": "XGE pg. 59",
|
||||
"features": {}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.gbNo5eVPaqr8IVKL", "Compendium.sw5e.classfeatures.e0uTcFPpgxjIyUW9"],
|
||||
"2": ["Compendium.sw5e.classfeatures.AEWr9EMxy5gj4ZFT"],
|
||||
"18": ["Compendium.sw5e.classfeatures.JfFfHTeIszx1hNRx"],
|
||||
"20": ["Compendium.sw5e.classfeatures.nUrZDi6QN1YjwAr6", "Compendium.sw5e.classfeatures.31bKbWe9ZGVLEns6"]
|
||||
},
|
||||
}
|
||||
*/
|
||||
};
|
||||
"berserker": {
|
||||
"archetypes": {
|
||||
"addicted-approach": {
|
||||
"label": "Addicted Approach",
|
||||
"source": "PHB",
|
||||
"features": {
|
||||
"3": ["Compendium.sw5e.archetypes.PCwepUZqHYlxr4T3", "Compendium.sw5e.classfeatures.efOA0nrvUqKJOOeP", "Compendium.sw5e.classfeatures.nT6AfpQXSZ4IeChO"],
|
||||
"6": ["Compendium.sw5e.classfeatures.GbJDWzoTKWL7sEpR"],
|
||||
"10": ["Compendium.sw5e.classfeatures.3jqPPd5qJBBnonPw"],
|
||||
"14": ["Compendium.sw5e.classfeatures.xzRNHB2M2HdOZzr7"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"1": ["Compendium.sw5e.classfeatures.IDt6duVrBzL8euRc", "Compendium.sw5e.classfeatures.rPOLy96fW96N2UPg"],
|
||||
"2": ["Compendium.sw5e.classfeatures.DlYiCiG39R0goG9u", "Compendium.sw5e.classfeatures.FbSpxpXm1xONn0na", "Compendium.sw5e.classfeatures.KDiQ8O2evV2Z1YTo", "Compendium.sw5e.classfeatures.Q1JyHnVs9iIEBs91", "Compendium.sw5e.classfeatures.ROdICoWR82v6A2Rf", "Compendium.sw5e.classfeatures.cdCx5Hvq2rYRMzRj", "Compendium.sw5e.classfeatures.dTdbL8dypa6BAdnP", "Compendium.sw5e.classfeatures.h1uDhP1tEOuvjRw6", "Compendium.sw5e.classfeatures.hMiA075EKBBOL2cv", "Compendium.sw5e.classfeatures.sgJdISZMtwv08WPJ", "Compendium.sw5e.classfeatures.v4CZJ8LBMl5PYZCO"],
|
||||
"3": ["Compendium.sw5e.classfeatures.kzwSN9SabKgWZZvU"],
|
||||
"4": ["Compendium.sw5e.classfeatures.9oyy0MMqEws2qoil"],
|
||||
"5": ["Compendium.sw5e.classfeatures.dPWmHiWmpnhHTsgd"],
|
||||
"7": ["Compendium.sw5e.classfeatures.Cid5ujSdnooH0vMm", "Compendium.sw5e.classfeatures.WTBhKJgkArQI3Tgv", "Compendium.sw5e.classfeatures.oiT3TJxzRWPKAX9E", "Compendium.sw5e.classfeatures.pMEmIt3NWThbee8k", "Compendium.sw5e.classfeatures.qWV5YogZcpZ3Y3xj"],
|
||||
"9": ["Compendium.sw5e.classfeatures.bi8G8H5Ur9B3BAyM"],
|
||||
"11": ["Compendium.sw5e.classfeatures.eWbTifdXJvvXT4CV"],
|
||||
"13": ["Compendium.sw5e.classfeatures.Hg8zYh1iXL0DGUVq", "Compendium.sw5e.classfeatures.QRnYiJmRk18ekE9v", "Compendium.sw5e.classfeatures.sfEr8ZBFVddlfLeF", "Compendium.sw5e.classfeatures.yGC9VzT840qQWxca"],
|
||||
"15": ["Compendium.sw5e.classfeatures.YHPUv9lN3nCapAgP"],
|
||||
"18": ["Compendium.sw5e.classfeatures.fFKNqUAWh0ZOhvRc"],
|
||||
"20": ["Compendium.sw5e.classfeatures.IWTDawTUf79eWbEV"]
|
||||
}
|
||||
},
|
||||
"consular": {
|
||||
"features": {
|
||||
"20": ["Compendium.sw5e.classfeatures.gSGeitc98ItAwhfF"]
|
||||
}
|
||||
}
|
||||
};
|
|
@ -252,7 +252,9 @@ SW5E.consumableTypes = {
|
|||
"medpac": "SW5E.ConsumableMedpac",
|
||||
"technology": "SW5E.ConsumableTechnology",
|
||||
"ammunition": "SW5E.ConsumableAmmunition",
|
||||
"trinket": "SW5E.ConsumableTrinket"
|
||||
"trinket": "SW5E.ConsumableTrinket",
|
||||
"force": "SW5E.ConsumableForce",
|
||||
"tech": "SW5E.ConsumableTech"
|
||||
};
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
@ -488,7 +490,11 @@ SW5E.powerScalingModes = {
|
|||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
// Weapon Types
|
||||
|
||||
/**
|
||||
* Define the set of types which a weapon item can take
|
||||
* @type {Object}
|
||||
*/
|
||||
SW5E.weaponTypes = {
|
||||
"simpleVW": "SW5E.WeaponSimpleVW",
|
||||
"simpleB": "SW5E.WeaponSimpleB",
|
||||
|
@ -500,7 +506,6 @@ SW5E.weaponTypes = {
|
|||
"improv": "SW5E.WeaponImprov",
|
||||
"ammo": "SW5E.WeaponAmmo",
|
||||
"siege": "SW5E.WeaponSiege"
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -182,8 +182,16 @@ export default class Item5e extends Item {
|
|||
|
||||
// Species Items
|
||||
else if ( itemData.type === "species" ) {
|
||||
//labels.species = C.species[data.species];
|
||||
}
|
||||
// labels.species = C.species[data.species];
|
||||
}
|
||||
// Archetype Items
|
||||
else if ( itemData.type === "archetype" ) {
|
||||
// labels.archetype = C.archetype[data.archetype];
|
||||
}
|
||||
// Class Feature Items
|
||||
else if ( itemData.type === "classfeature" ) {
|
||||
|
||||
}
|
||||
|
||||
// Equipment Items
|
||||
else if ( itemData.type === "equipment" ) {
|
||||
|
|
|
@ -180,7 +180,14 @@ export default class ItemSheet5e extends ItemSheet {
|
|||
else if ( item.type === "species" ) {
|
||||
|
||||
}
|
||||
|
||||
else if ( item.type === "archetype" ) {
|
||||
|
||||
}
|
||||
|
||||
else if ( item.type === "classfeature" ) {
|
||||
|
||||
}
|
||||
|
||||
// Action type
|
||||
if ( item.data.actionType ) {
|
||||
props.push(CONFIG.SW5E.itemActionTypes[item.data.actionType]);
|
||||
|
|
|
@ -250,3 +250,33 @@ const _migrateRemoveDeprecated = function(ent, updateData) {
|
|||
updateData[`data.${parts.join(".")}`] = null;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
|
||||
/**
|
||||
* A general tool to purge flags from all entities in a Compendium pack.
|
||||
* @param {Compendium} pack The compendium pack to clean
|
||||
* @private
|
||||
*/
|
||||
export async function purgeFlags(pack) {
|
||||
const cleanFlags = (flags) => {
|
||||
const flags5e = flags.sw5e || null;
|
||||
return flags5e ? {sw5e: flags5e} : {};
|
||||
};
|
||||
await pack.configure({locked: false});
|
||||
const content = await pack.getContent();
|
||||
for ( let entity of content ) {
|
||||
const update = {_id: entity.id, flags: cleanFlags(entity.data.flags)};
|
||||
if ( pack.entity === "Actor" ) {
|
||||
update.items = entity.data.items.map(i => {
|
||||
i.flags = cleanFlags(i.flags);
|
||||
return i;
|
||||
})
|
||||
}
|
||||
await pack.updateEntity(update, {recursive: false});
|
||||
console.log(`Purged flags from ${entity.name}`);
|
||||
}
|
||||
await pack.configure({locked: true});
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ export const preloadHandlebarsTemplates = async function() {
|
|||
"systems/sw5e/templates/actors/parts/actor-inventory.html",
|
||||
"systems/sw5e/templates/actors/parts/actor-features.html",
|
||||
"systems/sw5e/templates/actors/parts/actor-powerbook.html",
|
||||
"systems/sw5e/templates/actors/parts/actor-effects.html",
|
||||
|
||||
// Item Sheet Partials
|
||||
"systems/sw5e/templates/items/parts/item-action.html",
|
||||
|
|
BIN
packs/Icons/Archetypes/Acquisitions Practice.webp
Normal file
After Width: | Height: | Size: 8.1 KiB |
BIN
packs/Icons/Archetypes/Addicted Approach.webp
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
packs/Icons/Archetypes/Adept Specialist.webp
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
packs/Icons/Archetypes/Aing-Tii Order.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
packs/Icons/Archetypes/Armormech Engineering.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Armstech Engineering.webp
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
packs/Icons/Archetypes/Artificer Engineering.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Artillerist Technique.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
packs/Icons/Archetypes/Assault Specialist.webp
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
packs/Icons/Archetypes/Astrotech Engineering.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
packs/Icons/Archetypes/Ataru Form.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
packs/Icons/Archetypes/Audiotech Engineering.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Ballistic Approach.webp
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
packs/Icons/Archetypes/Beguiler Practice.webp
Normal file
After Width: | Height: | Size: 9.2 KiB |
BIN
packs/Icons/Archetypes/Biochem Engineering.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
packs/Icons/Archetypes/Blademaster Specialist.webp
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
packs/Icons/Archetypes/Bloodstorm Approach.webp
Normal file
After Width: | Height: | Size: 9 KiB |
BIN
packs/Icons/Archetypes/Brawling Approach.webp
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
packs/Icons/Archetypes/Bulwark Technique.webp
Normal file
After Width: | Height: | Size: 9.5 KiB |
BIN
packs/Icons/Archetypes/Chef Pursuit.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Crimson Order.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
packs/Icons/Archetypes/Cybertech Engineering.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Cyclone Approach.webp
Normal file
After Width: | Height: | Size: 9.8 KiB |
BIN
packs/Icons/Archetypes/Deadeye Technique.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
packs/Icons/Archetypes/Demolitions Specialist.webp
Normal file
After Width: | Height: | Size: 9.8 KiB |
BIN
packs/Icons/Archetypes/Disabling Practice.webp
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
packs/Icons/Archetypes/Doctor Pursuit.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Echani Order.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
packs/Icons/Archetypes/Enhancement Specialist.webp
Normal file
After Width: | Height: | Size: 9 KiB |
BIN
packs/Icons/Archetypes/Explorer Pursuit.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Frenzied Approach.webp
Normal file
After Width: | Height: | Size: 8.9 KiB |
BIN
packs/Icons/Archetypes/Gadgeteer Engineering.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Gambler Pursuit.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Geneticist Pursuit.webp
Normal file
After Width: | Height: | Size: 9.4 KiB |
BIN
packs/Icons/Archetypes/Gunslinger Practice.webp
Normal file
After Width: | Height: | Size: 9.2 KiB |
BIN
packs/Icons/Archetypes/Heavy Weapons Specialist.webp
Normal file
After Width: | Height: | Size: 9.8 KiB |
BIN
packs/Icons/Archetypes/Hunter Technique.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
packs/Icons/Archetypes/Illusionist Technique.webp
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
packs/Icons/Archetypes/Industrial Approach.webp
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
packs/Icons/Archetypes/Inquisitor Technique.webp
Normal file
After Width: | Height: | Size: 9.2 KiB |
BIN
packs/Icons/Archetypes/Jal Shey Order.webp
Normal file
After Width: | Height: | Size: 9.3 KiB |
BIN
packs/Icons/Archetypes/Jar'Kai Form.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Juggernaut Approach.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
packs/Icons/Archetypes/Juyo Vapaad Form.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Kage Order.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
packs/Icons/Archetypes/Kyuzo Order.webp
Normal file
After Width: | Height: | Size: 9.3 KiB |
BIN
packs/Icons/Archetypes/Lethality Practice.webp
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
packs/Icons/Archetypes/Makashi Form.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Marauder Approach.webp
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
packs/Icons/Archetypes/Mastermind Technique.webp
Normal file
After Width: | Height: | Size: 9 KiB |
BIN
packs/Icons/Archetypes/Matukai Order.webp
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
packs/Icons/Archetypes/Mounted Specialist.webp
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
packs/Icons/Archetypes/Nightsister Order.webp
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
packs/Icons/Archetypes/Niman Form.webp
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
packs/Icons/Archetypes/Path of Aggression.webp
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
packs/Icons/Archetypes/Path of Communion.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
packs/Icons/Archetypes/Path of Etherealness.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Path of Focus.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
packs/Icons/Archetypes/Path of Shadows.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Path of Synthesis.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Path of Tenacity.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
packs/Icons/Archetypes/Path of Witchcraft.webp
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
packs/Icons/Archetypes/Path of the Corsair.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Path of the Forceblade.webp
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
packs/Icons/Archetypes/Performance Practice.webp
Normal file
After Width: | Height: | Size: 9.9 KiB |
BIN
packs/Icons/Archetypes/Politician Pursuit.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
packs/Icons/Archetypes/Praetorian Specialist.webp
Normal file
After Width: | Height: | Size: 8.8 KiB |
BIN
packs/Icons/Archetypes/Precision Approach.webp
Normal file
After Width: | Height: | Size: 8.5 KiB |
BIN
packs/Icons/Archetypes/Predator Technique.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
packs/Icons/Archetypes/Ruffian Practice.webp
Normal file
After Width: | Height: | Size: 7.3 KiB |
BIN
packs/Icons/Archetypes/Saboteur Practice.webp
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
packs/Icons/Archetypes/Sawbones Practice.webp
Normal file
After Width: | Height: | Size: 9.3 KiB |
BIN
packs/Icons/Archetypes/Scrapper Practice.webp
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
packs/Icons/Archetypes/Sharpshooter Practice.webp
Normal file
After Width: | Height: | Size: 9.7 KiB |
BIN
packs/Icons/Archetypes/Shield Specialist.webp
Normal file
After Width: | Height: | Size: 9 KiB |
BIN
packs/Icons/Archetypes/Shien Djem So Form.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
packs/Icons/Archetypes/Shii-Cho Form.webp
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
packs/Icons/Archetypes/Slayer Technique.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
packs/Icons/Archetypes/Slicer Pursuit.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
packs/Icons/Archetypes/Sokan Form.webp
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
packs/Icons/Archetypes/Soresu Form.webp
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
packs/Icons/Archetypes/Stalker Technique.webp
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
packs/Icons/Archetypes/Tactical Specialist.webp
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
packs/Icons/Archetypes/Tactician Pursuit.webp
Normal file
After Width: | Height: | Size: 10 KiB |