Merge pull request #115 from unrealkakeman89/Develop

Develop
This commit is contained in:
CK 2021-01-21 10:51:37 -05:00 committed by GitHub
commit 13234e1c28
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
89 changed files with 1486 additions and 1107 deletions

24
.github/workflows/main.yml vendored Normal file
View file

@ -0,0 +1,24 @@
name: Gulp build and commit updated stylesheets
on:
push:
branches: [master, Develop]
pull_request:
branches: [master, Develop]
jobs:
gulp-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.ref }}
- name: Compile with Gulp
uses: elstudio/actions-js-build/build@v2
- name: Commit changes
uses: elstudio/actions-js-build/commit@v3
with:
commitMessage: Regenerate css

BIN
fonts/EngliBesh-KG3W.ttf Normal file

Binary file not shown.

View file

@ -1,31 +1,28 @@
const gulp = require('gulp');
const less = require('gulp-less');
const gulp = require("gulp");
const less = require("gulp-less");
/* ----------------------------------------- */
/* Compile LESS
/* ----------------------------------------- */
const SW5E_LESS = ["less/**/*.less"];
function compileLESS() {
return gulp.src("less/original/sw5e.less")
.pipe(less())
.pipe(gulp.dest("./"))
return gulp.src("less/original/sw5e.less").pipe(less()).pipe(gulp.dest("./"));
}
function compileGlobalLess() {
return gulp.src("less/update/sw5e-global.less")
.pipe(less())
.pipe(gulp.dest("./"))
return gulp.src("less/update/sw5e-global.less").pipe(less()).pipe(gulp.dest("./"));
}
function compileLightLess() {
return gulp.src("less/update/sw5e-light.less")
.pipe(less())
.pipe(gulp.dest("./"))
return gulp.src("less/update/sw5e-light.less").pipe(less()).pipe(gulp.dest("./"));
}
function compileDarkLess() {
return gulp.src("less/update/sw5e-dark.less")
.pipe(less())
.pipe(gulp.dest("./"))
return gulp.src("less/update/sw5e-dark.less").pipe(less()).pipe(gulp.dest("./"));
}
const css = gulp.series(compileLESS, compileGlobalLess, compileLightLess, compileDarkLess);
/* ----------------------------------------- */
@ -40,8 +37,5 @@ function watchUpdates() {
/* Export Tasks
/* ----------------------------------------- */
exports.default = gulp.series(
gulp.parallel(css),
watchUpdates
);
exports.css = css;
exports.default = css;
gulp.parallel(css), (exports.watch = gulp.series(gulp.parallel(css), watchUpdates));

View file

@ -426,11 +426,6 @@
border: none;
margin-right: 5px;
}
h4 {
margin: 0;
white-space: nowrap;
overflow-x: hidden;
}
}
}
@ -491,4 +486,41 @@
height: 24px;
margin: 2px;
}
}
/* ----------------------------------------- */
/* HUD
/* ----------------------------------------- */
.placeable-hud .control-icon {
box-sizing: content-box;
width: 40px;
flex: 0 0 40px;
margin: 8px 0;
font-size: 28px;
line-height: 40px;
text-align: center;
color: #FBF4F4;
background: rgba(0, 0, 0, 0.6);
box-shadow: 0 0 15px #000;
border: 1px solid #333;
border-radius: 8px;
pointer-events: all;
}
#token-hud .status-effects {
visibility: hidden;
position: absolute;
left: 50px;
top: 0;
display: grid;
padding: 3px;
box-sizing: content-box;
width: 100px;
color: #FBF4F4;
grid-template-columns: 25px 25px 25px 25px;
background: rgba(0, 0, 0, 0.6);
box-shadow: 0 0 15px #000;
border: 1px solid #333;
border-radius: 4px;
pointer-events: all;
}

View file

@ -23,7 +23,7 @@
flex: 1;
margin: 0;
line-height: 36px;
.bungeeInline();
.engli-Besh();
color: @colorOlive;
&:hover {
color: #111;

View file

@ -19,15 +19,15 @@
font-size: @font-size;
font-weight: 400;
}
/* bungee-inline-regular - latin */
/* engli-besh */
@font-face {
font-family: 'Bungee Inline';
font-family: 'Engli-Besh';
font-style: normal;
font-weight: 400;
src: url('./fonts/BungeeInline.ttf');
src: url('./fonts/EngliBesh-KG3W.ttf');
}
.bungeeInline {
font-family: 'Bungee Inline';
.engli-Besh {
font-family: 'Engli-Besh';
font-size: 20px;
font-weight: 400;
}

View file

@ -5,7 +5,7 @@
.dropShadow1();
}
.sw5e.sheet.actor.character {
min-width: 800px;
min-width: 850px;
min-height: 720px;
}
.sw5e.sheet .window-content {
@ -54,7 +54,7 @@
grid-template-rows: 1fr 26px auto;
grid-template-columns: 128px 1fr;
column-gap: 8px;
row-gap: 8px;
grid-row-gap: 8px;
img {
grid-column-start: 1;
@ -683,7 +683,7 @@
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 16px;
row-gap: 8px;
grid-row-gap: 8px;
input,
select {
@ -715,7 +715,7 @@
}
.languages {
grid-column-end: span 2;
grid-column-end: span 1;
label {
&:hover {
cursor: pointer;
@ -745,7 +745,7 @@
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 4px;
row-gap: 4px;
grid-row-gap: 4px;
strong {
font-size: 13px;
@ -994,7 +994,7 @@
}
&.limited {
grid-template-rows: 144px auto;
row-gap: 8px;
grid-row-gap: 8px;
header {
grid-template-rows: 1fr;
}

View file

@ -48,6 +48,12 @@
font-weight: 400;
src: url('./fonts/Aurebesh.ttf');
}
@font-face {
font-family: 'Engli-Besh';
font-style: normal;
font-weight: 400;
src: url('./fonts/EngliBesh-KG3W.ttf');
}
@import "_variables.less";
html {

View file

@ -92,8 +92,14 @@ export default class Actor5e extends Actor {
init.total = init.mod + init.prof + init.bonus;
// Prepare power-casting data
this._computePowercastingDC(this.data);
data.attributes.powerdc = data.attributes.powercasting ? data.abilities[data.attributes.powercasting].dc : 10;
this._computePowercastingProgression(this.data);
// Compute owned item attributes which depend on prepared Actor data
this.items.forEach(item => {
item.getSaveDC();
item.getAttackToHit();
});
}
/* -------------------------------------------- */
@ -168,7 +174,10 @@ export default class Actor5e extends Actor {
}
// Load item data for all identified features
const features = await Promise.all(ids.map(id => fromUuid(id)));
const features = [];
for ( let id of ids ) {
features.push(await fromUuid(id));
}
// Class powers should always be prepared
for ( const feature of features ) {
@ -312,19 +321,22 @@ export default class Actor5e extends Actor {
const joat = flags.jackOfAllTrades;
const observant = flags.observantFeat;
const skillBonus = Number.isNumeric(bonuses.skill) ? parseInt(bonuses.skill) : 0;
let round = Math.floor;
for (let [id, skl] of Object.entries(data.skills)) {
skl.value = parseFloat(skl.value || 0);
skl.value = Math.clamped(Number(skl.value).toNearest(0.5), 0, 2) ?? 0;
let round = Math.floor;
// Apply Remarkable Athlete or Jack of all Trades
let multi = skl.value;
if ( athlete && (skl.value === 0) && feats.remarkableAthlete.abilities.includes(skl.ability) ) {
multi = 0.5;
// Remarkable
if ( athlete && (skl.value < 0.5) && feats.remarkableAthlete.abilities.includes(skl.ability) ) {
skl.value = 0.5;
round = Math.ceil;
}
if ( joat && (skl.value === 0 ) ) multi = 0.5;
// Retain the maximum skill proficiency when skill proficiencies are merged
// Jack of All Trades
if ( joat && (skl.value < 0.5) ) {
skl.value = 0.5;
}
// Polymorph Skill Proficiencies
if ( originalSkills ) {
skl.value = Math.max(skl.value, originalSkills[id].value);
}
@ -332,7 +344,7 @@ export default class Actor5e extends Actor {
// Compute modifier
skl.bonus = checkBonus + skillBonus;
skl.mod = data.abilities[skl.ability].mod;
skl.prof = round(multi * data.attributes.prof);
skl.prof = round(skl.value * data.attributes.prof);
skl.total = skl.mod + skl.prof + skl.bonus;
// Compute passive bonus
@ -343,23 +355,6 @@ export default class Actor5e extends Actor {
/* -------------------------------------------- */
/**
* Compute the powercasting DC for all item abilities which use power DC scaling
* @param {object} actorData The actor data being prepared
* @private
*/
_computePowercastingDC(actorData) {
// Compute the powercasting DC
const data = actorData.data;
data.attributes.powerdc = data.attributes.powercasting ? data.abilities[data.attributes.powercasting].dc : 10;
// Compute ability save DCs that depend on the calling actor
this.items.forEach(i => i.getSaveDC());
}
/* -------------------------------------------- */
/**
* Prepare data related to the power-casting capabilities of the Actor
* @private
@ -408,7 +403,7 @@ export default class Actor5e extends Actor {
progression.slot = Math.ceil(caster.data.levels / denom);
}
// EXCEPTION: NPC with an explicit powercaster level
// EXCEPTION: NPC with an explicit power-caster level
if (isNPC && actorData.data.details.powerLevel) {
progression.slot = actorData.data.details.powerLevel;
}
@ -419,9 +414,9 @@ export default class Actor5e extends Actor {
for ( let [n, lvl] of Object.entries(powers) ) {
let i = parseInt(n.slice(-1));
if ( Number.isNaN(i) ) continue;
if ( Number.isNumeric(lvl.override) ) lvl.max = Math.max(parseInt(lvl.override), 1);
if ( Number.isNumeric(lvl.override) ) lvl.max = Math.max(parseInt(lvl.override), 0);
else lvl.max = slots[i-1] || 0;
lvl.value = Math.min(parseInt(lvl.value), lvl.max);
lvl.value = parseInt(lvl.value);
}
// Determine the Actor's pact magic level (if any)
@ -463,8 +458,8 @@ export default class Actor5e extends Actor {
return weight + (q * w);
}, 0);
// [Optional] add Currency Weight
if ( game.settings.get("sw5e", "currencyWeight") ) {
// [Optional] add Currency Weight (for non-transformed actors)
if ( game.settings.get("sw5e", "currencyWeight") && actorData.data.currency ) {
const currency = actorData.data.currency;
const numCoins = Object.values(currency).reduce((val, denom) => val += Math.max(denom, 0), 0);
weight += numCoins / CONFIG.SW5E.encumbrance.currencyPerWeight;
@ -558,43 +553,56 @@ export default class Actor5e extends Actor {
const isNPC = this.data.type === 'npc';
let initial = {};
switch ( itemData.type ) {
case "weapon":
initial["data.equipped"] = isNPC; // NPCs automatically equip weapons
let hasWeaponProf = isNPC; // NPCs automatically have weapon proficiency
if ( !isNPC ) {
const weaponProf = {
"natural": true,
"simpleVW": "sim",
"simpleB": "sim",
"simpleLW": "sim",
"martialVW": "mar",
"martialB": "mar",
"martialLW": "mar"
}[itemData.data?.weaponType];
const actorWeaponProfs = this.data.data.traits?.weaponProf?.value || [];
hasWeaponProf = (weaponProf === true) || actorWeaponProfs.includes(weaponProf);
if ( getProperty(itemData, "data.equipped") === undefined ) {
initial["data.equipped"] = isNPC; // NPCs automatically equip weapons
}
if ( getProperty(itemData, "data.proficient") === undefined ) {
if ( isNPC ) {
initial["data.proficient"] = true; // NPCs automatically have equipment proficiency
} else {
const weaponProf = {
"natural": true,
"simpleVW": "sim",
"simpleB": "sim",
"simpleLW": "sim",
"martialVW": "mar",
"martialB": "mar",
"martialLW": "mar"
}[itemData.data?.weaponType]; // Player characters check proficiency
const actorWeaponProfs = this.data.data.traits?.weaponProf?.value || [];
const hasWeaponProf = (weaponProf === true) || actorWeaponProfs.includes(weaponProf);
initial["data.proficient"] = hasWeaponProf;
}
}
initial["data.proficient"] = hasWeaponProf;
break;
case "equipment":
initial["data.equipped"] = isNPC; // NPCs automatically equip equipment
let hasEquipmentProf = isNPC; // NPCs automatically have equipment proficiency
if ( !isNPC ) {
const armorProf = {
"natural": true,
"clothing": true,
"light": "lgt",
"medium": "med",
"heavy": "hvy",
"shield": "shl"
}[itemData.data?.armor?.type];
const actorArmorProfs = this.data.data.traits?.armorProf?.value || [];
hasEquipmentProf = (armorProf === true) || actorArmorProfs.includes(armorProf);
if ( getProperty(itemData, "data.equipped") === undefined ) {
initial["data.equipped"] = isNPC; // NPCs automatically equip equipment
}
if ( getProperty(itemData, "data.proficient") === undefined ) {
if ( isNPC ) {
initial["data.proficient"] = true; // NPCs automatically have equipment proficiency
} else {
const armorProf = {
"natural": true,
"clothing": true,
"light": "lgt",
"medium": "med",
"heavy": "hvy",
"shield": "shl"
}[itemData.data?.armor?.type]; // Player characters check proficiency
const actorArmorProfs = this.data.data.traits?.armorProf?.value || [];
const hasEquipmentProf = (armorProf === true) || actorArmorProfs.includes(armorProf);
initial["data.proficient"] = hasEquipmentProf;
}
}
initial["data.proficient"] = hasEquipmentProf;
break;
case "power":
initial["data.prepared"] = true; // NPCs automatically prepare powers
initial["data.prepared"] = true; // automatically prepare powers for everyone
break;
}
mergeObject(itemData, initial);
@ -1108,8 +1116,7 @@ export default class Actor5e extends Actor {
// Recover power slots
for ( let [k, v] of Object.entries(data.powers) ) {
if ( !v.max && !v.override ) continue;
updateData[`data.powers.${k}.value`] = v.override || v.max;
updateData[`data.powers.${k}.value`] = Number.isNumeric(v.override) ? v.override : (v.max ?? 0);
}
// Recover pact slots.
@ -1216,10 +1223,10 @@ export default class Actor5e extends Actor {
}
// Get the original Actor data and the new source data
const o = duplicate(this.data);
const o = duplicate(this.toJSON());
o.flags.sw5e = o.flags.sw5e || {};
o.flags.sw5e.transformOptions = {mergeSkills, mergeSaves};
const source = duplicate(target.data);
const source = duplicate(target.toJSON());
// Prepare new data to merge from the source
const d = {
@ -1227,6 +1234,7 @@ export default class Actor5e extends Actor {
name: `${o.name} (${source.name})`, // Append the new shape to your old name
data: source.data, // Get the data model of your new form
items: source.items, // Get the items of your new form
effects: o.effects.concat(source.effects), // Combine active effects from both forms
token: source.token, // New token configuration
img: source.img, // New appearance
permission: o.permission, // Use the original actor permissions
@ -1249,7 +1257,7 @@ export default class Actor5e extends Actor {
// Handle wildcard
if ( source.token.randomImg ) {
const images = await target.getTokenImages();
d.token.img = images[0];
d.token.img = images[Math.floor(Math.random() * images.length)];
}
// Keep Token configurations
@ -1333,7 +1341,7 @@ export default class Actor5e extends Actor {
newTokenData.actorId = newActor.id;
return newTokenData;
});
return canvas.scene.updateEmbeddedEntity("Token", updates);
return canvas.scene?.updateEmbeddedEntity("Token", updates);
}
/* -------------------------------------------- */

View file

@ -33,10 +33,10 @@ export default class ActorSheet5e extends ActorSheet {
static get defaultOptions() {
return mergeObject(super.defaultOptions, {
scrollY: [
".inventory .inventory-list",
".features .inventory-list",
".powerbook .inventory-list",
".effects .inventory-list"
".inventory .group-list",
".features .group-list",
".powerbook .group-list",
".effects .effects-list"
],
tabs: [{navSelector: ".tabs", contentSelector: ".sheet-body", initial: "description"}]
});
@ -119,22 +119,44 @@ export default class ActorSheet5e extends ActorSheet {
/* -------------------------------------------- */
/**
* Prepare the display of movement speed data for the Actor
* @param {object} actorData
* Prepare the display of movement speed data for the Actor*
* @param {object} actorData The Actor data being prepared.
* @param {boolean} [largestPrimary=false] Show the largest movement speed as "primary", otherwise show "walk"
* @returns {{primary: string, special: string}}
* @private
*/
_getMovementSpeed(actorData) {
_getMovementSpeed(actorData, largestPrimary=false) {
const movement = actorData.data.attributes.movement || {};
const speeds = [
// Prepare an array of available movement speeds
let speeds = [
[movement.burrow, `${game.i18n.localize("SW5E.MovementBurrow")} ${movement.burrow}`],
[movement.climb, `${game.i18n.localize("SW5E.MovementClimb")} ${movement.climb}`],
[movement.fly, `${game.i18n.localize("SW5E.MovementFly")} ${movement.fly}` + (movement.hover ? ` (${game.i18n.localize("SW5E.MovementHover")})` : "")],
[movement.swim, `${game.i18n.localize("SW5E.MovementSwim")} ${movement.swim}`]
].filter(s => !!s[0]).sort((a, b) => b[0] - a[0]);
return {
primary: `${movement.walk || 0} ${movement.units}`,
special: speeds.length ? speeds.map(s => s[1]).join(", ") : ""
]
if ( largestPrimary ) {
speeds.push([movement.walk, `${game.i18n.localize("SW5E.MovementWalk")} ${movement.walk}`]);
}
// Filter and sort speeds on their values
speeds = speeds.filter(s => !!s[0]).sort((a, b) => b[0] - a[0]);
// Case 1: Largest as primary
if ( largestPrimary ) {
let primary = speeds.shift();
return {
primary: `${primary ? primary[1] : "0"} ${movement.units}`,
special: speeds.map(s => s[1]).join(", ")
}
}
// Case 2: Walk as primary
else {
return {
primary: `${movement.walk || 0} ${movement.units}`,
special: speeds.length ? speeds.map(s => s[1]).join(", ") : ""
}
}
}
@ -352,7 +374,7 @@ export default class ActorSheet5e extends ActorSheet {
1: '<i class="fas fa-check"></i>',
2: '<i class="fas fa-check-double"></i>'
};
return icons[level];
return icons[level] || icons[0];
}
/* -------------------------------------------- */
@ -597,6 +619,11 @@ export default class ActorSheet5e extends ActorSheet {
itemData = scroll.data;
}
// Ignore certain statuses
if ( itemData.data ) {
["attunement", "equipped", "proficient", "prepared"].forEach(k => delete itemData.data[k]);
}
// Create the owned item as normal
return super._onDropItemCreate(itemData);
}

View file

@ -57,6 +57,9 @@ export default class ActorSheet5eCharacterNew extends ActorSheet5e {
// Experience Tracking
sheetData["disableExperience"] = game.settings.get("sw5e", "disableExperienceTracking");
sheetData["classLabels"] = this.actor.itemTypes.class.map(c => c.name).join(", ");
sheetData["multiclassLabels"] = this.actor.itemTypes.class.map(c => {
return [c.data.data.archetype, c.name, c.data.data.levels].filterJoin(' ')
}).join(', ');
// Return data for rendering
return sheetData;
@ -86,6 +89,18 @@ export default class ActorSheet5eCharacterNew extends ActorSheet5e {
// Item details
item.img = item.img || DEFAULT_TOKEN;
item.isStack = Number.isNumeric(item.data.quantity) && (item.data.quantity !== 1);
item.attunement = {
[CONFIG.SW5E.attunementTypes.REQUIRED]: {
icon: "fa-sun",
cls: "not-attuned",
title: "SW5E.AttunementRequired"
},
[CONFIG.SW5E.attunementTypes.ATTUNED]: {
icon: "fa-sun",
cls: "attuned",
title: "SW5E.AttunementAttuned"
}
}[item.data.attunement];
// Item usage
item.hasUses = item.data.uses && (item.data.uses.max > 0);

View file

@ -115,7 +115,7 @@ export default class ActorSheet5eNPCNew extends ActorSheet5e {
/** @override */
activateListeners(html) {
super.activateListeners(html);
html.find(".health .rollable").click(this._onRollHealthFormula.bind(this));
html.find(".health .rollable").click(this._onRollHPFormula.bind(this));
}
/* -------------------------------------------- */
@ -125,7 +125,7 @@ export default class ActorSheet5eNPCNew extends ActorSheet5e {
* @param {Event} event The original click event
* @private
*/
_onRollHealthFormula(event) {
_onRollHPFormula(event) {
event.preventDefault();
const formula = this.actor.data.data.attributes.hp.formula;
if ( !formula ) return;

View file

@ -56,6 +56,13 @@ export default class ActorSheet5eVehicle extends ActorSheet5e {
/* -------------------------------------------- */
/** @override */
_getMovementSpeed(actorData, largestPrimary=true) {
return super._getMovementSpeed(actorData, largestPrimary);
}
/* -------------------------------------------- */
/**
* Prepare items that are mounted to a vehicle and require one or more crew
* to operate.
@ -86,13 +93,6 @@ export default class ActorSheet5eVehicle extends ActorSheet5e {
/* -------------------------------------------- */
/** @override */
_getMovementSpeed(actorData) {
return {primary: "", special: ""};
}
/* -------------------------------------------- */
/**
* Organize Owned Items for rendering the Vehicle sheet.
* @private

View file

@ -119,22 +119,44 @@ export default class ActorSheet5e extends ActorSheet {
/* -------------------------------------------- */
/**
* Prepare the display of movement speed data for the Actor
* @param {object} actorData
* Prepare the display of movement speed data for the Actor*
* @param {object} actorData The Actor data being prepared.
* @param {boolean} [largestPrimary=false] Show the largest movement speed as "primary", otherwise show "walk"
* @returns {{primary: string, special: string}}
* @private
*/
_getMovementSpeed(actorData) {
_getMovementSpeed(actorData, largestPrimary=false) {
const movement = actorData.data.attributes.movement || {};
const speeds = [
// Prepare an array of available movement speeds
let speeds = [
[movement.burrow, `${game.i18n.localize("SW5E.MovementBurrow")} ${movement.burrow}`],
[movement.climb, `${game.i18n.localize("SW5E.MovementClimb")} ${movement.climb}`],
[movement.fly, `${game.i18n.localize("SW5E.MovementFly")} ${movement.fly}` + (movement.hover ? ` (${game.i18n.localize("SW5E.MovementHover")})` : "")],
[movement.swim, `${game.i18n.localize("SW5E.MovementSwim")} ${movement.swim}`]
].filter(s => !!s[0]).sort((a, b) => b[0] - a[0]);
return {
primary: `${movement.walk || 0} ${movement.units}`,
special: speeds.length ? speeds.map(s => s[1]).join(", ") : ""
]
if ( largestPrimary ) {
speeds.push([movement.walk, `${game.i18n.localize("SW5E.MovementWalk")} ${movement.walk}`]);
}
// Filter and sort speeds on their values
speeds = speeds.filter(s => !!s[0]).sort((a, b) => b[0] - a[0]);
// Case 1: Largest as primary
if ( largestPrimary ) {
let primary = speeds.shift();
return {
primary: `${primary ? primary[1] : "0"} ${movement.units}`,
special: speeds.map(s => s[1]).join(", ")
}
}
// Case 2: Walk as primary
else {
return {
primary: `${movement.walk || 0} ${movement.units}`,
special: speeds.length ? speeds.map(s => s[1]).join(", ") : ""
}
}
}
@ -352,7 +374,7 @@ export default class ActorSheet5e extends ActorSheet {
1: '<i class="fas fa-check"></i>',
2: '<i class="fas fa-check-double"></i>'
};
return icons[level];
return icons[level] || icons[0];
}
/* -------------------------------------------- */
@ -597,6 +619,11 @@ export default class ActorSheet5e extends ActorSheet {
itemData = scroll.data;
}
// Ignore certain statuses
if ( itemData.data ) {
["attunement", "equipped", "proficient", "prepared"].forEach(k => delete itemData.data[k]);
}
// Create the owned item as normal
return super._onDropItemCreate(itemData);
}

View file

@ -46,6 +46,9 @@ export default class ActorSheet5eCharacter extends ActorSheet5e {
// Experience Tracking
sheetData["disableExperience"] = game.settings.get("sw5e", "disableExperienceTracking");
sheetData["classLabels"] = this.actor.itemTypes.class.map(c => c.name).join(", ");
sheetData["multiclassLabels"] = this.actor.itemTypes.class.map(c => {
return [c.data.data.archetype, c.name, c.data.data.levels].filterJoin(' ')
}).join(', ');
// Return data for rendering
return sheetData;
@ -76,12 +79,12 @@ export default class ActorSheet5eCharacter extends ActorSheet5e {
item.img = item.img || DEFAULT_TOKEN;
item.isStack = Number.isNumeric(item.data.quantity) && (item.data.quantity !== 1);
item.attunement = {
1: {
[CONFIG.SW5E.attunementTypes.REQUIRED]: {
icon: "fa-sun",
cls: "not-attuned",
title: "SW5E.AttunementRequired"
},
2: {
[CONFIG.SW5E.attunementTypes.ATTUNED]: {
icon: "fa-sun",
cls: "attuned",
title: "SW5E.AttunementAttuned"

View file

@ -56,6 +56,13 @@ export default class ActorSheet5eVehicle extends ActorSheet5e {
/* -------------------------------------------- */
/** @override */
_getMovementSpeed(actorData, largestPrimary=true) {
return super._getMovementSpeed(actorData, largestPrimary);
}
/* -------------------------------------------- */
/**
* Prepare items that are mounted to a vehicle and require one or more crew
* to operate.
@ -86,13 +93,6 @@ export default class ActorSheet5eVehicle extends ActorSheet5e {
/* -------------------------------------------- */
/** @override */
_getMovementSpeed(actorData) {
return {primary: "", special: ""};
}
/* -------------------------------------------- */
/**
* Organize Owned Items for rendering the Vehicle sheet.
* @private

View file

@ -127,10 +127,13 @@ export default class AbilityUseDialog extends Dialog {
});
}
const canCast = powerLevels.some(l => l.hasSlots);
if ( !canCast ) data.errors.push(game.i18n.format("SW5E.PowerCastNoSlots", {
level: CONFIG.SW5E.powerLevels[lvl],
name: data.item.name
}));
// Return merged data
data = mergeObject(data, { isPower: true, consumePowerSlot, powerLevels });
if ( !canCast ) data.errors.push("SW5E.PowerCastNoSlots");
// Merge power casting data
return mergeObject(data, { isPower: true, consumePowerSlot, powerLevels });
}
/* -------------------------------------------- */
@ -165,6 +168,8 @@ export default class AbilityUseDialog extends Dialog {
type: item.data.consumableType,
value: uses.value,
quantity: item.data.quantity,
max: uses.max,
per: CONFIG.SW5E.limitedUsePeriods[uses.per]
});
}

View file

@ -49,7 +49,7 @@ export default class TraitSelector extends FormApplication {
}
// Return data
return {
return {
allowCustom: this.options.allowCustom,
choices: choices,
custom: attr ? attr.custom : ""
@ -85,4 +85,4 @@ export default class TraitSelector extends FormApplication {
// Update the object
this.object.update(updateData);
}
}
}

View file

@ -66,7 +66,7 @@ export const displayChatActionButtons = function(message, html, data) {
export const addChatMessageContextOptions = function(html, options) {
let canApply = li => {
const message = game.messages.get(li.data("messageId"));
return message.isRoll && message.isContentVisible && canvas.tokens.controlled.length;
return message?.isRoll && message?.isContentVisible && canvas?.tokens.controlled.length;
};
options.push(
{
@ -103,15 +103,16 @@ export const addChatMessageContextOptions = function(html, options) {
* Apply rolled dice damage to the token or tokens which are currently controlled.
* This allows for damage to be scaled by a multiplier to account for healing, critical hits, or resistance
*
* @param {HTMLElement} roll The chat entry which contains the roll data
* @param {HTMLElement} li The chat entry which contains the roll data
* @param {Number} multiplier A damage multiplier to apply to the rolled damage.
* @return {Promise}
*/
function applyChatCardDamage(roll, multiplier) {
const amount = roll.find('.dice-total').text();
function applyChatCardDamage(li, multiplier) {
const message = game.messages.get(li.data("messageId"));
const roll = message.roll;
return Promise.all(canvas.tokens.controlled.map(t => {
const a = t.actor;
return a.applyDamage(amount, multiplier);
return a.applyDamage(roll.total, multiplier);
}));
}

View file

@ -12,8 +12,8 @@ export const _getInitiativeFormula = function(combatant) {
let nd = 1;
let mods = "";
if (actor.getFlag("sw5e", "halflingLucky")) mods += "r=1";
if (actor.getFlag("sw5e", "halflingLucky")) mods += "r1=1";
if (actor.getFlag("sw5e", "initiativeAdv")) {
nd = 2;
mods += "kh";
@ -26,15 +26,3 @@ export const _getInitiativeFormula = function(combatant) {
if ( tiebreaker ) parts.push(actor.data.data.abilities.dex.value / 100);
return parts.filter(p => p !== null).join(" + ");
};
/**
* When the Combat encounter updates - re-render open Actor sheets for combatants in the encounter.
*/
Hooks.on("updateCombat", (combat, data, options, userId) => {
const updateTurn = ("turn" in data) || ("round" in data);
if ( !updateTurn ) return;
for ( let t of combat.turns ) {
const a = t.actor;
if ( t.actor ) t.actor.sheet.render(false);
}
});

View file

@ -4,14 +4,13 @@ import {ClassFeatures} from "./classFeatures.js"
export const SW5E = {};
// ASCII Artwork
SW5E.ASCII = `__________________________________________
_
| |
___| |_ __ _ _ ____ ____ _ _ __ ___
/ __| __/ _\\ | |__\\ \\ /\\ / / _\\ | |__/ __|
\\__ \\ || (_) | | \\ \V \V / (_) | | \\__ \\
|___/\\__\\__/_|_| \\_/\\_/ \\__/_|_| |___/
__________________________________________`;
SW5E.ASCII = `
___________ ___________
/ _____/ \\ / \\ ____/ ____
\\_____ \\\\ \\/\\/ /____ \\_/ __ \\
/ \\\\ // \\ ___/
\\______ / \\__/\\ //______ /\\__ >
\\/ \\/ \\/ \\/ `;
/**
@ -56,6 +55,16 @@ SW5E.alignments = {
/* -------------------------------------------- */
/**
* An enumeration of item attunement types
* @enum {number}
*/
SW5E.attunementTypes = {
NONE: 0,
REQUIRED: 1,
ATTUNED: 2,
}
/**
* An enumeration of item attunement states
* @type {{"0": string, "1": string, "2": string}}
@ -305,6 +314,7 @@ SW5E.damageResistanceTypes = duplicate(SW5E.damageTypes);
/* -------------------------------------------- */
// armor Types
SW5E.armorPropertiesTypes = {
"Absorptive": "SW5E.ArmorProperAbsorptive",
@ -339,6 +349,19 @@ SW5E.armorPropertiesTypes = {
"Versatile": "SW5E.ArmorProperVersatile"
};
/**
* The valid units of measure for movement distances in the game system.
* By default this uses the imperial units of feet and miles.
* @type {Object<string,string>}
*/
SW5E.movementTypes = {
"burrow": "SW5E.MovementBurrow",
"climb": "SW5E.MovementClimb",
"fly": "SW5E.MovementFly",
"swim": "SW5E.MovementSwim",
"walk": "SW5E.MovementWalk",
}
/**
* The valid units of measure for movement distances in the game system.
* By default this uses the imperial units of feet and miles.
@ -457,7 +480,6 @@ SW5E.senses = {
"truesight": "SW5E.SenseTruesight"
};
/* -------------------------------------------- */
/**

View file

@ -1,3 +1,69 @@
/**
* A standardized helper function for simplifying the constant parts of a multipart roll formula
*
* @param {string} formula The original Roll formula
* @param {Object} data Actor or item data against which to parse the roll
* @param {Object} options Formatting options
* @param {boolean} options.constantFirst Puts the constants before the dice terms in the resulting formula
*
* @return {string} The resulting simplified formula
*/
export function simplifyRollFormula(formula, data, {constantFirst = false} = {}) {
const roll = new Roll(formula, data); // Parses the formula and replaces any @properties
const terms = roll.terms;
// Some terms are "too complicated" for this algorithm to simplify
// In this case, the original formula is returned.
if (terms.some(_isUnsupportedTerm)) return roll.formula;
const rollableTerms = []; // Terms that are non-constant, and their associated operators
const constantTerms = []; // Terms that are constant, and their associated operators
let operators = []; // Temporary storage for operators before they are moved to one of the above
for (let term of terms) { // For each term
if (["+", "-"].includes(term)) operators.push(term); // If the term is an addition/subtraction operator, push the term into the operators array
else { // Otherwise the term is not an operator
if (term instanceof DiceTerm) { // If the term is something rollable
rollableTerms.push(...operators); // Place all the operators into the rollableTerms array
rollableTerms.push(term); // Then place this rollable term into it as well
} //
else { // Otherwise, this must be a constant
constantTerms.push(...operators); // Place the operators into the constantTerms array
constantTerms.push(term); // Then also add this constant term to that array.
} //
operators = []; // Finally, the operators have now all been assigend to one of the arrays, so empty this before the next iteration.
}
}
const constantFormula = Roll.cleanFormula(constantTerms); // Cleans up the constant terms and produces a new formula string
const rollableFormula = Roll.cleanFormula(rollableTerms); // Cleans up the non-constant terms and produces a new formula string
const constantPart = roll._safeEval(constantFormula); // Mathematically evaluate the constant formula to produce a single constant term
const parts = constantFirst ? // Order the rollable and constant terms, either constant first or second depending on the optional argumen
[constantPart, rollableFormula] : [rollableFormula, constantPart];
// Join the parts with a + sign, pass them to `Roll` once again to clean up the formula
return new Roll(parts.filterJoin(" + ")).formula;
}
/* -------------------------------------------- */
/**
* Only some terms are supported by simplifyRollFormula, this method returns true when the term is not supported.
* @param {*} term - A single Dice term to check support on
* @return {Boolean} True when unsupported, false if supported
*/
function _isUnsupportedTerm(term) {
const diceTerm = term instanceof DiceTerm;
const operator = ["+", "-"].includes(term);
const number = !isNaN(Number(term));
return !(diceTerm || operator || number);
}
/* -------------------------------------------- */
/**
* A standardized helper function for managing core 5e "d20 rolls"
*
@ -44,8 +110,8 @@ export async function d20Roll({parts=[], data={}, event={}, rollMode=null, templ
let adv = 0;
fastForward = fastForward ?? (event && (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey));
if (fastForward) {
if ( advantage || event.altKey ) adv = 1;
else if ( disadvantage || event.ctrlKey || event.metaKey ) adv = -1;
if ( advantage ?? event.altKey ) adv = 1;
else if ( disadvantage ?? (event.ctrlKey || event.metaKey) ) adv = -1;
}
// Define the inner roll function
@ -53,7 +119,7 @@ export async function d20Roll({parts=[], data={}, event={}, rollMode=null, templ
// Determine the d20 roll and modifiers
let nd = 1;
let mods = halflingLucky ? "r=1" : "";
let mods = halflingLucky ? "r1=1" : "";
// Handle advantage
if (adv === 1) {
@ -109,6 +175,8 @@ export async function d20Roll({parts=[], data={}, event={}, rollMode=null, templ
if (d.faces === 20) {
d.options.critical = critical;
d.options.fumble = fumble;
if ( adv === 1 ) d.options.advantage = true;
else if ( adv === -1 ) d.options.disadvantage = true;
if (targetValue) d.options.target = targetValue;
}
}
@ -131,7 +199,6 @@ export async function d20Roll({parts=[], data={}, event={}, rollMode=null, templ
/* -------------------------------------------- */
/**
* Present a Dialog form which creates a d20 roll once submitted
* @return {Promise<Roll>}
@ -175,7 +242,6 @@ async function _d20RollDialog({template, title, parts, data, rollMode, dialogOpt
});
}
/* -------------------------------------------- */
/**
@ -235,14 +301,15 @@ export async function damageRoll({parts, actor, data, event={}, rollMode=null, t
roll.terms[0].alter(1, criticalBonusDice);
roll._formula = roll.formula;
}
roll.dice.forEach(d => d.options.critical = true);
messageData.flavor += ` (${game.i18n.localize("SW5E.Critical")})`;
if ( "flags.sw5e.roll" in messageData ) messageData["flags.sw5e.roll"].critical = true;
}
// Execute the roll
try {
return roll.roll();
roll.evaluate()
if ( crit ) roll.dice.forEach(d => d.options.critical = true); // TODO workaround core bug which wipes Roll#options on roll
return roll;
} catch(err) {
console.error(err);
ui.notifications.error(`Dice roll evaluation failed: ${err.message}`);

View file

@ -1,6 +1,5 @@
import {d20Roll, damageRoll} from "../dice.js";
import {simplifyRollFormula, d20Roll, damageRoll} from "../dice.js";
import AbilityUseDialog from "../apps/ability-use-dialog.js";
import AbilityTemplate from "../pixi/ability-template.js";
/**
* Override and extend the basic :class:`Item` implementation
@ -101,7 +100,8 @@ export default class Item5e extends Item {
* @type {boolean}
*/
get hasSave() {
return !!(this.data.data.save && this.data.data.save.ability);
const save = this.data.data?.save || {};
return !!(save.ability && save.scaling);
}
/* -------------------------------------------- */
@ -251,9 +251,14 @@ export default class Item5e extends Item {
// Item Actions
if ( data.hasOwnProperty("actionType") ) {
// if this item is owned, we populate the label and saving throw during actor init
if (!this.isOwned) {
// Saving throws
this.getSaveDC();
// Saving throws
this.getSaveDC();
// To Hit
this.getAttackToHit();
}
// Damage
let dam = data.damage || {};
@ -261,23 +266,32 @@ export default class Item5e extends Item {
labels.damage = dam.parts.map(d => d[0]).join(" + ").replace(/\+ -/g, "- ");
labels.damageTypes = dam.parts.map(d => C.damageTypes[d[1]]).join(", ");
}
}
// Assign labels
this.labels = labels;
// Limited Uses
if ( this.isOwned && !!data.uses?.max ) {
let max = data.uses.max;
if ( !Number.isNumeric(max) ) {
max = Roll.replaceFormulaData(max, this.actor.getRollData());
if ( Roll.MATH_PROXY.safeEval ) max = Roll.MATH_PROXY.safeEval(max);
}
data.uses.max = Number(max);
}
}
}
/* -------------------------------------------- */
/**
* Update the derived spell DC for an item that requires a saving throw
* Update the derived power DC for an item that requires a saving throw
* @returns {number|null}
*/
getSaveDC() {
if ( !this.hasSave ) return;
const save = this.data.data?.save;
// Actor spell-DC based scaling
if ( save.scaling === "spell" ) {
save.dc = this.isOwned ? getProperty(this.actor.data, "data.attributes.spelldc") : null;
// Actor power-DC based scaling
if ( save.scaling === "power" ) {
save.dc = this.isOwned ? getProperty(this.actor.data, "data.attributes.powerdc") : null;
}
// Ability-score based scaling
@ -286,22 +300,332 @@ export default class Item5e extends Item {
}
// Update labels
const abl = CONFIG.DND5E.abilities[save.ability];
this.labels.save = game.i18n.format("DND5E.SaveDC", {dc: save.dc || "", ability: abl});
const abl = CONFIG.SW5E.abilities[save.ability];
this.labels.save = game.i18n.format("SW5E.SaveDC", {dc: save.dc || "", ability: abl});
return save.dc;
}
/* -------------------------------------------- */
/**
* Update a label to the Item detailing its total to hit bonus.
* Sources:
* - item entity's innate attack bonus
* - item's actor's proficiency bonus if applicable
* - item's actor's global bonuses to the given item type
* - item's ammunition if applicable
*
* @returns {Object} returns `rollData` and `parts` to be used in the item's Attack roll
*/
getAttackToHit() {
const itemData = this.data.data;
if ( !this.hasAttack || !itemData ) return;
const rollData = this.getRollData();
// Define Roll bonuses
const parts = [];
// Include the item's innate attack bonus as the initial value and label
if ( itemData.attackBonus ) {
parts.push(itemData.attackBonus)
this.labels.toHit = itemData.attackBonus;
}
// Take no further action for un-owned items
if ( !this.isOwned ) return {rollData, parts};
// Ability score modifier
parts.push(`@mod`);
// Add proficiency bonus if an explicit proficiency flag is present or for non-item features
if ( !["weapon", "consumable"].includes(this.data.type) || itemData.proficient ) {
parts.push("@prof");
}
// Actor-level global bonus to attack rolls
const actorBonus = this.actor.data.data.bonuses?.[itemData.actionType] || {};
if ( actorBonus.attack ) parts.push(actorBonus.attack);
// One-time bonus provided by consumed ammunition
if ( (itemData.consume?.type === 'ammo') && !!this.actor.items ) {
const ammoItemData = this.actor.items.get(itemData.consume.target)?.data;
if (ammoItemData) {
const ammoItemQuantity = ammoItemData.data.quantity;
const ammoCanBeConsumed = ammoItemQuantity && (ammoItemQuantity - (itemData.consume.amount ?? 0) >= 0);
const ammoItemAttackBonus = ammoItemData.data.attackBonus;
const ammoIsTypeConsumable = (ammoItemData.type === "consumable") && (ammoItemData.data.consumableType === "ammo")
if ( ammoCanBeConsumed && ammoItemAttackBonus && ammoIsTypeConsumable ) {
parts.push("@ammo");
rollData["ammo"] = ammoItemAttackBonus;
}
}
}
// Condense the resulting attack bonus formula into a simplified label
let toHitLabel = simplifyRollFormula(parts.join('+'), rollData).trim();
if (toHitLabel.charAt(0) !== '-') {
toHitLabel = '+ ' + toHitLabel
}
this.labels.toHit = toHitLabel;
// Update labels and return the prepared roll data
return {rollData, parts};
}
/* -------------------------------------------- */
/**
* Roll the item to Chat, creating a chat card which contains follow up attack or damage roll options
* @param {boolean} [configureDialog] Display a configuration dialog for the item roll, if applicable?
* @param {string} [rollMode] The roll display mode with which to display (or not) the card
* @param {boolean} [createMessage] Whether to automatically create a chat message (if true) or simply return
* the prepared chat message data (if false).
* @return {Promise}
* @return {Promise<ChatMessage|object|void>}
*/
async roll({configureDialog=true, rollMode=null, createMessage=true}={}) {
async roll({configureDialog=true, rollMode, createMessage=true}={}) {
let item = this;
const actor = this.actor;
// Reference aspects of the item data necessary for usage
const id = this.data.data; // Item data
const hasArea = this.hasAreaTarget; // Is the ability usage an AoE?
const resource = id.consume || {}; // Resource consumption
const recharge = id.recharge || {}; // Recharge mechanic
const uses = id?.uses ?? {}; // Limited uses
const isPower = this.type === "power"; // Does the item require a power slot?
const requirePowerSlot = isPower && (id.level > 0) && CONFIG.SW5E.powerUpcastModes.includes(id.preparation.mode);
// Define follow-up actions resulting from the item usage
let createMeasuredTemplate = hasArea; // Trigger a template creation
let consumeRecharge = !!recharge.value; // Consume recharge
let consumeResource = !!resource.target && (resource.type !== "ammo") // Consume a linked (non-ammo) resource
let consumePowerSlot = requirePowerSlot; // Consume a power slot
let consumeUsage = !!uses.per; // Consume limited uses
let consumeQuantity = uses.autoDestroy; // Consume quantity of the item in lieu of uses
// Display a configuration dialog to customize the usage
const needsConfiguration = createMeasuredTemplate || consumeRecharge || consumeResource || consumePowerSlot || consumeUsage;
if (configureDialog && needsConfiguration) {
const configuration = await AbilityUseDialog.create(this);
if (!configuration) return;
// Determine consumption preferences
createMeasuredTemplate = Boolean(configuration.placeTemplate);
consumeUsage = Boolean(configuration.consumeUse);
consumeRecharge = Boolean(configuration.consumeRecharge);
consumeResource = Boolean(configuration.consumeResource);
consumePowerSlot = Boolean(configuration.consumeSlot);
// Handle power upcasting
if ( requirePowerSlot ) {
const slotLevel = configuration.level;
const powerLevel = slotLevel === "pact" ? actor.data.data.powers.pact.level : parseInt(slotLevel);
if (powerLevel !== id.level) {
const upcastData = mergeObject(this.data, {"data.level": powerLevel}, {inplace: false});
item = this.constructor.createOwned(upcastData, actor); // Replace the item with an upcast version
}
if ( consumePowerSlot ) consumePowerSlot = slotLevel === "pact" ? "pact" : `power${powerLevel}`;
}
}
// Determine whether the item can be used by testing for resource consumption
const usage = item._getUsageUpdates({consumeRecharge, consumeResource, consumePowerSlot, consumeUsage, consumeQuantity});
if ( !usage ) return;
const {actorUpdates, itemUpdates, resourceUpdates} = usage;
// Commit pending data updates
if ( !isObjectEmpty(itemUpdates) ) await item.update(itemUpdates);
if ( consumeQuantity && (item.data.data.quantity === 0) ) await item.delete();
if ( !isObjectEmpty(actorUpdates) ) await actor.update(actorUpdates);
if ( !isObjectEmpty(resourceUpdates) ) {
const resource = actor.items.get(id.consume?.target);
if ( resource ) await resource.update(resourceUpdates);
}
// Initiate measured template creation
if ( createMeasuredTemplate ) {
const template = game.sw5e.canvas.AbilityTemplate.fromItem(item);
if ( template ) template.drawPreview();
}
// Create or return the Chat Message data
return item.displayCard({rollMode, createMessage});
}
/* -------------------------------------------- */
/**
* Verify that the consumed resources used by an Item are available.
* Otherwise display an error and return false.
* @param {boolean} consumeQuantity Consume quantity of the item if other consumption modes are not available?
* @param {boolean} consumeRecharge Whether the item consumes the recharge mechanic
* @param {boolean} consumeResource Whether the item consumes a limited resource
* @param {string|boolean} consumePowerSlot A level of power slot consumed, or false
* @param {boolean} consumeUsage Whether the item consumes a limited usage
* @returns {object|boolean} A set of data changes to apply when the item is used, or false
* @private
*/
_getUsageUpdates({consumeQuantity=false, consumeRecharge=false, consumeResource=false, consumePowerSlot=false, consumeUsage=false}) {
// Reference item data
const id = this.data.data;
const actorUpdates = {};
const itemUpdates = {};
const resourceUpdates = {};
// Consume Recharge
if ( consumeRecharge ) {
const recharge = id.recharge || {};
if ( recharge.charged === false ) {
ui.notifications.warn(game.i18n.format("SW5E.ItemNoUses", {name: this.name}));
return false;
}
itemUpdates["data.recharge.charged"] = false;
}
// Consume Limited Resource
if ( consumeResource ) {
const canConsume = this._handleConsumeResource(itemUpdates, actorUpdates, resourceUpdates);
if ( canConsume === false ) return false;
}
// Consume Power Slots
if ( consumePowerSlot ) {
const level = this.actor?.data.data.powers[consumePowerSlot];
const powers = Number(level?.value ?? 0);
if ( powers === 0 ) {
const label = game.i18n.localize(consumePowerSlot === "pact" ? "SW5E.PowerProgPact" : `SW5E.PowerLevel${id.level}`);
ui.notifications.warn(game.i18n.format("SW5E.PowerCastNoSlots", {name: this.name, level: label}));
return false;
}
actorUpdates[`data.powers.${consumePowerSlot}.value`] = Math.max(powers - 1, 0);
}
// Consume Limited Usage
if ( consumeUsage ) {
const uses = id.uses || {};
const available = Number(uses.value ?? 0);
let used = false;
// Reduce usages
const remaining = Math.max(available - 1, 0);
if ( available >= 1 ) {
used = true;
itemUpdates["data.uses.value"] = remaining;
}
// Reduce quantity if not reducing usages or if usages hit 0 and we are set to consumeQuantity
if ( consumeQuantity && (!used || (remaining === 0)) ) {
const q = Number(id.quantity ?? 1);
if ( q >= 1 ) {
used = true;
itemUpdates["data.quantity"] = Math.max(q - 1, 0);
itemUpdates["data.uses.value"] = uses.max ?? 1;
}
}
// If the item was not used, return a warning
if ( !used ) {
ui.notifications.warn(game.i18n.format("SW5E.ItemNoUses", {name: this.name}));
return false;
}
}
// Return the configured usage
return {itemUpdates, actorUpdates, resourceUpdates};
}
/* -------------------------------------------- */
/**
* Handle update actions required when consuming an external resource
* @param {object} itemUpdates An object of data updates applied to this item
* @param {object} actorUpdates An object of data updates applied to the item owner (Actor)
* @param {object} resourceUpdates An object of data updates applied to a different resource item (Item)
* @return {boolean|void} Return false to block further progress, or return nothing to continue
* @private
*/
_handleConsumeResource(itemUpdates, actorUpdates, resourceUpdates) {
const actor = this.actor;
const itemData = this.data.data;
const consume = itemData.consume || {};
if ( !consume.type ) return;
// No consumed target
const typeLabel = CONFIG.SW5E.abilityConsumptionTypes[consume.type];
if ( !consume.target ) {
ui.notifications.warn(game.i18n.format("SW5E.ConsumeWarningNoResource", {name: this.name, type: typeLabel}));
return false;
}
// Identify the consumed resource and its current quantity
let resource = null;
let amount = Number(consume.amount ?? 1);
let quantity = 0;
switch ( consume.type ) {
case "attribute":
resource = getProperty(actor.data.data, consume.target);
quantity = resource || 0;
break;
case "ammo":
case "material":
resource = actor.items.get(consume.target);
quantity = resource ? resource.data.data.quantity : 0;
break;
case "charges":
resource = actor.items.get(consume.target);
if ( !resource ) break;
const uses = resource.data.data.uses;
if ( uses.per && uses.max ) quantity = uses.value;
else if ( resource.data.data.recharge?.value ) {
quantity = resource.data.data.recharge.charged ? 1 : 0;
amount = 1;
}
break;
}
// Verify that a consumed resource is available
if ( !resource ) {
ui.notifications.warn(game.i18n.format("SW5E.ConsumeWarningNoSource", {name: this.name, type: typeLabel}));
return false;
}
// Verify that the required quantity is available
let remaining = quantity - amount;
if ( remaining < 0 ) {
ui.notifications.warn(game.i18n.format("SW5E.ConsumeWarningNoQuantity", {name: this.name, type: typeLabel}));
return false;
}
// Define updates to provided data objects
switch ( consume.type ) {
case "attribute":
actorUpdates[`data.${consume.target}`] = remaining;
break;
case "ammo":
case "material":
resourceUpdates["data.quantity"] = remaining;
break;
case "charges":
const uses = resource.data.data.uses || {};
const recharge = resource.data.data.recharge || {};
if ( uses.per && uses.max ) resourceUpdates["data.uses.value"] = remaining;
else if ( recharge.value ) resourceUpdates["data.recharge.charged"] = false;
break;
}
}
/* -------------------------------------------- */
/**
* Display the chat card for an Item as a Chat Message
* @param {object} options Options which configure the display of the item chat card
* @param {string} rollMode The message visibility mode to apply to the created card
* @param {boolean} createMessage Whether to automatically create a ChatMessage entity (if true), or only return
* the prepared message data (if false)
*/
async displayCard({rollMode, createMessage=true}={}) {
// Basic template rendering data
const token = this.actor.token;
@ -320,190 +644,31 @@ export default class Item5e extends Item {
hasAreaTarget: this.hasAreaTarget
};
// For feature items, optionally show an ability usage dialog
if (this.data.type === "feat") {
let configured = await this._rollFeat(configureDialog);
if ( configured === false ) return;
} else if ( this.data.type === "consumable" ) {
let configured = await this._rollConsumable(configureDialog);
if ( configured === false ) return;
}
// For items which consume a resource, handle that here
const allowed = await this._handleResourceConsumption({isCard: true, isAttack: false});
if ( allowed === false ) return;
// Render the chat card template
const templateType = ["tool"].includes(this.data.type) ? this.data.type : "item";
const template = `systems/sw5e/templates/chat/${templateType}-card.html`;
const html = await renderTemplate(template, templateData);
// Basic chat message data
// Create the ChatMessage data object
const chatData = {
user: game.user._id,
type: CONST.CHAT_MESSAGE_TYPES.OTHER,
content: html,
flavor: this.data.data.chatFlavor || this.name,
speaker: {
actor: this.actor._id,
token: this.actor.token,
alias: this.actor.name
},
speaker: ChatMessage.getSpeaker({actor: this.actor, token}),
flags: {"core.canPopout": true}
};
// If the consumable was destroyed in the process - embed the item data in the surviving message
// If the Item was destroyed in the process of displaying its card - embed the item data in the chat message
if ( (this.data.type === "consumable") && !this.actor.items.has(this.id) ) {
chatData.flags["sw5e.itemData"] = this.data;
}
// Toggle default roll mode
rollMode = rollMode || game.settings.get("core", "rollMode");
if ( ["gmroll", "blindroll"].includes(rollMode) ) chatData["whisper"] = ChatMessage.getWhisperRecipients("GM");
if ( rollMode === "blindroll" ) chatData["blind"] = true;
// Apply the roll mode to adjust message visibility
ChatMessage.applyRollMode(chatData, rollMode || game.settings.get("core", "rollMode"));
// Create the chat message
if ( createMessage ) return ChatMessage.create(chatData);
else return chatData;
}
/* -------------------------------------------- */
/**
* For items which consume a resource, handle the consumption of that resource when the item is used.
* There are four types of ability consumptions which are handled:
* 1. Ammunition (on attack rolls)
* 2. Attributes (on card usage)
* 3. Materials (on card usage)
* 4. Item Charges (on card usage)
*
* @param {boolean} isCard Is the item card being played?
* @param {boolean} isAttack Is an attack roll being made?
* @return {Promise<boolean>} Can the item card or attack roll be allowed to proceed?
* @private
*/
async _handleResourceConsumption({isCard=false, isAttack=false}={}) {
const itemData = this.data.data;
const consume = itemData.consume || {};
if ( !consume.type ) return true;
const actor = this.actor;
const typeLabel = CONFIG.SW5E.abilityConsumptionTypes[consume.type];
// Only handle certain types for certain actions
if ( ((consume.type === "ammo") && !isAttack ) || ((consume.type !== "ammo") && !isCard) ) return true;
// No consumed target set
if ( !consume.target ) {
ui.notifications.warn(game.i18n.format("SW5E.ConsumeWarningNoResource", {name: this.name, type: typeLabel}));
return false;
}
// Identify the consumed resource and it's quantity
let consumed = null;
let amount = parseInt(consume.amount || 1);
let quantity = 0;
switch ( consume.type ) {
case "attribute":
consumed = getProperty(actor.data.data, consume.target);
quantity = consumed || 0;
break;
case "ammo":
case "material":
consumed = actor.items.get(consume.target);
quantity = consumed ? consumed.data.data.quantity : 0;
break;
case "charges":
consumed = actor.items.get(consume.target);
if ( !consumed ) break;
const uses = consumed.data.data.uses;
if ( uses.per && uses.max ) quantity = uses.value;
else if ( consumed.data.data.recharge?.value ) {
quantity = consumed.data.data.recharge.charged ? 1 : 0;
amount = 1;
}
break;
}
// Verify that the consumed resource is available
if ( [null, undefined].includes(consumed) ) {
ui.notifications.warn(game.i18n.format("SW5E.ConsumeWarningNoSource", {name: this.name, type: typeLabel}));
return false;
}
let remaining = quantity - amount;
if ( remaining < 0) {
ui.notifications.warn(game.i18n.format("SW5E.ConsumeWarningNoQuantity", {name: this.name, type: typeLabel}));
return false;
}
// Update the consumed resource
switch ( consume.type ) {
case "attribute":
await this.actor.update({[`data.${consume.target}`]: remaining});
break;
case "ammo":
case "material":
await consumed.update({"data.quantity": remaining});
break;
case "charges":
const uses = consumed.data.data.uses || {};
const recharge = consumed.data.data.recharge || {};
if ( uses.per && uses.max ) await consumed.update({"data.uses.value": remaining});
else if ( recharge.value ) await consumed.update({"data.recharge.charged": false});
break;
}
return true;
}
/* -------------------------------------------- */
/**
* Additional rolling steps when rolling a feat-type item
* @private
* @return {boolean} whether the roll should be prevented
*/
async _rollFeat(configureDialog) {
if ( this.data.type !== "feat" ) throw new Error("Wrong Item type");
// Configure whether to consume a limited use or to place a template
const charge = this.data.data.recharge;
const uses = this.data.data.uses;
let usesCharges = !!uses.per && !!uses.max;
let placeTemplate = false;
let consume = charge.value || usesCharges;
// Determine whether the feat uses charges
configureDialog = configureDialog && (consume || this.hasAreaTarget);
if ( configureDialog ) {
const usage = await AbilityUseDialog.create(this);
if ( usage === null ) return false;
consume = Boolean(usage.get("consumeUse"));
placeTemplate = Boolean(usage.get("placeTemplate"));
}
// Update Item data
const current = getProperty(this.data, "data.uses.value") || 0;
if ( consume && charge.value ) {
if ( !charge.charged ) {
ui.notifications.warn(game.i18n.format("SW5E.ItemNoUses", {name: this.name}));
return false;
}
else await this.update({"data.recharge.charged": false});
}
else if ( consume && usesCharges ) {
if ( uses.value <= 0 ) {
ui.notifications.warn(game.i18n.format("SW5E.ItemNoUses", {name: this.name}));
return false;
}
await this.update({"data.uses.value": Math.max(current - 1, 0)});
}
// Maybe initiate template placement workflow
if ( this.hasAreaTarget && placeTemplate ) {
const template = AbilityTemplate.fromItem(this);
if ( template ) template.drawPreview();
if ( this.owner && this.owner.sheet ) this.owner.sheet.minimize();
}
return true;
// Create the Chat Message or return its data
return createMessage ? ChatMessage.create(chatData) : chatData;
}
/* -------------------------------------------- */
@ -527,8 +692,9 @@ export default class Item5e extends Item {
const fn = this[`_${this.data.type}ChatData`];
if ( fn ) fn.bind(this)(data, labels, props);
// General equipment properties
// Equipment properties
if ( data.hasOwnProperty("equipped") && !["loot", "tool"].includes(this.data.type) ) {
if ( data.attunement === CONFIG.SW5E.attunementTypes.REQUIRED ) props.push(game.i18n.localize(CONFIG.SW5E.attunements[CONFIG.SW5E.attunementTypes.REQUIRED]));
props.push(
game.i18n.localize(data.equipped ? "SW5E.Equipped" : "SW5E.Unequipped"),
game.i18n.localize(data.proficient ? "SW5E.Proficient" : "SW5E.NotProficient"),
@ -653,43 +819,35 @@ export default class Item5e extends Item {
*/
async rollAttack(options={}) {
const itemData = this.data.data;
const actorData = this.actor.data.data;
const flags = this.actor.data.flags.sw5e || {};
if ( !this.hasAttack ) {
throw new Error("You may not place an Attack Roll with this Item.");
}
let title = `${this.name} - ${game.i18n.localize("SW5E.AttackRoll")}`;
const rollData = this.getRollData();
// Define Roll bonuses
const parts = [`@mod`];
if ( (this.data.type !== "weapon") || itemData.proficient ) {
parts.push("@prof");
}
// get the parts and rollData for this item's attack
const {parts, rollData} = this.getAttackToHit();
// Attack Bonus
if ( itemData.attackBonus ) parts.push(itemData.attackBonus);
const actorBonus = actorData?.bonuses?.[itemData.actionType] || {};
if ( actorBonus.attack ) parts.push(actorBonus.attack);
// Ammunition Bonus
// Handle ammunition consumption
delete this._ammo;
let ammo = null;
let ammoUpdate = null;
const consume = itemData.consume;
if ( consume?.type === "ammo" ) {
const ammo = this.actor.items.get(consume.target);
if(ammo?.data){
ammo = this.actor.items.get(consume.target);
if (ammo?.data) {
const q = ammo.data.data.quantity;
const consumeAmount = consume.amount ?? 0;
if ( q && (q - consumeAmount >= 0) ) {
this._ammo = ammo;
let ammoBonus = ammo.data.data.attackBonus;
if ( ammoBonus ) {
parts.push("@ammo");
rollData["ammo"] = ammoBonus;
title += ` [${ammo.name}]`;
}
title += ` [${ammo.name}]`;
}
}
// Get pending ammunition update
const usage = this._getUsageUpdates({consumeResource: true});
if ( usage === false ) return null;
ammoUpdate = usage.resourceUpdates || {};
}
// Compose roll options
@ -730,9 +888,8 @@ export default class Item5e extends Item {
const roll = await d20Roll(rollConfig);
if ( roll === false ) return null;
// Handle resource consumption if the attack roll was made
const allowed = await this._handleResourceConsumption({isCard: false, isAttack: true});
if ( allowed === false ) return null;
// Commit ammunition consumption on attack rolls resource consumption if the attack roll was made
if ( ammo && !isObjectEmpty(ammoUpdate) ) await ammo.update(ammoUpdate);
return roll;
}
@ -742,12 +899,13 @@ export default class Item5e extends Item {
* Place a damage roll using an item (weapon, feat, power, or equipment)
* Rely upon the damageRoll logic for the core implementation.
* @param {MouseEvent} [event] An event which triggered this roll, if any
* @param {boolean} [critical] Should damage be rolled as a critical hit?
* @param {number} [powerLevel] If the item is a power, override the level for damage scaling
* @param {boolean} [versatile] If the item is a weapon, roll damage using the versatile formula
* @param {object} [options] Additional options passed to the damageRoll function
* @return {Promise<Roll>} A Promise which resolves to the created Roll instance
*/
rollDamage({event, powerLevel=null, versatile=false, options={}}={}) {
rollDamage({critical=false, event=null, powerLevel=null, versatile=false, options={}}={}) {
if ( !this.hasDamage ) throw new Error("You may not make a Damage Roll with this Item.");
const itemData = this.data.data;
const actorData = this.actor.data.data;
@ -759,12 +917,15 @@ export default class Item5e extends Item {
if ( powerLevel ) rollData.item.level = powerLevel;
// Configure the damage roll
const title = `${this.name} - ${game.i18n.localize("SW5E.DamageRoll")}`;
const actionFlavor = game.i18n.localize(itemData.actionType === "heal" ? "SW5E.Healing" : "SW5E.DamageRoll");
const title = `${this.name} - ${actionFlavor}`;
const rollConfig = {
event: event,
parts: parts,
actor: this.actor,
critical: critical ?? event?.altKey ?? false,
data: rollData,
event: event,
fastForward: event ? event.shiftKey || event.altKey || event.ctrlKey || event.metaKey : false,
parts: parts,
title: title,
flavor: this.labels.damageTypes.length ? `${title} (${this.labels.damageTypes})` : title,
speaker: ChatMessage.getSpeaker({actor: this.actor}),
@ -800,10 +961,13 @@ export default class Item5e extends Item {
parts.push(actorBonus.damage);
}
// Add ammunition damage
if ( this._ammo ) {
// Handle ammunition damage
const ammoData = this._ammo?.data;
// only add the ammunition damage if the ammution is a consumable with type 'ammo'
if ( this._ammo && (ammoData.type === "consumable") && (ammoData.data.consumableType === "ammo") ) {
parts.push("@ammo");
rollData["ammo"] = this._ammo.data.data.damage.parts.map(p => p[0]).join("+");
rollData["ammo"] = ammoData.data.damage.parts.map(p => p[0]).join("+");
rollConfig.flavor += ` [${this._ammo.name}]`;
delete this._ammo;
}
@ -913,74 +1077,6 @@ export default class Item5e extends Item {
/* -------------------------------------------- */
/**
* Use a consumable item, deducting from the quantity or charges of the item.
* @param {boolean} configureDialog Whether to show a configuration dialog
* @return {boolean} Whether further execution should be prevented
* @private
*/
async _rollConsumable(configureDialog) {
if ( this.data.type !== "consumable" ) throw new Error("Wrong Item type");
const itemData = this.data.data;
// Determine whether to deduct uses of the item
const uses = itemData.uses || {};
const autoDestroy = uses.autoDestroy;
let usesCharges = !!uses.per && (uses.max > 0);
const recharge = itemData.recharge || {};
const usesRecharge = !!recharge.value;
// Display a configuration dialog to confirm the usage
let placeTemplate = false;
let consume = uses.autoUse || true;
if ( configureDialog ) {
const usage = await AbilityUseDialog.create(this);
if ( usage === null ) return false;
consume = Boolean(usage.get("consumeUse"));
placeTemplate = Boolean(usage.get("placeTemplate"));
}
// Update Item data
if ( consume ) {
const current = uses.value || 0;
const remaining = usesCharges ? Math.max(current - 1, 0) : current;
if ( usesRecharge ) await this.update({"data.recharge.charged": false});
else {
const q = itemData.quantity;
// Case 1, reduce charges
if ( remaining ) {
await this.update({"data.uses.value": remaining});
}
// Case 2, reduce quantity
else if ( q > 1 ) {
await this.update({"data.quantity": q - 1, "data.uses.value": uses.max || 0});
}
// Case 3, destroy the item
else if ( (q <= 1) && autoDestroy ) {
await this.actor.deleteOwnedItem(this.id);
}
// Case 4, reduce item to 0 quantity and 0 charges
else if ( (q === 1) ) {
await this.update({"data.quantity": q - 1, "data.uses.value": 0});
}
// Case 5, item unusable, display warning and do nothing
else {
ui.notifications.warn(game.i18n.format("SW5E.ItemNoUses", {name: this.name}));
}
}
}
// Maybe initiate template placement workflow
if ( this.hasAreaTarget && placeTemplate ) {
const template = AbilityTemplate.fromItem(this);
if ( template ) template.drawPreview();
if ( this.owner && this.owner.sheet ) this.owner.sheet.minimize();
}
return true;
}
/* -------------------------------------------- */
/**
* Perform an ability recharge test for an item which uses the d6 recharge mechanic
* @return {Promise<Roll>} A Promise which resolves to the created Roll instance
@ -1033,6 +1129,7 @@ export default class Item5e extends Item {
left: window.innerWidth - 710,
},
halflingLucky: this.actor.getFlag("sw5e", "halflingLucky" ) || false,
reliableTalent: (this.data.data.proficient >= 1) && this.actor.getFlag("sw5e", "reliableTalent"),
messageData: {"flags.sw5e.roll": {type: "tool", itemId: this.id }}
}, options);
rollConfig.event = options.event;
@ -1114,9 +1211,14 @@ export default class Item5e extends Item {
case "attack":
await item.rollAttack({event}); break;
case "damage":
await item.rollDamage({event, powerLevel}); break;
case "versatile":
await item.rollDamage({event, powerLevel, versatile: true}); break;
await item.rollDamage({
critical: event.altKey,
event: event,
powerLevel: powerLevel,
versatile: action === "versatile"
});
break;
case "formula":
await item.rollFormula({event, powerLevel}); break;
case "save":
@ -1129,7 +1231,7 @@ export default class Item5e extends Item {
case "toolCheck":
await item.rollToolCheck({event}); break;
case "placeTemplate":
const template = AbilityTemplate.fromItem(item);
const template = game.sw5e.canvas.AbilityTemplate.fromItem(item);
if ( template ) template.drawPreview();
break;
}

View file

@ -61,6 +61,9 @@ export default class ItemSheet5e extends ItemSheet {
data.isFlatDC = getProperty(data.item.data, "save.scaling") === "flat";
data.isLine = ["line", "wall"].includes(data.item.data.target?.type);
// Original maximum uses formula
if ( this.item._data.data?.uses?.max ) data.data.uses.max = this.item._data.data.uses.max;
// Vehicles
data.isCrewed = data.item.data.activation?.type === 'crew';
data.isMountable = this._isItemMountable(data.item);
@ -91,7 +94,7 @@ export default class ItemSheet5e extends ItemSheet {
ammo[i.id] = `${i.name} (${i.data.data.quantity})`;
}
return ammo;
}, {});
}, {[item._id]: `${item.name} (${item.data.quantity})`});
}
// Attributes
@ -335,7 +338,7 @@ export default class ItemSheet5e extends ItemSheet {
// Render the Trait Selector dialog
new TraitSelector(this.item, {
name: a.dataset.edit,
name: a.dataset.target,
title: label.innerText,
choices: Object.entries(CONFIG.SW5E.skills).reduce((obj, e) => {
if ( choices.includes(e[0] ) ) obj[e[0]] = e[1];

View file

@ -127,7 +127,6 @@ export const migrateActorData = function(actor) {
const updateData = {};
// Actor Data Updates
_migrateActorBonuses(actor, updateData);
_migrateActorMovement(actor, updateData);
_migrateActorSenses(actor, updateData);
@ -229,28 +228,14 @@ export const migrateSceneData = function(scene) {
/* Low level migration utilities
/* -------------------------------------------- */
/**
* Migrate the actor bonuses object
* @private
*/
function _migrateActorBonuses(actor, updateData) {
const b = game.system.model.Actor.character.bonuses;
for ( let k of Object.keys(actor.data.bonuses || {}) ) {
if ( k in b ) updateData[`data.bonuses.${k}`] = b[k];
else updateData[`data.bonuses.-=${k}`] = null;
}
}
/* -------------------------------------------- */
/**
* Migrate the actor speed string to movement object
* @private
*/
function _migrateActorMovement(actor, updateData) {
const ad = actor.data;
const old = ad?.attributes?.speed?.value;
if ( old === undefined ) return;
const old = actor.type === 'vehicle' ? ad?.attributes?.speed : ad?.attributes?.speed?.value;
if ( typeof old !== "string" ) return;
const s = (old || "").split(" ");
if ( s.length > 0 ) updateData["data.attributes.movement.walk"] = Number.isNumeric(s[0]) ? parseInt(s[0]) : null;
updateData["data.attributes.-=speed"] = null;
@ -302,7 +287,7 @@ function _migrateActorSenses(actor, updateData) {
*/
function _migrateItemAttunement(item, updateData) {
if ( item.data.attuned === undefined ) return;
updateData["data.attunement"] = 0;
updateData["data.attunement"] = CONFIG.SW5E.attunementTypes.NONE;
updateData["data.-=attuned"] = null;
return updateData;
}

View file

@ -29,8 +29,8 @@ export default class AbilityTemplate extends MeasuredTemplate {
// Additional type-specific data
switch ( templateShape ) {
case "cone": // 5e cone RAW should be 53.13 degrees
templateData.angle = 53.13;
case "cone":
templateData.angle = CONFIG.MeasuredTemplate.defaults.angle;
break;
case "rect": // 5e rectangular AoEs are always cubes
templateData.distance = Math.hypot(target.value, target.value);

View file

@ -14,14 +14,13 @@ export const preloadHandlebarsTemplates = async function() {
"systems/sw5e/templates/actors/oldActor/parts/actor-inventory.html",
"systems/sw5e/templates/actors/oldActor/parts/actor-features.html",
"systems/sw5e/templates/actors/oldActor/parts/actor-powerbook.html",
"systems/sw5e/templates/actors/oldActor/parts/actor-notes.html",
"systems/sw5e/templates/actors/oldActor/parts/actor-notes.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-biography.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-core.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-active-effects.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-active-effects.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-features.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-inventory.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-notes.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-powerbook.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-resources.html",
"systems/sw5e/templates/actors/newActor/parts/swalt-traits.html",

75
package-lock.json generated
View file

@ -1,4 +1,5 @@
{
"name": "sw5e",
"requires": true,
"lockfileVersion": 1,
"dependencies": {
@ -89,7 +90,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
"integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
"dev": true,
"requires": {
"micromatch": "^3.1.4",
"normalize-path": "^2.1.1"
@ -99,7 +99,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
"remove-trailing-separator": "^1.0.1"
}
@ -272,7 +271,6 @@
"version": "0.11.2",
"resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
"integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
"dev": true,
"requires": {
"cache-base": "^1.0.1",
"class-utils": "^0.3.5",
@ -287,7 +285,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
@ -296,7 +293,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@ -305,7 +301,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@ -314,7 +309,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
@ -332,6 +326,7 @@
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"optional": true,
"requires": {
"file-uri-to-path": "1.0.0"
}
@ -349,7 +344,6 @@
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
"integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
"dev": true,
"requires": {
"arr-flatten": "^1.1.0",
"array-unique": "^0.3.2",
@ -367,7 +361,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@ -388,7 +381,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
"integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
"dev": true,
"requires": {
"collection-visit": "^1.0.0",
"component-emitter": "^1.2.1",
@ -419,7 +411,6 @@
"version": "2.1.8",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
"integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
"dev": true,
"requires": {
"anymatch": "^2.0.0",
"async-each": "^1.0.1",
@ -697,6 +688,7 @@
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
"integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
"optional": true,
"requires": {
"prr": "~1.0.1"
}
@ -782,7 +774,6 @@
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
"integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
"dev": true,
"requires": {
"debug": "^2.3.3",
"define-property": "^0.2.5",
@ -797,7 +788,6 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@ -806,7 +796,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@ -864,7 +853,6 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
"integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
"dev": true,
"requires": {
"array-unique": "^0.3.2",
"define-property": "^1.0.0",
@ -880,7 +868,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
"is-descriptor": "^1.0.0"
}
@ -889,7 +876,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@ -898,7 +884,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@ -907,7 +892,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
"requires": {
"kind-of": "^6.0.0"
}
@ -916,7 +900,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
"requires": {
"is-accessor-descriptor": "^1.0.0",
"is-data-descriptor": "^1.0.0",
@ -944,13 +927,13 @@
"file-uri-to-path": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"optional": true
},
"fill-range": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
"integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
"dev": true,
"requires": {
"extend-shallow": "^2.0.1",
"is-number": "^3.0.0",
@ -962,7 +945,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@ -982,7 +964,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
"integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
"dev": true,
"requires": {
"detect-file": "^1.0.0",
"is-glob": "^4.0.0",
@ -1055,7 +1036,6 @@
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
"dev": true,
"optional": true,
"requires": {
"bindings": "^1.5.0",
@ -1130,7 +1110,6 @@
"version": "5.0.5",
"resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.5.tgz",
"integrity": "sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw==",
"dev": true,
"requires": {
"anymatch": "^2.0.0",
"async-done": "^1.2.0",
@ -1180,7 +1159,6 @@
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz",
"integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==",
"dev": true,
"requires": {
"glob-watcher": "^5.0.3",
"gulp-cli": "^2.2.0",
@ -1192,7 +1170,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.3.0.tgz",
"integrity": "sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A==",
"dev": true,
"requires": {
"ansi-colors": "^1.0.1",
"archy": "^1.0.0",
@ -1220,7 +1197,6 @@
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/gulp-less/-/gulp-less-4.0.1.tgz",
"integrity": "sha512-hmM2k0FfQp7Ptm3ZaqO2CkMX3hqpiIOn4OHtuSsCeFym63F7oWlEua5v6u1cIjVUKYsVIs9zPg9vbqTEb/udpA==",
"dev": true,
"requires": {
"accord": "^0.29.0",
"less": "2.6.x || ^3.7.1",
@ -1256,7 +1232,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
"integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
"dev": true,
"requires": {
"get-value": "^2.0.6",
"has-values": "^1.0.0",
@ -1267,7 +1242,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
"integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
"dev": true,
"requires": {
"is-number": "^3.0.0",
"kind-of": "^4.0.0"
@ -1277,7 +1251,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
"integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@ -1300,7 +1273,8 @@
"image-size": {
"version": "0.5.5",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
"integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w="
"integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
"optional": true
},
"indx": {
"version": "0.2.3",
@ -1322,9 +1296,9 @@
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"ini": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
"integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
},
"interpret": {
"version": "1.4.0",
@ -1474,7 +1448,6 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
"requires": {
"kind-of": "^3.0.2"
},
@ -1483,7 +1456,6 @@
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
"is-buffer": "^1.1.5"
}
@ -1640,7 +1612,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz",
"integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==",
"dev": true,
"requires": {
"extend": "^3.0.0",
"findup-sync": "^3.0.0",
@ -1708,6 +1679,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
"integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"optional": true,
"requires": {
"pify": "^4.0.1",
"semver": "^5.6.0"
@ -1716,7 +1688,8 @@
"pify": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"optional": true
}
}
},
@ -1745,7 +1718,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz",
"integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=",
"dev": true,
"requires": {
"findup-sync": "^2.0.0",
"micromatch": "^3.0.4",
@ -1757,7 +1729,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz",
"integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=",
"dev": true,
"requires": {
"detect-file": "^1.0.0",
"is-glob": "^3.1.0",
@ -1769,7 +1740,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"dev": true,
"requires": {
"is-extglob": "^2.1.0"
}
@ -1780,7 +1750,6 @@
"version": "3.1.10",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
"integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
"dev": true,
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
@ -1800,7 +1769,8 @@
"mime": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
"optional": true
},
"minimatch": {
"version": "3.0.4",
@ -1842,13 +1812,13 @@
"nan": {
"version": "2.14.2",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
"integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ=="
"integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==",
"optional": true
},
"nanomatch": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
"integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
"dev": true,
"requires": {
"arr-diff": "^4.0.0",
"array-unique": "^0.3.2",
@ -2187,7 +2157,8 @@
"prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY="
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
"optional": true
},
"pump": {
"version": "2.0.1",
@ -2245,7 +2216,6 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
"integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.11",
"micromatch": "^3.1.10",
@ -2428,7 +2398,6 @@
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
"integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
"dev": true,
"requires": {
"base": "^0.11.1",
"debug": "^2.2.0",
@ -2444,7 +2413,6 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
"is-descriptor": "^0.1.0"
}
@ -2453,7 +2421,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
"is-extendable": "^0.1.0"
}
@ -2787,7 +2754,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
"integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
"dev": true,
"requires": {
"is-number": "^3.0.0",
"repeat-string": "^1.6.1"
@ -2857,7 +2823,8 @@
"uglify-to-browserify": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
"integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc="
"integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
"optional": true
},
"unc-path-regex": {
"version": "0.1.2",

9
package.json Normal file
View file

@ -0,0 +1,9 @@
{
"name": "sw5e",
"description": "This game system for [Foundry Virtual Tabletop](http://foundryvtt.com) provides character sheet and game system \r support for the SW5E roleplaying game.",
"main": "sw5e.js",
"dependencies": {
"gulp": "^4.0.2",
"gulp-less": "^4.0.1"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,98 +1,100 @@
{"_id":"10KjUfHaOKAiOw6T","name":"Survivalist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master wilderness lore, gaining the following benefits:</p>\n<ul>\n<li>Increase your Wisdom score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Survival skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You learn the <em>alarm</em> tech power. You can cast it once, using supplies scavenged around you, without the use of a wristpad and without spending tech points, and you regain the ability to do so when you finish a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.wis.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"10KjUfHaOKAiOw6T","active":false,"_targets":[],"label":"Abilities Wisdom"},{"modSpecKey":"data.skills.sur.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"10KjUfHaOKAiOw6T","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Survivalist.webp","effects":[]}
{"_id":"1DSm47d3mNU1rgya","name":"Empathic","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You possess keen insight into how other people think and feel. You gain the following benefits:</p>\n<ul>\n<li>Increase your Wisdom score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Insight skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You can use your action to try to get uncanny insight about one humanoid you can see within 30 feet of you. Make a Wisdom (Insight) check contested by the target's Charisma (Deception) check. On a success, you have advantage on attack rolls and ability checks against the target until the end of your next turn.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.wis.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"1DSm47d3mNU1rgya","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Empathic.webp","effects":[]}
{"_id":"1ZAghZJQflkZUVuG","name":"Martial Adept","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have martial training that allows you to perform special combat maneuvers. You gain the following benefits:</p>\n<ul>\n<li>You learn two maneuvers of your choice from among those available to the fighter class. If a maneuver you use requires your target to make a saving throw to resist the maneuvers effects, the saving throw DC equals 8 + your proficiency bonus + your Strength or Dexterity modifier (your choice).</li>\n<li>If you already have superiority dice, you gain one more; otherwise, you have two superiority dice, which are d4s. These dice are used to fuel your maneuvers. A superiority die is expended when you use it. You regain all of your expended superiority dice when you finish a short or long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"32xXZ9VyqvvuqX2O","name":"Observant","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Quick to notice details of your environment, you gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence or Wisdom score by 1, to a maximum of 20.</li>\n<li>If you can see a creature's mouth while it is speaking a language you understand, you can interpret what it's saying by reading its lips.</li>\n<li>You are considered to have advantage when determining your passive Wisdom (Perception) and passive Intelligence (Investigation) scores.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Observant.webp","effects":[]}
{"_id":"3tOeQ7XLC7omOmIc","name":"Sniping Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've practiced casting powers more accurately from long range, learning techniques that give you the following benefits:</p>\n<ul>\n<li>When you cast a power that requires you to make an attack roll, the power's range is doubled.</li>\n<li>Your ranged force and tech attacks ignore half cover and three-quarters cover.</li>\n<li>You learn one at-will power that requires an attack roll. Your casting ability for this at-will power depends on the power list you chose from: Wisdom or Charisma (depending on power alignment) for force powers or Intelligence for tech powers.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"The ability to cast force or tech powers","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"4DuaFCbiBxqL9eL3","name":"Lucky","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"You have inexplicable luck that seems to kick in at just the right moment.\r\n\r\nYou have 3 luck points. Whenever you make an attack roll, an ability check, or a saving throw, you can spend one luck point to roll an additional d20. You can choose to spend one of your luck points after you roll the die, but before the outcome is determined. You choose which of the d20s is used for the attack roll, ability check, or saving throw.\r\n\r\nYou can also spend one luck point when an attack roll is made against you. Roll a d20, and then choose whether the attack uses the attacker's roll or yours. If more than one creature spends a luck point to influence the outcome o f a roll, the points cancel each other out; no additional dice are rolled.\r\n\r\nYou regain your expended luck points when you finish a long rest.\r\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Lucky.webp","effects":[]}
{"_id":"4svS5qc5vl445fsU","name":"Precision Applications","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've honed your skills to fine edge, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You can use the bonus action granted by your Cunning Action to carefully aim your next attack. You gain advantage on your next attack roll before the end of your current turn. You can't use this feature if you have moved during this turn, and using this feature reduces your speed to 0 until the end of your current turn.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in operative","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"5YRWESEfVwbZC2Y6","name":"Heavy Weapon Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the assault cannon, bowcaster, scattergun, and shotgun. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>When a creature rolls a 1 on the saving throw against one of these weapons, it takes damage as if suffering a critical hit. If a creature would already suffer a critical hit when it rolls a 1 on this weapon's saving throw, it instead suffers a critical hit on a roll of 1 or 2.</li>\n<li>Whenever you score a critical hit against a creature that is holding an object, you can attempt to disarm the target. If the target is no more than one size larger than you (your size or smaller if your weapon has the light property), it must succeed on a Strength saving throw (DC = 8 + your proficiency bonus + your Dexterity modifier) or it drops an object of your choice at its feet.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Heavy%20Weapon%20Specialist.webp","effects":[]}
{"_id":"7WSolr5mmDrV654v","name":"Rifle Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the use of blaster carbine, blaster rifle, ion rifle, sniper rifle, and slugthrower. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>Whenever you have advantage on an attack roll and hit, and the lower of the two d20 rolls would also hit, you can attempt to snare the target. If the target is no more than one size larger than you (your size or smaller if your weapon has the light property), it must succeed on a Dexterity saving throw (DC = 8 + your proficiency bonus + your Dexterity modifier) or its movement speed is reduced by half until the end of it's next turn. If it's speed was already reduced by half, it is instead reduced to 5 feet.</li>\n<li>When a creature you can see misses you with an attack roll, you can use your reaction to Disengage and move up to half your speed. You must end this movement further away from the creature than you started.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Rifle%20Specialist.webp","effects":[]}
{"_id":"8rcm51F8jpbNXWs3","name":"Ace Pilot","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You're quite experienced both on land and in the air, be it from time in a navy, as a mercenary, or perhaps even piracy. You gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Piloting skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>Whenever you make an Intelligence (Investigation) or Wisdom (Perception) check related to vehicles or ships, you are considered to have expertise in the Investigation or Perception skill.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":null,"condition":"Intelligence (Investigation) or Wisdom (Perception) check related to vehicles or ships"},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":null,"long":null,"units":""},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"int","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":false},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"8rcm51F8jpbNXWs3","active":false,"_targets":[],"label":"Abilities Intelligence"},{"modSpecKey":"data.skills.pil.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"8rcm51F8jpbNXWs3","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Ace%20Pilot.webp","effects":[]}
{"_id":"9Tv2HgQeSEnALiup","name":"Supreme Accuracy","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have uncanny aim with attacks that rely on precision. You gain the following benefits:</p>\n<ul>\n<li>Increase your Dexterity, Intelligence, Wisdom, or Charisma score by 1, to a maximum of 20.</li>\n<li>Whenever you have advantage on an attack roll using Dexterity, Intelligence, Wisdom, or Charisma you can reroll one of the dice once.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Dexterity, Intelligence, Wisdom, or Charisma 13","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Supreme%20Accuracy.webp","effects":[]}
{"_id":"A3iKF2QaiLp57Kct","name":"Silver-Tongued","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You develop your conversational skill to better deceive others. You gain the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Deception skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>When you take the Attack action, you can replace one attack with an attempt to deceive one humanoid you can see within 30 feet of you that can see and hear you. Make a Charisma (Deception) check contested by the target's Wisdom (Insight) check. If your check succeeds, your movement doesn't provoke opportunity attacks from the target and your attack rolls against it have advantage; both benefits last until the end of your next turn or until you use this ability on a different target. If your check fails, the target can't be deceived by you in this way for 1 hour.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"A3iKF2QaiLp57Kct","active":false,"_targets":[],"label":"Abilities Charisma"},{"modSpecKey":"data.skills.dec.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"A3iKF2QaiLp57Kct","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Silver-Tongued.webp","effects":[]}
{"_id":"BGgoW3Cwxj28VTwz","name":"Power Adept","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"When you gain this feat, choose one of the following damage types: acid, cold, fire, force, lightning, or necrotic. Powers you cast ignore resistance to damage of the chosen type. In addition, when you roll damage for a power you cast that deals damage of that type, you can treat any 1 on a damage die as a 2.\r\n\r\nYou can select this feat multiple times. Each time you do so, you must choose a different damage type.\r\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"The ability to cast force or tech powers","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Power%20Adept.webp","effects":[]}
{"_id":"BaXJ9OO3GUF33Plg","name":"Investigator","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have an eye for detail and can pick out the smallest clues. You gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Investigation skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You can take the Search action as a bonus action.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"BaXJ9OO3GUF33Plg","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Investigator.webp","effects":[]}
{"_id":"BjWUsjBQzq4w1Q3s","name":"Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have focused training with a specific tool. Select one type of specialist's kit. You gain the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You gain proficiency with the chosen kit. If you are already proficient with it, you instead gain expertise with it.</li>\n<li>You can attempt ability checks with the chosen kit without the kit present, but you have disadvantage on the check when you do so.</li>\n<li>Whenever you make an ability check with the chosen kit and you don't have disadvantage on the check, you can treat a d20 roll of 9 or lower as a 10, as long as you spend at least 1 minute on the check. You can select this feat multiple times. Each time you do so, you must choose a different specialist's kit.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Specialist.webp","effects":[]}
{"_id":"D02rvwCBbp6mIwlH","name":"Galvanizing Presence","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your presence on the battlefield is a source of inspiration. You gain the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>As a bonus action, you let out a rallying war cry, ending the frightened or charmed condition on yourself and a number of allies that can hear you equal to your Charisma modifier (minimum of one). Once you've used this ability, you must complete a short or long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"D02rvwCBbp6mIwlH","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Galvanizing%20Presence.webp","effects":[]}
{"_id":"E1VLUKO9e7wb4mHm","name":"Athlete","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have undergone extensive physical training to gain the following benefits:</p>\n<ul>\n<li>Increase your Strength or Dexterity score by 1, to a maximum of 20.</li>\n<li>When you are prone, standing up uses only 5 feet of your movement.</li>\n<li>Climbing doesn't halve your speed.</li>\n<li>You can make a running long jump or a running high jump after moving only 5 feet on foot, rather than 10 feet.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Athlete.webp","effects":[]}
{"_id":"E89ZF9cltOGagy6F","name":"Keen Mind","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have a mind that can track time, direction, and detail with uncanny precision. You gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You always know which way is north.</li>\n<li>You always know the number of hours left before the next sunrise or sunset.</li>\n<li>You can accurately recall anything you have seen or heard within the past month.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"E89ZF9cltOGagy6F","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Keen%20Mind.webp","effects":[]}
{"_id":"E8mrRhc4BQEgapcA","name":"Augmented Cyborg","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've experimented with cybernetic augmentations, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>Choose one cybernetic augmentation of standard rarity from Appendix A. That augmentation is installed and doesn't count against the maximum cybernetic augmentations you can support, but it does count towards your total cybernetics augmentations as shown in the Cybernetic Augmentations Side Effects table in Chapter 7.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"EEMJ3UEwesgxC78X","name":"Lightly Armored","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have trained to master the use of light armor, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength, Dexterity, or Constitution score by 1, to a maximum of 20.</li>\n<li>You gain proficiency with light armor. If you are already proficient with light armor, instead while you are wearing light armor, your speed increases by 5 feet. You can take this feat twice.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.traits.armorProf.value","value":"lgt","mode":"+","targetSpecific":false,"id":1,"itemId":"EEMJ3UEwesgxC78X","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Lightly%20Armored.webp","effects":[]}
{"_id":"FF1sNY6xNbDsAnh1","name":"Actor","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Skilled at mimicry and dramatics, you gain the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>You have advantage on Charisma (Deception) and Charisma (Performance) checks when trying to pass yourself off as a different person.</li>\n<li>You can mimic the speech of another person or the sounds made by other creatures. You must have heard the person speaking, or heard the creature make the sound, for at least 1 minute. A successful Wisdom (Insight) check contested by your Charisma (Deception) check allows a listener to determine that the effect is faked.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"FF1sNY6xNbDsAnh1","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Actor.webp","effects":[]}
{"_id":"Gg5CP1rrrqslUvtd","name":"Perceptive","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You hone your senses until they become razor sharp. You gain the following benefits:</p>\n<ul>\n<li>Increase your Wisdom score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Perception skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>Being in a lightly obscured area doesn't impose disadvantage on your Wisdom (Perception) checks if you can both see and hear.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.wis.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"Gg5CP1rrrqslUvtd","active":false,"_targets":[],"label":"Abilities Wisdom"},{"modSpecKey":"data.skills.prc.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"Gg5CP1rrrqslUvtd","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Perceptive.webp","effects":[]}
{"_id":"GlrABR30jRsQnhfg","name":"Quick-Fingered","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your nimble fingers and agility let you perform sleight of hand. You gain the following benefits:</p>\n<ul>\n<li>Increase your Dexterity score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Sleight of Hand skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>As a bonus action, you can make a Dexterity (Sleight of Hand) check to plant something on someone else, conceal an object on a creature, lift a purse, or take something from a pocket.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.dex.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"GlrABR30jRsQnhfg","active":false,"_targets":[],"label":"Abilities Dexterity"},{"modSpecKey":"data.skills.slt.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"GlrABR30jRsQnhfg","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Quick-Fingered.webp","effects":[]}
{"_id":"Gm5pE7iTE74ITJlK","name":"Practiced","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have acquired skills over your career, gaining the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You gain proficiency in any combination of two skills or tools of your choice.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Practiced.webp","effects":[]}
{"_id":"HG3tsJyWM7X7fVIv","name":"Fighting Stylist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You adopt a particular style of fighting as your specialty, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength, Dexterity, or Constitution score by 1, to a maximum of 20.</li>\n<li>Choose one of the Fighting Style options, detailed earlier in this chapter. You can select this feat multiple times. You can't take a Fighting Style option more than once, even if you later get to choose again.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Fighting%20Stylist.webp","effects":[]}
{"_id":"HMtPma2N0myiF2il","name":"Battle Scarred","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've spent a lifetime fighting, with the scars to prove it. You gain the following benefits:</p>\n<ul>\n<li>Increase your Constitution score by 1, to a maximum of 20.</li>\n<li>When you roll a 19 or a 20 on the d20 for a death saving throw, you regain 1 hit point.</li>\n<li>When you are reduced to 0 hit points but not killed outright, you can drop to 1 hit point instead. Once you've used this ability, you must complete a long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"other","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.con.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"HMtPma2N0myiF2il","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Battle%20Scarred.webp","effects":[]}
{"_id":"J5eAWVCNYRZPsJzq","name":"Mariner","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've spent an exorbitant amount of time in water. You gain the following benefits:</p>\n<ul>\n<li>Increase your Constitution by 1, to a maximum of 20.</li>\n<li>You gain a swimming speed equal to your movement speed.</li>\n<li>You have advantage on ability checks and saving throws related to swimming.</li>\n<li>You can hold your breath for a number of minutes equal to 1 + twice your Constitution modifier.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.con.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"J5eAWVCNYRZPsJzq","active":false,"_targets":[]}]}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"JoDZj9iDHOq1K0L8","name":"Performer","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master performance so that you can command any stage. You gain the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Performance skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>While performing, you can try to distract one humanoid you can see who can see and hear you. Make a Charisma (Performance) check contested by the humanoid's Wisdom (Insight) check. If your check succeeds, you grab the humanoid's attention enough that it makes Wisdom (Perception) and Intelligence (Investigation) checks with disadvantage until you stop performing.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"JoDZj9iDHOq1K0L8","active":false,"_targets":[],"label":"Abilities Charisma"},{"modSpecKey":"data.skills.prf.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"JoDZj9iDHOq1K0L8","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Performer.webp","effects":[]}
{"_id":"K7DJqRZNotfWGZMK","name":"Alert","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Always on the lookout for danger, you gain the following benefits:</p>\n<ul>\n<li>You gain a +5 bonus to initiative.</li>\n<li>You can't be surprised while you are conscious.</li>\n<li>Other creatures don't gain advantage on attack rolls against you as a result of being unseen by you.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.attributes.init.value","value":"5","mode":"+","targetSpecific":false,"id":1,"itemId":"K7DJqRZNotfWGZMK","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Alert.webp","effects":[]}
{"_id":"KmOP744KaU2bOsX2","name":"Techie","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the theory and practice of technology, gaining the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Technology skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You learn the <em>repair droid</em> tech power. You can cast it once, using supplies scavenged around you, without the use of a wristpad and without spending tech points, and you regain the ability to do so when you finish a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"KmOP744KaU2bOsX2","active":false,"_targets":[],"label":"Abilities Intelligence"},{"modSpecKey":"data.skills.tec.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"KmOP744KaU2bOsX2","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Techie.webp","effects":[]}
{"_id":"LzF6ijAkhkIkiZdJ","name":"Forceful Vigor","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your strength and virility rarely go unnoticed, often to the point of distraction. You gain the following benefits:</p>\n<ul>\n<li>Increase your Strength score by 1, to a maximum of 20.</li>\n<li>You can use your Strength modifier instead of your Constitution modifier when making Constitution checks.</li>\n<li>When you would make a Constitution saving throw, you can instead make a Strength saving throw. You can use this feature a number of times equal to your Strength modifier. You regain all expended uses of this feature when you complete a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.str.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"LzF6ijAkhkIkiZdJ","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Forceful%20Vigor.webp","effects":[]}
{"_id":"NMzjgUDUPBVVJJdP","name":"Force of Personality","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Rooms never go unalerted to your presence, and the strength of your personality make others lose focus on their own social game. Powers and other effects infrequently override your force of will. You gain the following benefits:</p>\n<ul>\n<li>Your Charisma score increases by 1, to a maximum of 20.</li>\n<li>You can use your Charisma modifier instead of your Wisdom modifier when making Insight checks.</li>\n<li>When you would make a Wisdom saving throw, you can instead make a Charisma saving throw. You can use this feature a number of times equal to your Charisma modifier. You regain all expended uses of this feature when you complete a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"NMzjgUDUPBVVJJdP","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Force%20of%20Personality.webp","effects":[]}
{"_id":"Of8IhnbIiID6sUt4","name":"Charmer","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've master the art of charming those around you, gaining the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Persuasion skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>If you spend 1 minute talking to someone who can understand what you say, you can make a Charisma (Persuasion) check contested by the creature's Wisdom (Insight) check. If you or your companions are fighting the creature, your check automatically fails. If your check succeeds, the target is charmed by you as long as it remains within 60 feet of you and for 1 minute thereafter.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"Of8IhnbIiID6sUt4","active":false,"_targets":[],"label":"Abilities Charisma"},{"modSpecKey":"data.skills.per.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"Of8IhnbIiID6sUt4","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Charmer.webp","effects":[]}
{"_id":"QLLXt6fQiqI1Va2l","name":"Tech Dabbler","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"You know two at-will tech powers. When you reach 3rd level, you learn and can cast one 1st-level tech power once per long rest. When you reach 5th level, you learn and can cast one 2nd-level tech power once per long rest. Your techcasting ability is Intelligence. You do not require use of a tech focus for these powers.\r\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Tech%20Dabbler.webp","effects":[]}
{"_id":"Qv2nJWPLJ2klIEbQ","name":"Acrobat","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You become more nimble, gaining the following benefits:</p>\n<ul>\n<li>Increase your Dexterity score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Acrobatics skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>As a bonus action, you can make a DC 15 Dexterity (Acrobatics) check. If you succeed, difficult terrain doesn't cost you extra movement until the end of the current turn.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":1,"units":"turn"},"target":{"value":null,"width":null,"units":"","type":""},"range":{"value":null,"long":null,"units":""},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"dex","actionType":"abil","attackBonus":0,"chatFlavor":"As a bonus action, you can make a DC 15 Dexterity (Acrobatics) check. If you succeed, difficult terrain doesnt cost you extra movement until the end of the current turn.","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"dex","dc":15,"scaling":"flat"},"requirements":"","recharge":{"value":0,"charged":false},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.dex.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"Qv2nJWPLJ2klIEbQ","active":false,"_targets":[],"label":"Abilities Dexterity"},{"modSpecKey":"data.skills.acr.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"Qv2nJWPLJ2klIEbQ","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Acrobat.webp","effects":[]}
{"_id":"RDN5JNfiKs59xcGt","name":"Feigned Confidence","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've spent years pretending you know what you're doing, gaining the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>When you would make an ability check that doesn't add your proficiency bonus, you can first make a DC 15 (Charisma) Deception check. On a success, you can add your proficiency bonus to the check. You can use this feature a number of times equal to your Charisma modifier (a minimum of once). You regain all expended uses when you finish a short or long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"RDN5JNfiKs59xcGt","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Feigned%20Confidence.webp","effects":[]}
{"_id":"T0pMXR5lUepOZWAu","name":"Unnatural Resilience","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have the fortitude often attributed to gods, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Constitution saving throws. If you are already proficient in them, you add double your proficiency bonus to saving throws you make.</li>\n<li>Enhanced effects, such as powers or medpacs, that would restore hit points to you can't restore an amount less than half your level + your Constitution modifier. If this amount would exceed that maximum amount of hit points that effect could restore, you instead take that effect's maximum.</li>\n<li>You can add your Constitution modifier to death saving throws you make.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Constitution 20, level 12","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"T4oYkzdxQmcbHG6G","name":"Brawny","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You become stronger, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Athletics skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You count as if you were one size larger for the purpose of determining your carrying capacity.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.str.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"T4oYkzdxQmcbHG6G","active":false,"_targets":[],"label":"Abilities Strength"},{"modSpecKey":"data.skills.ath.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"T4oYkzdxQmcbHG6G","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Brawny.webp","effects":[]}
{"_id":"UUaYVEXcwbVHv2sr","name":"Healer","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You are an able medic, allowing you to mend wounds quickly and get your allies back in the fight. You gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence or Wisdom score by 1, to a maximum of 20.</li>\n<li>When you use a traumakit to stabilize a dying creature, that creature also regains 1 hit point.</li>\n<li>As an action, you can spend one use of a traumakit to tend to a creature and restore 1d6 + 4 hit points to it, plus additional hit points equal to the creature's maximum number of Hit Dice. The creature can't regain hit points again in this way until it finishes a short or long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Healer.webp","effects":[]}
{"_id":"VSXqyHXrw1kI3X91","name":"Close Quarters Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've practiced utilizing powers in close quarters, learning techniques that grant you the following benefits:</p>\n<ul>\n<li>When making a ranged force or tech attack while you are within 5 feet of a hostile creature, you do not have disadvantage on the attack roll.</li>\n<li>Your ranged force and tech attacks ignore half cover and three-quarters cover against targets within 30 feet of you.</li>\n<li>You learn one at-will power that requires an attack roll. Your casting ability for this at-will power depends on the power list you chose from: Wisdom or Charisma (depending on power alignment) for force powers or Intelligence for tech powers.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"The ability to cast force or tech powers","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"VUliXV0a3Owu4yuI","name":"Sidearm Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the blaster pistol, heavy pistol, hold out, ion pistol, light pistol, and wrist launcher. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>You learn to load and fire your weapon more efficiently. You can now reload these weapons using your object interaction. You must have one free hand to reload.</li>\n<li>Whenever you score a critical hit against a living creature that has a head, you can attempt to daze the target. If the target is no more than one size larger than you (your size or smaller if your weapon has the light property), it must succeed on a Constitution saving throw (DC = 8 + your proficiency bonus + your Dexterity modifier) or be stunned until the end of its next turn.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Sidearm%20Specialist.webp","effects":[]}
{"_id":"VxSLc899DPLmuepp","name":"Animal Handler","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the techniques needed to train and handle animals. You gain the following benefits:</p>\n<ul>\n<li>Increase your Wisdom score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Animal Handling skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You can use a bonus action on your turn to command one friendly beast within 60 feet of you that can hear you and that isn't currently following the command of someone else. You decide now what action the beast will take and where it will move during its next turn, or you issue a general command that lasts for 1 minute, such as to guard a particular area.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":0,"units":""},"target":{"value":1,"width":null,"units":"","type":"creature"},"range":{"value":60,"long":60,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"other","attackBonus":0,"chatFlavor":"You can use a bonus action on your turn to command one friendly beast within 60 feet of you that can hear you and that isn't currently following the command of someone else. You decide now what action the beast will take and where it will move during its next turn, or you issue a general command that lasts for 1 minute, such as to guard a particular area.","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":false},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.wis.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"VxSLc899DPLmuepp","active":false,"_targets":[],"label":"Abilities Wisdom"},{"modSpecKey":"data.skills.ani.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"VxSLc899DPLmuepp","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Animal%20Handler.webp","effects":[]}
{"_id":"W15mnFHa0xq3tXL1","name":"Fighting Master","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"You've mastered a particular style of fighting. Choose one of the Fighting Mastery options, detailed earlier in this chapter. You can select this feat multiple times. You can't take a Fighting Mastery option more than once, even if you later get to choose again.\r\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Fighting%20Master.webp","effects":[]}
{"_id":"W8VTyuB1D1pa4s4N","name":"Serene Resolve","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've learned to adapt the Force in new ways, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>As a bonus action, you can expend a use of your Channel the Force to regain 2 force points.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":null,"long":null,"units":""},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in guardian","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"WaO9gKAZN43oQrsA","name":"Promising Commander","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've trained relentlessly to lead your allies on the field of battle, gaining the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>As an action, you can gain tactical insight. For one minute, once per turn you can can utter a special command or warning whenever an ally you can see within 30 feet makes an attack roll or saving throw. This creature can add a d4 to the roll provided it can hear and understand you. A creature can only benefit from one such die at a time. Once you've used this feature, you must complete a short or long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"WaO9gKAZN43oQrsA","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Promising%20Commander.webp","effects":[]}
{"_id":"WtF8rN7cxIc3D86D","name":"Durable","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Hardy and resilient, you gain the following benefits:</p>\n<ul>\n<li>Increase your Constitution score by 1, to a maximum of 20.</li>\n<li>When you roll a Hit Die to regain hit points, the minimum number of hit points you can regain from the roll equals twice your Constitution modifier (minimum of 2).</li>\n<li>Your hit point maximum increases by an amount equal to twice your level when you gain this feat. Whenever you gain a level thereafter, your hit point maximum increases by an additional 2 hit points.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.con.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"WtF8rN7cxIc3D86D","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Durable.webp","effects":[]}
{"_id":"XRtb4NmElyRsERrk","name":"Adaptive Training","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've developed a new fluidity to your training and practice, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>Whenever you complete a long rest, you can replace a fighting style you know with another style available. You can't take a Fighting Style option more than once, even if you later get to choose again.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in fighter","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"Xqo6KzAFPtLdW9YS","name":"Moderately Armored","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have trained to master the use of medium armor, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength, Dexterity, or Constitution score by 1, to a maximum of 20.</li>\n<li>You gain proficiency with medium armor. If you are already proficient with medium armor, instead while you are wearing medium armor, you can add 3, rather than 2, to your AC if you have a Dexterity of 16 or higher, and you ignore the bulky property of medium armor. You can take this feat twice.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Proficiency with light armor","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.traits.armorProf.value","value":"med","mode":"+","targetSpecific":false,"id":1,"itemId":"Xqo6KzAFPtLdW9YS","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Moderately%20Armored.webp","effects":[]}
{"_id":"XuhxzosKJIBWpWHU","name":"Savage Shorty","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Despite being short of stature, your size has no impact on your strength and virility. You gain the following benefits:</p>\n<ul>\n<li>Increase your Strength score by 1, to a maximum of 20.</li>\n<li>Your speed increases by 5 feet.</li>\n<li>You lose the Undersized special trait.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Strength 13, size Small","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.str.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"XuhxzosKJIBWpWHU","active":false,"_targets":[],"label":"Abilities Strength"},{"modSpecKey":"data.attributes.speed.value","value":"5","mode":"+","targetSpecific":false,"id":2,"itemId":"XuhxzosKJIBWpWHU","active":false,"_targets":[]}]}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"YJOdr43nmsPXAxp3","name":"Naturalist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your extensive study of nature rewards you with the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Nature skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You learn the <em>toxin scan</em> tech power. You can cast it once, using supplies scavenged around you, without the use of a wristpad and without spending tech points, and you regain the ability to do so when you finish a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"YJOdr43nmsPXAxp3","active":false,"_targets":[],"label":"Abilities Intelligence"},{"modSpecKey":"data.skills.nat.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"YJOdr43nmsPXAxp3","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Naturalist.webp","effects":[]}
{"_id":"YfISDL99fjJ9WYy3","name":"Focused Vitality","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've learned to harness your focus to restore yourself, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>As an action, you can spend 2 focus points and roll a Martial Arts die. You regain a number of hit points equal to the amount rolled + your Wisdom or Charisma modifier (your choice, a minimum of one).</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in monk","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"YhvSSzW56SuR7Kja","name":"Casting Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Choose one from force- or tech-casting. You've mastered your chosen casting type, gaining the following benefits:</p>\n<ul>\n<li>You gain a +1 bonus to your force or tech save DC and your force or tech attack modifier.</li>\n<li>Once per turn, when you cast a power that requires an attack roll or saving throw, you can have advantage on one attack roll, or you can force one creature affected by the power to have advantage or disadvantage on the saving throw (your choice). Once you've used this feature on a creature, you can't do so again until you complete a short or long rest.</li>\n<li>Once per turn, when you cast a power that doesn't require an attack roll or saving throw but requires a die roll, you can choose the maximum or minimum on the die (your choice). If the power requires rolling multiple dice, you can only affect a number of them equal to half your proficiency bonus (rounded up) in this way. You can select this feat twice. Each time you do so, you must choose a different casting type.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"The ability to cast force or tech powers","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Casting%20Specialist.webp","effects":[]}
{"_id":"YrUXpp1j01lHSmxG","name":"Blade Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the doubleblade, doublesaber, doubleshoto, doublesword, hidden blade, lightdagger, lightfoil, lightsaber, martial lightsaber, shotosaber, techblade, vibroblade, vibrodagger, and vibrorapier. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>As a bonus action, you can take a parrying stance. While you are in this stance and you aren't wielding a shield, you gain a bonus to AC equal to half your proficiency bonus (rounded up) until the start of your next turn.</li>\n<li>You score a critical hit on a roll of 19 or 20.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":null,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":null,"long":null,"units":""},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":false},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Blade%20Specialist.webp","effects":[]}
{"_id":"a4Id4dk3ov3dYw7X","name":"Polearm Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the lightsaber pike, saberspear, vibrolance, vibropike, and vibrospear. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>When you take the Attack action, you can use a bonus action to make a melee attack with the opposite end of the weapon. The weapon's damage die for this attack is a d4, and the attack deals kinetic damage. If the weapon has the reach property, the bonus action attack does not benefit from this property.</li>\n<li>When you take the Attack action, you can choose to forgo one of your attacks. If you do so, your reach increases by 5 feet until the start of your next turn.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Polearm%20Specialist.webp","effects":[]}
{"_id":"aYMhiCMRBwH1WomL","name":"Linguist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have studied languages and codes, gaining the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You learn three languages of your choice.</li>\n<li>You can ably create written ciphers. Others can't decipher a code you create unless you teach them, they succeed on an Intelligence check (DC equal to your Intelligence score + your proficiency bonus), or they use a power to decipher it.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"aYMhiCMRBwH1WomL","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Linguist.webp","effects":[]}
{"_id":"ai5BTh0VA5FpLVtu","name":"Force Guidance","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've learned to utilize your gift with the Force in a specific, unique way. You gain the following benefits:</p>\n<ul>\n<li>Increase your Wisdom or Charisma score by 1, to a maximum of 20.</li>\n<li>Choose a skill or tool in which you are proficient. When you make an ability check with the chosen skill or tool, you can add half your Wisdom or Charisma modifier (your choice, rounded down, minimum of one) to the check if it doesn't already include that modifier. You can use this feature a number of times equal to your Wisdom or Charisma modifier (your choice, a minimum of once). You regain all expended uses when you complete a long rest. You can select this feat multiple times. Each time you do so, you must choose a different skill or tool.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"The ability to cast force powers","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Force%20Guidance.webp","effects":[]}
{"_id":"aujuUebb7f4e6ht8","name":"Threatening","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You become fearsome to others, gaining the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Intimidation skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>When you take the Attack action, you can replace one attack with an attempt to demoralize one humanoid you can see within 30 feet of you that can see and hear you. Make a Charisma (Intimidation) check contested by the target's Wisdom (Insight) check. If your check succeeds, the target is frightened until the end of your next turn. If your check fails, the target can't be frightened by you in this way for 1 hour.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"aujuUebb7f4e6ht8","active":false,"_targets":[],"label":"Abilities Charisma"},{"modSpecKey":"data.skills.itm.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"aujuUebb7f4e6ht8","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Threatening.webp","effects":[]}
{"_id":"cHFXtjcgWLkCTAea","name":"Heavily Armored","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have trained to master the use of heavy armor, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength, Dexterity, or Constitution score by 1, to a maximum of 20.</li>\n<li>You gain proficiency with heavy armor. If you are already proficient with heavy armor, instead while you are wearing heavy armor, critical hits made against you are treated as normal hits. You can take this feat twice.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Proficiency with medium armor","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.traits.armorProf.value","value":"hvy","mode":"+","targetSpecific":false,"id":1,"itemId":"cHFXtjcgWLkCTAea","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Heavily%20Armored.webp","effects":[]}
{"_id":"ccsjgZgwSyw3r0on","name":"Exalted Awareness","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have the wisdom associated with the most renowned masters of the Force, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Wisdom saving throws. If you are already proficient in them, you add double your proficiency bonus to Wisdom saving throws you make.</li>\n<li>Creatures within 60 feet of you have disadvantage on Dexterity (Stealth) checks made to hide from you.</li>\n<li>As an action, you can sense the presence of illusions and other effects designed to deceive the senses within 30 feet of you, provided that you aren't blinded or deafened. You sense that an effect is trying to trick you, but you gain no insight into what is hidden or its true nature. Once you've used this feature, you must complete a short or long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Wisdom 20, level 12","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"ckcrU1ZRdKmq4hQY","name":"Fanatic","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Every blow that hits your enemies makes you feel closer to victory, making you shake in excitement. You gain the following benefits:</p>\n<ul>\n<li>When you score a critical hit with an attack roll or reduce a creature to 0 hit points, you can make one weapon attack as a bonus action.</li>\n<li>Whenever a creature you can see within 30 feet is reduced to 0 hit points, you go into a fervor gaining temporary hit points equal to 1d4 + your Constitution modifier.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Fanatic.webp","effects":[]}
{"_id":"cnf7zry702QLzotX","name":"Meditative Mindfulness","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've delved to new depths during your meditation, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>When you complete a long rest, you can choose one of the force powers you know and replace it with another force power, as long as that power is not of a higher level than your Max Power Level.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in consular","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"dAmUh0ASLU1xshOs","name":"Combat Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've practiced making your powers more difficult to avoid, learning techniques that grant you the following benefits:</p>\n<ul>\n<li>When a creature rolls a 1 on the d20 roll of a saving throw against a power you cast that deals damage, they instead take the highest number possible for the damage die.</li>\n<li>You learn one at-will power that requires a saving throw. Your casting ability for this at-will power depends on the power list you chose from: Wisdom or Charisma (depending on power alignment) for force powers or Intelligence for tech powers.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"The ability to cast force or tech powers","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"dQzURN2q97jG47Qo","name":"Quick Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've practiced casting powers in quick succession, learning techniques that grant you the following benefits:</p>\n<ul>\n<li>When you cast a power with a casting time of a bonus action, you may use your action to cast a power with a power level no higher than half your proficiency bonus (rounded down).</li>\n<li>When you cast a power with a casting time of a bonus action, you can cast it without expending force or tech points as long as it is no higher level than your proficiency bonus. Once you've used this feature, you must complete a long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"The ability to cast force or tech powers","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"dSjQBf5jwukcGDfY","name":"Force-Sensitive","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"You know two at-will force powers. When you reach 3rd level, you learn one 1st-level force power, which you can cast once per long rest. When you reach 5th level, you learn one 2nd-level force power, which you can once per long rest. Your forcecasting ability is Wisdom or Charisma (depending on power alignment). Additionally, you lose the Force-Insensitive special trait if you have it.\r\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Creature type","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Force-Sensitive.webp","effects":[]}
{"_id":"dWfbvXKx0ZDEEY4w","name":"Overwhelming Presence","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have the presence of the most affluent of leaders, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Charisma saving throws. If you are already proficient in them, you add double your proficiency bonus to Charisma saving throws you make.</li>\n<li>While you are conscious, up to five friendly creatures within 30 feet of you who can see or hear you and who can understand you can gain a bonus to one Intelligence, Wisdom, or Charisma saving throw they make equal to your Charisma modifier. Once they've done so, they can't do so again until they finish a short or long rest.</li>\n<li>As an action, you can attempt to distract up to five creatures you can see within 30 feet of you. Each creature must make a Wisdom saving throw (DC = 8 + your proficiency bonus + your Charisma modifier). Any creature immune to being charmed is unaffected. If you or your companions are fighting a creature, it has advantage on the saving throw. On a failed save, for the next minute, a creature has disadvantage on Wisdom (Perception) checks made to perceive any creature other than you until the effect ends or until the target can no longer see or hear you. The feature ends early if you are incapacitated.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Charisma 20, level 12","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"dYGd07LLEJu5RKzH","name":"Trip Weapon Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the chakram, light ring, net, saberwhip, vibrobaton, vibrostaff, and vibrowhip. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>As a bonus action on your turn, you can extend your weapon to sweep around and pull down an opponent's shield. Until the end of that creature's next turn, it gains no benefit to armor class from its shield.</li>\n<li>When you score a critical hit with the weapon or hit with an opportunity attack using the weapon, you can attempt to trip the opponent as well. If the target is no more than one size larger (your size or smaller if your weapon has the light property), it must succeed on a Strength saving throw (DC = 8 + your proficiency bonus + your choice of either your Strength or Dexterity modifier) or be knocked prone.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Trip%20Weapon%20Specialist.webp","effects":[]}
{"_id":"drXPCTuKznN8IXBN","name":"Versatile Design","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've learned to approach problems from new angles, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>When you complete a long rest, you can choose one of the maneuvers you know and replace it with another one.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in scholar","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"eqBlqioFPauxq798","name":"Cunning Intellect","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have the cunning of the most prolific scholars, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Intelligence saving throws. If you are already proficient in them, you add double your proficiency bonus to Intelligence saving throws you make.</li>\n<li>When you engage in the Training downtime activity, during resolution, you add your proficiency bonus to the check. If you would already add your proficiency bonus, you instead add twice your proficiency bonus.</li>\n<li>Whenever you make an ability check that uses your Intelligence, you can add half your proficiency bonus (rounded down) if it doesn't already include your proficiency bonus. Additionally, if you roll lower than half your level (rounded down) on an Intelligence check, you can instead use your level for the d20 roll.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Intelligence 20, level 12","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false,"effects":[]}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"fohQLLoe5AnkvvaC","name":"Medic","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the physician's arts, gaining the following benefits:</p>\n<ul>\n<li>Increase your Wisdom score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Medicine skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>During a short rest, you can clean and bind the wounds of up to six willing beasts and humanoids. Make a DC 15 Wisdom (Medicine) check for each creature. On a success, if a creature spends a Hit Die during this rest, that creature can forgo the roll and instead regain the maximum number of hit points the die can restore. A creature can do so only once per rest, regardless of how many Hit Dice it spends.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.wis.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"fohQLLoe5AnkvvaC","active":false,"_targets":[],"label":"Abilities Wisdom"},{"modSpecKey":"data.skills.med.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"fohQLLoe5AnkvvaC","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Medic.webp","effects":[]}
{"_id":"fz4xeG1EtHJNBHQy","name":"Bountiful Luck","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"Your people have extraordinary luck, which you have learned to lend to your companions when you see them falter. You're not sure how you do it; you just wish it, and it happens. Surely a sign of fortune's favor!\r\n\r\nWhen an ally you can see within 30 feet of you rolls a 1 on the d20 for an attack roll, an ability check, or a saving throw, you can use your reaction and expend 1 luck point to let the ally reroll the die. The ally must use the new roll.\r\n\r\nWhen you use this ability, you can't use luck points before the end of your next turn. \r\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Lucky feat","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Bountiful%20Luck.webp","effects":[]}
{"_id":"gQDk0fGDlFDVl9Uj","name":"Inspiring Leader","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"You can spend 10 minutes inspiring your companions, shoring up their resolve to fight. When you do so, choose up to six friendly creatures (which can include yourself) within 30 feet of you who can see or hear you and who can understand you. Each creature can gain temporary hit points equal to your level + your Charisma modifier. A creature can't gain temporary hit points from this feat again until it has finished a short or long rest.\r\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Charisma 13","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Inspiring%20Leader.webp","effects":[]}
{"_id":"h9fsZnfh6RP9PiZv","name":"Dual Focused Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have learned to bifurcate your attention while concentrating on powers, learning techniques that grant you the following benefits:</p>\n<ul>\n<li>If you attempt to cast a power that requires concentration while already concentrating on an existing power, you can maintain concentration on both powers simultaneously. You must spend your action each subsequent round on maintaining this concentration, or lose concentration for both powers.</li>\n<li>At the end of each of your turns where you have two powers you are concentrating on, you must make a Constitution saving throw (DC equals 10 + the number of complete rounds you've been concentrating on two powers). On a failure, you lose concentration for both powers. You can drop concentration on one of your powers during your turn as a free action to avoid this saving throw.</li>\n<li>Any time you would be forced to make a Constitution saving throw to maintain concentration due to taking damage, the DC equals 10 + both powers' levels combined, or half the damage you take, whichever number is higher. On a failure, you lose concentration on both powers.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"The ability to cast force or tech powers","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"iEFbSjp7DaDSo8Az","name":"Tough","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have the blood of heroes flowing through your veins. You gain the following benefits:</p>\n<ul>\n<li>Increase your Constitution score by 1, to a maximum of 20.</li>\n<li>Whenever you take the Dodge action in combat, you can spend one Hit Die to heal yourself. Roll the die, add your Constitution modifier, and regain a number of hit points equal to the total (minimum of one).</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Durable feat","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.con.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"iEFbSjp7DaDSo8Az","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Tough.webp","effects":[]}
{"_id":"ig8TPZw7mt3jQqbi","name":"Tireless Outrider","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've pushed yourself past the limits of your endurance, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>As an action, you can reduce your exhaustion level by 1 and give yourself a number of temporary hit points equal to 1d10 + your Intelligence modifier. Once you've used this feature, you must complete a short or long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in scout","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"iiZ66oT6lIqkrOGk","name":"Weapon Expert","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have practiced extensively with a variety of weapons, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength, Dexterity, or Constitution score by 1, to a maximum of 20.</li>\n<li>You gain proficiency with all blasters, lightweapons, and vibroweapons. If you are already proficient with them, instead once per turn when you roll damage for a weapon attack using a weapon with which you are proficient, you can reroll the weapon's damage dice and use either total. You can take this feat twice.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.traits.weaponProf.custom","value":"all blasters","mode":"+","targetSpecific":false,"id":1,"itemId":"iiZ66oT6lIqkrOGk","active":false,"_targets":[],"label":"Traits Weapon Prof. Custom"},{"modSpecKey":"data.traits.weaponProf.custom","value":"all lightweapons","mode":"+","targetSpecific":false,"id":2,"itemId":"iiZ66oT6lIqkrOGk","active":false,"_targets":[],"label":"Traits Weapon Prof. Custom"},{"modSpecKey":"data.traits.weaponProf.custom","value":"all vibroweapons","mode":"+","targetSpecific":false,"id":3,"itemId":"iiZ66oT6lIqkrOGk","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Weapon%20Expert.webp","effects":[]}
{"_id":"jjAqimaLDJ9GoSSL","name":"Customized Droid","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've been customized beyond other droids of the same model, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>Choose one droid customization of standard rarity from Appendix A. That customization is installed and doesn't count against the maximum droid customizations you can support, but it does count towards your maximum parts as shown in the Droid Size Maximum Parts table in Chapter 7.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Class I, II, III, IV, or V Droid","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"k316FEnj9NARisTU","name":"Expert Potency","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've obtained new ways to assist your allies, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>When a creature has a Potent Aptitude die from you and casts a power, they can roll the die and add the number rolled to one damage or healing roll of the power. If the power would damage or heal multiple targets, this bonus only applies to one of them. The Potent Aptitude die is then lost.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in engineer","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"kbN0CSXPaTs3mfan","name":"Mounted Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You are trained in the use of powers while mounted. While you are mounted and aren't incapacitated, you gain the following benefits:</p>\n<ul>\n<li>When you cast a power targeting yourself, you can also affect your mount with the power.</li>\n<li>You have advantage on melee force or tech attack rolls against any unmounted creature that is smaller than your mount.</li>\n<li>If your mount is subjected to an effect that allows it to make a Dexterity saving throw to take only half damage, it instead takes no damage if it succeeds on the saving throw, and only half damage if it fails.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"The ability to cast force or tech powers","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"l16JW8IL3N6NSivU","name":"War Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've practiced casting powers in the midst of combat, learning techniques that grant you the following benefits:</p>\n<ul>\n<li>You have advantage on Constitution saving throws that you make to maintain your concentration on a power when you take damage.</li>\n<li>Once per round, when a hostile creature provokes an opportunity attack from you, you can use your reaction to cast a power at the creature, rather than making an opportunity attack. The power must have a casting time of 1 action and must target only that creature.</li>\n</ul>\n<h3>Class-Specific Feats</h3>\n<p>Some players might find their class missing a little something. These feats are designed to give characters who focus on a single class a little more identity.</p>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"The ability to cast force or tech powers","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"lWHtIoW012u1QQ53","name":"Resilient","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Choose one ability score. You gain the following benefits:</p>\n<ul>\n<li>Increase the chosen ability score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in saving throws using the chosen ability.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Resillient.webp","effects":[]}
{"_id":"m5FKO0ltZGdxtadH","name":"Entertainer","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have a natural gift for performing and competing. Select one gaming set or musical instrument. You gain the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the chosen gaming set or musical instrument. If you are already proficient with it, you instead gain expertise with it.</li>\n<li>While playing your chosen instrument or game, you can always readily read the emotions of those paying attention to you. During this time, and for up to one minute after completing, you have advantage on Wisdom (Insight) checks to read the emotions of those you performed for or competed against. You can select this feat multiple times. Each time you do so, you must choose a different gaming set or musical instrument.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Entertainer.webp","effects":[]}
{"_id":"odprUVlMYRnJ4OOJ","name":"Dungeon Delver","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Alert to the hidden traps and secret doors found in many dungeons, you gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence or Wisdom score by 1, to a maximum of 20.</li>\n<li>You have advantage on Wisdom (Perception) and Intelligence (Investigation) checks made to detect the presence of secret doors.</li>\n<li>You have advantage on saving throws made to avoid or resist traps.</li>\n<li>You have resistance to the damage dealt by traps.</li>\n<li>You can search for traps while traveling at a normal pace, instead of only at a slow pace.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Dungeon%20Delver.webp","effects":[]}
{"_id":"ozWdapIWplYGXv7g","name":"Snappy Interjection","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've mastered a quick tongue to aid your allies. You gain the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>Once per short or long rest, when an ally makes an attack roll, an ability check or a saving throw, you can spend your reaction to give them advantage on the roll.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"ozWdapIWplYGXv7g","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Snappy%20Interjection.webp","effects":[]}
{"_id":"p22Fu1TzzQ0zG6KI","name":"Climber","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You excel at scaling cliffsides, hills, trees, and general climbing. You gain the following benefits:</p>\n<ul>\n<li>Increase your Strength score by 1, to a maximum of 20.</li>\n<li>You gain a climbing speed equal to your movement speed.</li>\n<li>You have advantage on ability checks and saving throws to avoid falling off or down while climbing.</li>\n<li>You can spend 5 minutes instructing, pointing out handholds, and guiding other creatures before making a climb. When you do so, choose up to six friendly creatures (which can include yourself) within 30 feet of you. Each creature can add a 1d6 to any ability check or saving throw they make for that climb.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.str.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"p22Fu1TzzQ0zG6KI","active":false,"_targets":[]}]}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"p9p9uvgtw0as7ecU","name":"Relentless Pursuer","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've harnessed a new level of persistence, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>When a creature ends its turn within 15 feet of you, you can use your reaction to move up to half your speed to a space closer to the creature. This movement doesn't provoke opportunity attacks.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in berserker","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"q7ahgoAYWA5ghy81","name":"Tiny Terror","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Despite falling below knee height of other species, your size has less impact on your strength and virility. You gain the following benefits:</p>\n<ul>\n<li>Increase your Strength score by 1, to a maximum of 20.</li>\n<li>Your speed increases by 5 feet.</li>\n<li>You lose the Pintsized special trait, and you are no longer limited to +3 when determing your bonus to attack and damasge rolls for weapon attacks using Strength due to the Puny special trait.</li>\n<li>You gain the Undersized special trait:<br><br><strong><em>Undersized.</em></strong> Your small stature makes it hard for you to wield bigger weapons. You can't use heavy shields or martial weapons with the two-handed property unless it has the light property, and if a martial weapon has the versatile property, you can only wield it in two-hands.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Strength 13, size Tiny","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.str.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"q7ahgoAYWA5ghy81","active":false,"_targets":[],"label":"Abilities Strength"},{"modSpecKey":"data.attributes.speed.value","value":"5","mode":"+","targetSpecific":false,"id":2,"itemId":"q7ahgoAYWA5ghy81","active":false,"_targets":[]}]}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"qW28id0DXW7FjT6V","name":"Crushing Weapon Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the greatsaber, techaxe, techstaff, vibroaxe, vibroknuckler, vibromace, and vibrosword. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>Whenever you have advantage on an attack roll and hit, and the lower of the two d20 rolls would also hit, you can attempt to knock the target prone. If the target is no more than one size larger than you (your size or smaller if your weapon has the light property), make a Strength (Athletics) check contested by the target's Strength (Athletics) or Dexterity (Acrobatics) check (the target chooses the ability). If you win the contest, the target is knocked prone.</li>\n<li>Once per round, when you use your reaction to make a melee weapon attack, you have advantage on the attack roll.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Crushing%20Weapon%20Specialist.webp","effects":[]}
{"_id":"sC2RPRGuIXbzP4Vc","name":"Mobile","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You are exceptionally speedy and agile. You gain the following benefits:</p>\n<ul>\n<li>Your speed increases by 10 feet.</li>\n<li>When you use the Dash action, difficult terrain doesn't cost you extra movement on that turn.</li>\n<li>When you make a melee attack against a creature, you don't provoke opportunity attacks from that creature for the rest of the turn, whether you hit or not.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.attributes.speed.value","value":"10","mode":"+","targetSpecific":false,"id":1,"itemId":"sC2RPRGuIXbzP4Vc","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Mobile.webp","effects":[]}
{"_id":"tVElcveiEV69LpMD","name":"Titan's Power","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have the strength that legends tell of, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Strength saving throws. If you are already proficient in them, you add double your proficiency bonus to Strength saving throws you make.</li>\n<li>You ignore the <em>two-handed</em> property of weapons with which you are proficient.</li>\n<li>When you miss with a melee weapon attack, the creature takes damage equal to your Strength modifier. This damage is of the same type as the weapon's damage.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Strength 20, level 12","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"tc0x7wRpNsW1O2Zz","name":"Prone Combatant","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've practiced fighting while prone, gaining the following benefits:</p>\n<ul>\n<li>Increase your Dexterity score by 1, to a maximum of 20.</li>\n<li>You gain a crawling speed equal to your movement speed.</li>\n<li>You no longer have disadvantage on ranged attack rolls against targets within 30 feet.</li>\n<li>When you attempt to hide on your turn while prone, you can opt to not move on that turn. If you avoid moving, you are considered lightly obscured. You lose this benefit if you move or stand up, either voluntarily or because of some external effect. You are still automatically detected if any effect or action causes you to no longer be hidden. If you are still hidden on your next turn, you can continue to remain motionless and gain this benefit until you are detected.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.dex.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"tc0x7wRpNsW1O2Zz","active":false,"_targets":[]}]}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"tzePc2J19K2YB4Mt","name":"Loremaster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your study of history rewards you with the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Lore skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>When you take the Help action to aid another creature's ability check, you can make a DC 15 Intelligence (Lore) check. On a success, that creature's check gains a bonus equal to your proficiency bonus, as you share pertinent advice and historical examples. To receive this bonus, the creature must be able to understand what you're saying.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"tzePc2J19K2YB4Mt","active":false,"_targets":[],"label":"Abilities Intelligence"},{"modSpecKey":"data.skills.lor.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"tzePc2J19K2YB4Mt","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Loremaster.webp","effects":[]}
{"_id":"uYSCaHw1CtA3VJEY","name":"Quick-Witted","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Great ideas come to you naturally, often when your life depends on it. You always have a plan, or at least parts of it. You gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You can use your Intelligence modifier instead of your Dexterity modifier when making initiative checks.</li>\n<li>When you would make a Dexterity saving throw, you can instead make an Intelligence saving throw. You can use this feature a number of times equal to your Intelligence modifier. You regain all expended uses of this feature when you complete a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"uYSCaHw1CtA3VJEY","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Quick-Witted.webp","effects":[]}
{"_id":"ua8SMi9eB45JvLvn","name":"Shard Modification","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You are specially modified droid used to house a shard. Shards are sentient crystals native to the planet Orax, roughly a foot in length, that communicate with each other through pulses of light. While inhabiting a specialized droid host, shards are able to overcome the droid's inability to wield the Force, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You lose the Force Insensitive special trait.</li>\n<li>You can cast the <em>sense force</em> force power once per day. Wisdom or Charisma (your choice) is your forcecasting ability for this power.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Creature type","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"vesMmgkOBAQLvIEU","name":"Blinding Agility","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have the reflexes one who can see things before they happen, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Dexterity saving throws. If you are already proficient in them, you add double your proficiency bonus to Dexterity saving throws you make.</li>\n<li>Weapons that lack the <em>two-handed</em> or <em>special</em> properties are considered to have the finesse property for you.</li>\n<li>Opportunity attacks made against you have disadvantage.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Dexterity 20, level 12","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"vxDwtMysjVevQ9RN","name":"Crafter","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have a knack for crafting; you work with greater efficiency and produce goods of higher quality. Select one type of artisan's implements. You gain the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You gain proficiency with the chosen tool. If you are already proficient with it, you instead gain expertise with it.</li>\n<li>When you craft something with the chosen tool, the total market value you can craft increases 50 cr per day. If you have expertise with it, the market value instead increases by 100 cr per day.</li>\n<li>If you use the tool you've selected to practice a profession during downtime, you can support a lifestyle one higher than you would normally be able to. You can select this feat multiple times. Each time you do so, you must choose a different set of artisan's implements.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Crafter.webp","effects":[]}
{"_id":"y09iFQHd9gACYeKn","name":"Haggler","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your skills at bartering have granted you the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, up to a maximum of 20.</li>\n<li>You have advantage on Charisma (Persuasion) and Charisma (Deception) checks when attempting to barter or trade.</li>\n<li>You are always aware of the current monetary value for any unenhanced or common enhanced item. Whenever you identify an item, you gain a rough estimate of its current monetary value.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"y09iFQHd9gACYeKn","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Haggler.webp","effects":[]}
{"_id":"yOhhoeyIfccOM1JQ","name":"Kinetic Stoicism","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've developed a preternatural focus, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>Once per turn, whenever you roll a Kinetic Combat die, you can roll the die twice and take either total.</li>\n</ul>\n<h3>Ability Capstone Feats</h3>\n<p>At higher levels, character tend to reach the pinnacle of an ability score, representing their mastery of that aspect. These feats are designed to give those characters an edge greater than just the ability score.</p>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in sentinel","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"icons/svg/mystery-man.svg","effects":[]}
{"_id":"zp1d7mtK3QWMZX6j","name":"Stealthy","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You know how best to hide, gaining the following benefits:</p>\n<ul>\n<li>Increase your Dexterity score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Stealth skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>If you are hidden, you can move up to 10 feet in the open without revealing yourself if you end the move in a position where you're not clearly visible.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.dex.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"zp1d7mtK3QWMZX6j","active":false,"_targets":[],"label":"Abilities Dexterity"},{"modSpecKey":"data.skills.ste.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"zp1d7mtK3QWMZX6j","active":false,"_targets":[]}]}},"img":"systems/sw5e/packs/Icons/Feats/Stealthy.webp","effects":[]}
{"_id":"10KjUfHaOKAiOw6T","name":"Survivalist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master wilderness lore, gaining the following benefits:</p>\n<ul>\n<li>Increase your Wisdom score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Survival skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You learn the <em>alarm</em> tech power. You can cast it once, using supplies scavenged around you, without the use of a wristpad and without spending tech points, and you regain the ability to do so when you finish a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5025000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.wis.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"10KjUfHaOKAiOw6T","active":false,"_targets":[],"label":"Abilities Wisdom"},{"modSpecKey":"data.skills.sur.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"10KjUfHaOKAiOw6T","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Survivalist.webp","effects":[{"_id":"7jAtDWIhdreAiR2Q","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20},{"key":"data.skills.sur.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Survivalist.webp","label":"Survivalist","tint":"","transfer":true}]}
{"_id":"1DSm47d3mNU1rgya","name":"Empathic","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You possess keen insight into how other people think and feel. You gain the following benefits:</p>\n<ul>\n<li>Increase your Wisdom score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Insight skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You can use your action to try to get uncanny insight about one humanoid you can see within 30 feet of you. Make a Wisdom (Insight) check contested by the target's Charisma (Deception) check. On a success, you have advantage on attack rolls and ability checks against the target until the end of your next turn.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":3800000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.wis.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"1DSm47d3mNU1rgya","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Empathic.webp","effects":[{"_id":"m7wHmXbaSkAOeoIr","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20},{"key":"data.skills.ins.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Empathic.webp","label":"Empathic","tint":"","transfer":true}]}
{"_id":"1ZAghZJQflkZUVuG","name":"Martial Adept","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have martial training that allows you to perform special combat maneuvers. You gain the following benefits:</p>\n<ul>\n<li>You learn two maneuvers of your choice from among those available to the fighter class. If a maneuver you use requires your target to make a saving throw to resist the maneuvers effects, the saving throw DC equals 8 + your proficiency bonus + your Strength or Dexterity modifier (your choice).</li>\n<li>If you already have superiority dice, you gain one more; otherwise, you have two superiority dice, which are d4s. These dice are used to fuel your maneuvers. A superiority die is expended when you use it. You regain all of your expended superiority dice when you finish a short or long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":6800000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Martial%20Adept.webp","effects":[]}
{"_id":"32xXZ9VyqvvuqX2O","name":"Observant","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Quick to notice details of your environment, you gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence or Wisdom score by 1, to a maximum of 20.</li>\n<li>If you can see a creature's mouth while it is speaking a language you understand, you can interpret what it's saying by reading its lips.</li>\n<li>You are considered to have advantage when determining your passive Wisdom (Perception) and passive Intelligence (Investigation) scores.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":6200000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Observant.webp","effects":[]}
{"_id":"3tOeQ7XLC7omOmIc","name":"Sniping Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> The ability to cast force or tech powers</em></p>\n<p>You've practiced casting powers more accurately from long range, learning techniques that give you the following benefits:</p>\n<ul>\n<li>When you cast a power that requires you to make an attack roll, the power's range is doubled.</li>\n<li>Your ranged force and tech attacks ignore half cover and three-quarters cover.</li>\n<li>You learn one at-will power that requires an attack roll. Your casting ability for this at-will power depends on the power list you chose from: Wisdom or Charisma (depending on power alignment) for force powers or Intelligence for tech powers.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5050000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Sniping%20Caster.webp","effects":[]}
{"_id":"4DuaFCbiBxqL9eL3","name":"Lucky","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have inexplicable luck that seems to kick in at just the right moment.</p>\n<p>You have 3 luck points. Whenever you make an attack roll, an ability check, or a saving throw, you can spend one luck point to roll an additional d20. You can choose to spend one of your luck points after you roll the die, but before the outcome is determined. You choose which of the d20s is used for the attack roll, ability check, or saving throw.</p>\n<p>You can also spend one luck point when an attack roll is made against you. Roll a d20, and then choose whether the attack uses the attacker&rsquo;s roll or yours. If more than one creature spends a luck point to influence the outcome of a roll, the points cancel each other out; no additional dice are rolled.</p>\n<p>You regain your expended luck points when you finish a long rest.</p>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":7100000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Lucky.webp","effects":[]}
{"_id":"4svS5qc5vl445fsU","name":"Precision Applications","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've honed your skills to fine edge, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You can use the bonus action granted by your Cunning Action to carefully aim your next attack. You gain advantage on your next attack roll before the end of your current turn. You can't use this feature if you have moved during this turn, and using this feature reduces your speed to 0 until the end of your current turn.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in operative","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5900000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Precision%20Applications.webp","effects":[]}
{"_id":"5YRWESEfVwbZC2Y6","name":"Heavy Weapon Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the assault cannon, bowcaster, scattergun, and shotgun. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>When a creature rolls a 1 on the saving throw against one of these weapons, it takes damage as if suffering a critical hit. If a creature would already suffer a critical hit when it rolls a 1 on this weapon's saving throw, it instead suffers a critical hit on a roll of 1 or 2.</li>\n<li>Whenever you score a critical hit against a creature that is holding an object, you can attempt to disarm the target. If the target is no more than one size larger than you (your size or smaller if your weapon has the light property), it must succeed on a Strength saving throw (DC = 8 + your proficiency bonus + your Dexterity modifier) or it drops an object of your choice at its feet.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":2500000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Heavy%20Weapon%20Specialist.webp","effects":[]}
{"_id":"7WSolr5mmDrV654v","name":"Rifle Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the use of blaster carbine, blaster rifle, ion rifle, sniper rifle, and slugthrower. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>Whenever you have advantage on an attack roll and hit, and the lower of the two d20 rolls would also hit, you can attempt to snare the target. If the target is no more than one size larger than you (your size or smaller if your weapon has the light property), it must succeed on a Dexterity saving throw (DC = 8 + your proficiency bonus + your Dexterity modifier) or its movement speed is reduced by half until the end of it's next turn. If it's speed was already reduced by half, it is instead reduced to 5 feet.</li>\n<li>When a creature you can see misses you with an attack roll, you can use your reaction to Disengage and move up to half your speed. You must end this movement further away from the creature than you started.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4300000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Rifle%20Specialist.webp","effects":[]}
{"_id":"8rcm51F8jpbNXWs3","name":"Ace Pilot","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Hi You're quite experienced both on land and in the air, be it from time in a navy, as a mercenary, or perhaps even piracy. You gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Piloting skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>Whenever you make an Intelligence (Investigation) or Wisdom (Perception) check related to vehicles or ships, you are considered to have expertise in the Investigation or Perception skill.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":null,"condition":"Intelligence (Investigation) or Wisdom (Perception) check related to vehicles or ships"},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":null,"long":null,"units":""},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"int","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":false},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5500000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"8rcm51F8jpbNXWs3","active":false,"_targets":[],"label":"Abilities Intelligence"},{"modSpecKey":"data.skills.pil.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"8rcm51F8jpbNXWs3","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Ace%20Pilot.webp","effects":[{"_id":"wETPj7Yg4Sj3OEEV","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20},{"key":"data.skills.pil.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Ace%20Pilot.webp","label":"Ace Pilot","tint":"","transfer":true}]}
{"_id":"9Tv2HgQeSEnALiup","name":"Supreme Accuracy","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> Dexterity, Intelligence, Wisdom, or Charisma 13</em><br />You have uncanny aim with attacks that rely on precision. You gain the following benefits:</p>\n<ul>\n<li>Increase your Dexterity, Intelligence, Wisdom, or Charisma score by 1, to a maximum of 20.</li>\n<li>Whenever you have advantage on an attack roll using Dexterity, Intelligence, Wisdom, or Charisma you can reroll one of the dice once.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4862500,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Supreme%20Accuracy.webp","effects":[]}
{"_id":"A3iKF2QaiLp57Kct","name":"Silver-Tongued","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You develop your conversational skill to better deceive others. You gain the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Deception skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>When you take the Attack action, you can replace one attack with an attempt to deceive one humanoid you can see within 30 feet of you that can see and hear you. Make a Charisma (Deception) check contested by the target's Wisdom (Insight) check. If your check succeeds, your movement doesn't provoke opportunity attacks from the target and your attack rolls against it have advantage; both benefits last until the end of your next turn or until you use this ability on a different target. If your check fails, the target can't be deceived by you in this way for 1 hour.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5300000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"A3iKF2QaiLp57Kct","active":false,"_targets":[],"label":"Abilities Charisma"},{"modSpecKey":"data.skills.dec.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"A3iKF2QaiLp57Kct","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Silver-Tongued.webp","effects":[{"_id":"0DVCA8MIhpczgRqW","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.cha.value","value":1,"mode":2,"priority":20},{"key":"data.skills.dec.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Silver-Tongued.webp","label":"Silver-Tongued","tint":"","transfer":true}]}
{"_id":"BGgoW3Cwxj28VTwz","name":"Power Adept","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> The ability to cast force or tech powers</em><br />When you gain this feat, choose one of the following damage types: acid, cold, fire, force, lightning, or necrotic. Powers you cast ignore resistance to damage of the chosen type. In addition, when you roll damage for a power you cast that deals damage of that type, you can treat any 1 on a damage die as a 2.</p>\n<p>You can select this feat multiple times. Each time you do so, you must choose a different damage type.</p>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":6500000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Power%20Adept.webp","effects":[]}
{"_id":"BaXJ9OO3GUF33Plg","name":"Investigator","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have an eye for detail and can pick out the smallest clues. You gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Investigation skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You can take the Search action as a bonus action.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":2100000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"BaXJ9OO3GUF33Plg","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Investigator.webp","effects":[{"_id":"LWFLUSnorYCG0US2","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20},{"key":"data.skills.inv.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Investigator.webp","label":"Investigator","tint":"","transfer":true}]}
{"_id":"BjWUsjBQzq4w1Q3s","name":"Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have focused training with a specific tool. Select one type of specialist's kit. You gain the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You gain proficiency with the chosen kit. If you are already proficient with it, you instead gain expertise with it.</li>\n<li>You can attempt ability checks with the chosen kit without the kit present, but you have disadvantage on the check when you do so.</li>\n<li>Whenever you make an ability check with the chosen kit and you don't have disadvantage on the check, you can treat a d20 roll of 9 or lower as a 10, as long as you spend at least 1 minute on the check. You can select this feat multiple times. Each time you do so, you must choose a different specialist's kit.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4875000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Specialist.webp","effects":[]}
{"_id":"D02rvwCBbp6mIwlH","name":"Galvanizing Presence","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your presence on the battlefield is a source of inspiration. You gain the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>As a bonus action, you let out a rallying war cry, ending the frightened or charmed condition on yourself and a number of allies that can hear you equal to your Charisma modifier (minimum of one). Once you've used this ability, you must complete a short or long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":2900000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"D02rvwCBbp6mIwlH","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Galvanizing%20Presence.webp","effects":[{"_id":"oqsKJpSvNVvb4brh","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.attributes.str.mod","value":"1","mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Galvanizing%20Presence.webp","label":"Galvanizing Presence","tint":"","transfer":true}]}
{"_id":"E1VLUKO9e7wb4mHm","name":"Athlete","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have undergone extensive physical training to gain the following benefits:</p>\n<ul>\n<li>Increase your Strength or Dexterity score by 1, to a maximum of 20.</li>\n<li>When you are prone, standing up uses only 5 feet of your movement.</li>\n<li>Climbing doesn't halve your speed.</li>\n<li>You can make a running long jump or a running high jump after moving only 5 feet on foot, rather than 10 feet.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":1000000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Athlete.webp","effects":[]}
{"_id":"E89ZF9cltOGagy6F","name":"Keen Mind","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have a mind that can track time, direction, and detail with uncanny precision. You gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You always know which way is north.</li>\n<li>You always know the number of hours left before the next sunrise or sunset.</li>\n<li>You can accurately recall anything you have seen or heard within the past month.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":2400000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"E89ZF9cltOGagy6F","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Keen%20Mind.webp","effects":[{"_id":"5An1ZGR716UiEg8n","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Keen%20Mind.webp","label":"Keen Mind","tint":"","transfer":true}]}
{"_id":"E8mrRhc4BQEgapcA","name":"Augmented Cyborg","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've experimented with cybernetic augmentations, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>Choose one cybernetic augmentation of standard rarity from Appendix A. That augmentation is installed and doesn't count against the maximum cybernetic augmentations you can support, but it does count towards your total cybernetics augmentations as shown in the Cybernetic Augmentations Side Effects table in Chapter 7.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":1100000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Augmented%20Cyborg.webp","effects":[]}
{"_id":"EEMJ3UEwesgxC78X","name":"Lightly Armored","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have trained to master the use of light armor, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength, Dexterity, or Constitution score by 1, to a maximum of 20.</li>\n<li>You gain proficiency with light armor. If you are already proficient with light armor, instead while you are wearing light armor, your speed increases by 5 feet. You can take this feat twice.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":7300000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.traits.armorProf.value","value":"lgt","mode":"+","targetSpecific":false,"id":1,"itemId":"EEMJ3UEwesgxC78X","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Lightly%20Armored.webp","effects":[{"_id":"S8GetmShXe43aVoD","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.traits.armorProf.value","value":"lgt","mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Lightly%20Armored.webp","label":"Lightly Armored","tint":"","transfer":true}]}
{"_id":"FF1sNY6xNbDsAnh1","name":"Actor","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Skilled at mimicry and dramatics, you gain the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>You have advantage on Charisma (Deception) and Charisma (Performance) checks when trying to pass yourself off as a different person.</li>\n<li>You can mimic the speech of another person or the sounds made by other creatures. You must have heard the person speaking, or heard the creature make the sound, for at least 1 minute. A successful Wisdom (Insight) check contested by your Charisma (Deception) check allows a listener to determine that the effect is faked.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":1500000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"FF1sNY6xNbDsAnh1","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Actor.webp","effects":[{"_id":"LUNxiVBY9pBVNXQ2","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.cha.value","value":1,"mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Actor.webp","label":"Actor","tint":"","transfer":true}]}
{"_id":"Gg5CP1rrrqslUvtd","name":"Perceptive","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You hone your senses until they become razor sharp. You gain the following benefits:</p>\n<ul>\n<li>Increase your Wisdom score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Perception skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>Being in a lightly obscured area doesn't impose disadvantage on your Wisdom (Perception) checks if you can both see and hear.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":6100000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.wis.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"Gg5CP1rrrqslUvtd","active":false,"_targets":[],"label":"Abilities Wisdom"},{"modSpecKey":"data.skills.prc.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"Gg5CP1rrrqslUvtd","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Perceptive.webp","effects":[{"_id":"o0hxX4A0uPxWHjaZ","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20},{"key":"data.skills.prc.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Perceptive.webp","label":"Perceptive","tint":"","transfer":true}]}
{"_id":"GlrABR30jRsQnhfg","name":"Quick-Fingered","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your nimble fingers and agility let you perform sleight of hand. You gain the following benefits:</p>\n<ul>\n<li>Increase your Dexterity score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Sleight of Hand skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>As a bonus action, you can make a Dexterity (Sleight of Hand) check to plant something on someone else, conceal an object on a creature, lift a purse, or take something from a pocket.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4100000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.dex.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"GlrABR30jRsQnhfg","active":false,"_targets":[],"label":"Abilities Dexterity"},{"modSpecKey":"data.skills.slt.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"GlrABR30jRsQnhfg","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Quick-Fingered.webp","effects":[{"_id":"Ue42BFejvAwlfI19","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.dex.value","value":1,"mode":2,"priority":20},{"key":"data.skills.slt.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Quick-Fingered.webp","label":"Quick-Fingered","tint":"","transfer":true}]}
{"_id":"Gm5pE7iTE74ITJlK","name":"Practiced","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have acquired skills over your career, gaining the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You gain proficiency in any combination of two skills or tools of your choice.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5800000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Practiced.webp","effects":[]}
{"_id":"HG3tsJyWM7X7fVIv","name":"Fighting Stylist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You adopt a particular style of fighting as your specialty, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength, Dexterity, or Constitution score by 1, to a maximum of 20.</li>\n<li>Choose one of the Fighting Style options, detailed later in this chapter.</li>\n</ul>\n<p>You can select this feat multiple times. You can't take a Fighting Style option more than once, even if you later get to choose again.</p>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":3200000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Fighting%20Stylist.webp","effects":[]}
{"_id":"HMtPma2N0myiF2il","name":"Battle Scarred","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've spent a lifetime fighting, with the scars to prove it. You gain the following benefits:</p>\n<ul>\n<li>Increase your Constitution score by 1, to a maximum of 20.</li>\n<li>When you roll a 19 or a 20 on the d20 for a death saving throw, you regain 1 hit point.</li>\n<li>When you are reduced to 0 hit points but not killed outright, you can drop to 1 hit point instead. Once you've used this ability, you must complete a long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"special","cost":null,"condition":"When you are reduced to 0 hit points but not killed outright"},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":"self"},"range":{"value":0,"long":0,"units":""},"uses":{"value":1,"max":1,"per":"lr"},"consume":{"type":"","target":"","amount":null},"ability":"","actionType":"heal","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[["1","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":900000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.con.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"HMtPma2N0myiF2il","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Battle%20Scarred.webp","effects":[{"_id":"0DNfH4zQ9bTTeP0W","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Battle%20Scarred.webp","label":"Battle Scarred","tint":"","transfer":true}]}
{"_id":"J5eAWVCNYRZPsJzq","name":"Mariner","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've spent an exorbitant amount of time in water. You gain the following benefits:</p>\n<ul>\n<li>Increase your Constitution by 1, to a maximum of 20.</li>\n<li>You gain a swimming speed equal to your movement speed.</li>\n<li>You have advantage on ability checks and saving throws related to swimming.</li>\n<li>You can hold your breath for a number of minutes equal to 1 + twice your Constitution modifier.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":2200000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.con.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"J5eAWVCNYRZPsJzq","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Mariner.webp","effects":[{"_id":"iOIplrtcWGmtS6Gu","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20},{"key":"data.attributes.movement.swim","value":"(@attributes.movement.walk)","mode":5,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Mariner.webp","label":"Mariner","tint":"","transfer":true}]}
{"_id":"JoDZj9iDHOq1K0L8","name":"Performer","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master performance so that you can command any stage. You gain the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Performance skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>While performing, you can try to distract one humanoid you can see who can see and hear you. Make a Charisma (Performance) check contested by the humanoid's Wisdom (Insight) check. If your check succeeds, you grab the humanoid's attention enough that it makes Wisdom (Perception) and Intelligence (Investigation) checks with disadvantage until you stop performing.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":6300000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"JoDZj9iDHOq1K0L8","active":false,"_targets":[],"label":"Abilities Charisma"},{"modSpecKey":"data.skills.prf.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"JoDZj9iDHOq1K0L8","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Performer.webp","effects":[{"_id":"6r9fTP1TDu68qrBF","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.attributes.str.mod","value":"1","mode":2,"priority":20},{"key":"data.skills.prf.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Performer.webp","label":"Performer","tint":"","transfer":true}]}
{"_id":"K7DJqRZNotfWGZMK","name":"Alert","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Always on the lookout for danger, you gain the following benefits:</p>\n<ul>\n<li>You gain a +5 bonus to initiative.</li>\n<li>You can't be surprised while you are conscious.</li>\n<li>Other creatures don't gain advantage on attack rolls against you as a result of being unseen by you.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":1200000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.attributes.init.value","value":"5","mode":"+","targetSpecific":false,"id":1,"itemId":"K7DJqRZNotfWGZMK","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Alert.webp","effects":[{"_id":"cOPS96jeTb8E0cQS","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.attributes.init.value","value":5,"mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Alert.webp","label":"Alert","tint":"","transfer":true}]}
{"_id":"KmOP744KaU2bOsX2","name":"Techie","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the theory and practice of technology, gaining the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Technology skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You learn the <em>repair droid</em> tech power. You can cast it once, using supplies scavenged around you, without the use of a wristpad and without spending tech points, and you regain the ability to do so when you finish a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4856250,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"KmOP744KaU2bOsX2","active":false,"_targets":[],"label":"Abilities Intelligence"},{"modSpecKey":"data.skills.tec.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"KmOP744KaU2bOsX2","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Techie.webp","effects":[{"_id":"T9QcU6d4jFC1GTve","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20},{"key":"data.skills.tec.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Techie.webp","label":"Techie","tint":"","transfer":true}]}
{"_id":"LzF6ijAkhkIkiZdJ","name":"Forceful Vigor","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your strength and virility rarely go unnoticed, often to the point of distraction. You gain the following benefits:</p>\n<ul>\n<li>Increase your Strength score by 1, to a maximum of 20.</li>\n<li>You can use your Strength modifier instead of your Constitution modifier when making Constitution checks.</li>\n<li>When you would make a Constitution saving throw, you can instead make a Strength saving throw. You can use this feature a number of times equal to your Strength modifier. You regain all expended uses of this feature when you complete a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":2700000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.str.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"LzF6ijAkhkIkiZdJ","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Forceful%20Vigor.webp","effects":[{"_id":"mdDtHcBBKSw698Qy","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Forceful%20Vigor.webp","label":"Forceful Vigor","tint":"","transfer":true}]}
{"_id":"NMzjgUDUPBVVJJdP","name":"Force of Personality","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Rooms never go unalerted to your presence, and the strength of your personality make others lose focus on their own social game. Powers and other effects infrequently override your force of will. You gain the following benefits:</p>\n<ul>\n<li>Your Charisma score increases by 1, to a maximum of 20.</li>\n<li>You can use your Charisma modifier instead of your Wisdom modifier when making Insight checks.</li>\n<li>When you would make a Wisdom saving throw, you can instead make a Charisma saving throw. You can use this feature a number of times equal to your Charisma modifier. You regain all expended uses of this feature when you complete a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":7700000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"NMzjgUDUPBVVJJdP","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Force%20of%20Personality.webp","effects":[{"_id":"IJoxm3NhIdtw6E6s","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.attributes.str.mod","value":"1","mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Force%20of%20Personality.webp","label":"Force of Personality","tint":"","transfer":true}]}
{"_id":"Of8IhnbIiID6sUt4","name":"Charmer","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've master the art of charming those around you, gaining the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Persuasion skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>If you spend 1 minute talking to someone who can understand what you say, you can make a Charisma (Persuasion) check contested by the creature's Wisdom (Insight) check. If you or your companions are fighting the creature, your check automatically fails. If your check succeeds, the target is charmed by you as long as it remains within 60 feet of you and for 1 minute thereafter.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":1600000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"Of8IhnbIiID6sUt4","active":false,"_targets":[],"label":"Abilities Charisma"},{"modSpecKey":"data.skills.per.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"Of8IhnbIiID6sUt4","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Charmer.webp","effects":[{"_id":"O6MV5fgux54aJzON","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.attributes.str.mod","value":"1","mode":2,"priority":20},{"key":"data.skills.per.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Charmer.webp","label":"Charmer","tint":"","transfer":true}]}
{"_id":"QLLXt6fQiqI1Va2l","name":"Tech Dabbler","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You know two at-will tech powers. When you reach 3rd level, you learn and can cast one 1st-level tech power once per long rest. When you reach 5th level, you learn and can cast one 2nd-level tech power once per long rest. Your techcasting ability is Intelligence. You require use of a tech focus for these powers. Additionally, you lose the Tech-Impaired special trait if you have it.</p>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4868750,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Tech%20Dabbler.webp","effects":[{"_id":"GUfzqovlmL2F0aTA","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"flags.sw5e.techImpaired","value":"0","mode":5,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Tech%20Dabbler.webp","label":"Tech Dabbler","tint":"","transfer":true,"selectedKey":"data.abilities.cha.dc"}]}
{"_id":"Qv2nJWPLJ2klIEbQ","name":"Acrobat","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You become more nimble, gaining the following benefits:</p>\n<ul>\n<li>Increase your Dexterity score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Acrobatics skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>As a bonus action, you can make a DC 15 Dexterity (Acrobatics) check. If you succeed, difficult terrain doesn't cost you extra movement until the end of the current turn.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":1,"units":"turn"},"target":{"value":null,"width":null,"units":"","type":""},"range":{"value":null,"long":null,"units":""},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"dex","actionType":"abil","attackBonus":0,"chatFlavor":"As a bonus action, you can make a DC 15 Dexterity (Acrobatics) check. If you succeed, difficult terrain doesnt cost you extra movement until the end of the current turn.","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"dex","dc":15,"scaling":"flat"},"requirements":"","recharge":{"value":0,"charged":false},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":300000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.dex.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"Qv2nJWPLJ2klIEbQ","active":false,"_targets":[],"label":"Abilities Dexterity"},{"modSpecKey":"data.skills.acr.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"Qv2nJWPLJ2klIEbQ","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Acrobat.webp","effects":[{"_id":"u18WfljlCk4IkdsB","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.dex.value","value":1,"mode":2,"priority":20},{"key":"data.skills.acr.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Acrobat.webp","label":"Acrobat","tint":"","transfer":true}]}
{"_id":"RDN5JNfiKs59xcGt","name":"Feigned Confidence","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've spent years pretending you know what you're doing, gaining the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>When you would make an ability check with a skill or tool that doesn't add your proficiency bonus, you can first make a DC 15 Charisma (Deception) check. On a success, you can add your proficiency bonus to the initial ability check. You can use this feature a number of times equal to your Charisma modifier (a minimum of once). You regain all expended uses when you finish a short or long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":7900000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"RDN5JNfiKs59xcGt","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Feigned%20Confidence.webp","effects":[{"_id":"BjCZUlbZ9U1ZOSJa","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.attributes.str.mod","value":"1","mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Feigned%20Confidence.webp","label":"Feigned Confidence","tint":"","transfer":true}]}
{"_id":"T0pMXR5lUepOZWAu","name":"Unnatural Resilience","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> Constitution 20</em><br />You have the fortitude often attributed to gods, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Constitution saving throws. If you are already proficient in them, you add double your proficiency bonus to saving throws you make.</li>\n<li>Enhanced effects, such as powers or medpacs, that would restore hit points to you can't restore an amount less than half your level + your Constitution modifier. If this amount would exceed that maximum amount of hit points that effect could restore, you instead take that effect's maximum.</li>\n<li>You can add your Constitution modifier to death saving throws you make.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"12th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4857032,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Unnatural%20Resilience.webp","effects":[{"_id":"HWlDE64BbJVvn82X","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.con.proficient","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Unnatural%20Resilience.webp","label":"Unnatural Resilience","tint":"","transfer":true}]}
{"_id":"T4oYkzdxQmcbHG6G","name":"Brawny","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You become stronger, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Athletics skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You count as if you were one size larger for the purpose of determining your carrying capacity.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":700000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.str.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"T4oYkzdxQmcbHG6G","active":false,"_targets":[],"label":"Abilities Strength"},{"modSpecKey":"data.skills.ath.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"T4oYkzdxQmcbHG6G","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Brawny.webp","effects":[{"_id":"nTl10WelwUGi4Gtd","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20},{"key":"data.skills.ath.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Brawny.webp","label":"Brawny","tint":"","transfer":true}]}
{"_id":"UUaYVEXcwbVHv2sr","name":"Healer","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You are an able medic, allowing you to mend wounds quickly and get your allies back in the fight. You gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence or Wisdom score by 1, to a maximum of 20.</li>\n<li>When you use a traumakit to stabilize a dying creature, that creature also regains 1 hit point.</li>\n<li>As an action, you can spend one use of a traumakit to tend to a creature and restore 1d6 + 4 hit points to it, plus additional hit points equal to the creature's maximum number of Hit Dice. The creature can't regain hit points again in this way until it finishes a short or long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":2600000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Healer.webp","effects":[]}
{"_id":"VSXqyHXrw1kI3X91","name":"Close Quarters Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> The ability to cast force or tech powers</em><br />You've practiced utilizing powers in close quarters, learning techniques that grant you the following benefits:</p>\n<ul>\n<li>When making a ranged force or tech attack while you are within 5 feet of a hostile creature, you do not have disadvantage on the attack roll.</li>\n<li>Your ranged force and tech attacks ignore half cover and three-quarters cover against targets within 30 feet of you.</li>\n<li>You learn one at-will power that requires an attack roll. Your casting ability for this at-will power depends on the power list you chose from: Wisdom or Charisma (depending on power alignment) for force powers or Intelligence for tech powers.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4600000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Close%20Quarters%20Caster.webp","effects":[]}
{"_id":"VUliXV0a3Owu4yuI","name":"Sidearm Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the blaster pistol, heavy pistol, hold out, ion pistol, light pistol, and wrist launcher. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>You learn to load and fire your weapon more efficiently. You can now reload these weapons using your object interaction. You must have one free hand to reload.</li>\n<li>Whenever you score a critical hit against a living creature that has a head, you can attempt to daze the target. If the target is no more than one size larger than you (your size or smaller if your weapon has the light property), it must succeed on a Constitution saving throw (DC = 8 + your proficiency bonus + your Dexterity modifier) or be stunned until the end of its next turn.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5100000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Sidearm%20Specialist.webp","effects":[]}
{"_id":"VxSLc899DPLmuepp","name":"Animal Handler","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the techniques needed to train and handle animals. You gain the following benefits:</p>\n<ul>\n<li>Increase your Wisdom score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Animal Handling skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You can use a bonus action on your turn to command one friendly beast within 60 feet of you that can hear you and that isn't currently following the command of someone else. You decide now what action the beast will take and where it will move during its next turn, or you issue a general command that lasts for 1 minute, such as to guard a particular area.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"bonus","cost":1,"condition":""},"duration":{"value":0,"units":""},"target":{"value":1,"width":null,"units":"","type":"creature"},"range":{"value":60,"long":60,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"","actionType":"other","attackBonus":0,"chatFlavor":"You can use a bonus action on your turn to command one friendly beast within 60 feet of you that can hear you and that isn't currently following the command of someone else. You decide now what action the beast will take and where it will move during its next turn, or you issue a general command that lasts for 1 minute, such as to guard a particular area.","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":false},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":1300000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.wis.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"VxSLc899DPLmuepp","active":false,"_targets":[],"label":"Abilities Wisdom"},{"modSpecKey":"data.skills.ani.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"VxSLc899DPLmuepp","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Animal%20Handler.webp","effects":[{"_id":"KquarwwsYVTueTyx","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20},{"key":"data.skills.ani.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Animal%20Handler.webp","label":"Animal Handler","tint":"","transfer":true}]}
{"_id":"W15mnFHa0xq3tXL1","name":"Fighting Master","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"You've mastered a particular style of fighting. Choose one of the Fighting Mastery options, detailed earlier in this chapter. You can select this feat multiple times. You can't take a Fighting Mastery option more than once, even if you later get to choose again.\r\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":6900000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Fighting%20Master.webp","effects":[]}
{"_id":"W8VTyuB1D1pa4s4N","name":"Serene Resolve","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> at least 3 levels in Guardian</em></p>\n<p>You've learned to adapt the Force in new ways, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>As a bonus action, you can expend a use of your Channel the Force to regain 2 force points.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":null,"long":null,"units":""},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":3700000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Serene%20Resolve.webp","effects":[]}
{"_id":"WaO9gKAZN43oQrsA","name":"Promising Commander","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've trained relentlessly to lead your allies on the field of battle, gaining the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>As an action, you can gain tactical insight. For one minute, once per turn you can can utter a special command or warning whenever an ally you can see within 30 feet makes an attack roll or saving throw. This creature can add a d4 to the roll provided it can hear and understand you. A creature can only benefit from one such die at a time. Once you've used this feature, you must complete a short or long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":6400000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"WaO9gKAZN43oQrsA","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Promising%20Commander.webp","effects":[{"_id":"3NVot0o4OXJ7cilR","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.attributes.str.mod","value":"1","mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Promising%20Commander.webp","label":"Promising Commander","tint":"","transfer":true}]}
{"_id":"WtF8rN7cxIc3D86D","name":"Durable","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Hardy and resilient, you gain the following benefits:</p>\n<ul>\n<li>Increase your Constitution score by 1, to a maximum of 20.</li>\n<li>When you roll a Hit Die to regain hit points, the minimum number of hit points you can regain from the roll equals twice your Constitution modifier (minimum of 2).</li>\n<li>Your hit point maximum increases by an amount equal to twice your level when you gain this feat. Whenever you gain a level thereafter, your hit point maximum increases by an additional 2 hit points.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":8200000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.con.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"WtF8rN7cxIc3D86D","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Durable.webp","effects":[{"_id":"VbM7LL20ueolxu5y","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Durable.webp","label":"Durable","tint":"","transfer":true}]}
{"_id":"XRtb4NmElyRsERrk","name":"Adaptive Training","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> at least 3 levels in Fighter</em><br />You've developed a new fluidity to your training and practice, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>Whenever you complete a long rest, you can replace a fighting style you know with another style available. You can't take a Fighting Style option more than once, even if you later get to choose again.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":1400000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Adaptive%20Training.webp","effects":[]}
{"_id":"Xqo6KzAFPtLdW9YS","name":"Moderately Armored","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> proficiency with light armor</em></p>\n<p>You have trained to master the use of medium armor, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength, Dexterity, or Constitution score by 1, to a maximum of 20.</li>\n<li>You gain proficiency with medium armor. If you are already proficient with medium armor, instead while you are wearing medium armor, you can add 3, rather than 2, to your AC if you have a Dexterity of 16 or higher, and you ignore the bulky property of medium armor. You can take this feat twice.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":6700000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.traits.armorProf.value","value":"med","mode":"+","targetSpecific":false,"id":1,"itemId":"Xqo6KzAFPtLdW9YS","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Moderately%20Armored.webp","effects":[{"_id":"hVw642GA8nqxgTYs","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.traits.armorProf.value","value":"med","mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Moderately%20Armored.webp","label":"Moderately Armored","tint":"","transfer":true}]}
{"_id":"XuhxzosKJIBWpWHU","name":"Savage Shorty","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> Strength 13, size Small</em></p>\n<p>Despite being short of stature, your size has no impact on your strength and virility. You gain the following benefits:</p>\n<ul>\n<li>Increase your Strength score by 1, to a maximum of 20.</li>\n<li>Your speed increases by 5 feet.</li>\n<li>You lose the Undersized special trait.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5400000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.str.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"XuhxzosKJIBWpWHU","active":false,"_targets":[],"label":"Abilities Strength"},{"modSpecKey":"data.attributes.speed.value","value":"5","mode":"+","targetSpecific":false,"id":2,"itemId":"XuhxzosKJIBWpWHU","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Savage%20Shorty.webp","effects":[{"_id":"CHCJWZiArjnqXHw8","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20},{"key":"data.attributes.movement.walk","value":5,"mode":2,"priority":20},{"key":"flags.sw5e.undersized","value":"0","mode":5,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Savage%20Shorty.webp","label":"Savage Shorty","tint":"","transfer":true}]}
{"_id":"YJOdr43nmsPXAxp3","name":"Naturalist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your extensive study of nature rewards you with the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Nature skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>You learn the <em>toxin scan</em> tech power. You can cast it once, using supplies scavenged around you, without the use of a wristpad and without spending tech points, and you regain the ability to do so when you finish a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":3100000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"YJOdr43nmsPXAxp3","active":false,"_targets":[],"label":"Abilities Intelligence"},{"modSpecKey":"data.skills.nat.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"YJOdr43nmsPXAxp3","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Naturalist.webp","effects":[{"_id":"kNRVYakcEKDM7tl5","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20},{"key":"data.skills.nat.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Naturalist.webp","label":"Naturalist","tint":"","transfer":true}]}
{"_id":"YfISDL99fjJ9WYy3","name":"Focused Vitality","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> at least 3 levels in Monk</em></p>\n<p>You've learned to harness your focus to restore yourself, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>As an action, you can spend 2 focus points and roll a Martial Arts die. You regain a number of hit points equal to the amount rolled + your Wisdom or Charisma modifier (your choice, a minimum of one).</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":7800000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Focused%20Vitality.webp","effects":[]}
{"_id":"YhvSSzW56SuR7Kja","name":"Casting Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> The ability to cast force or tech powers</em><br />Choose one from force- or tech-casting. You've mastered your chosen casting type, gaining the following benefits:</p>\n<ul>\n<li>You gain a +1 bonus to your force or tech save DC and your force or tech attack modifier.</li>\n<li>Once per turn, when you cast a power that requires an attack roll or saving throw, you can have advantage on one attack roll, or you can force one creature affected by the power to have advantage or disadvantage on the saving throw (your choice). Once you've used this feature on a power, you can't affect that power again until you complete a short or long rest. Once you've used this feature on a creature, you can't do so again until you complete a short or long rest.</li>\n<li>Once per turn, when you cast a power that doesn't require an ability check, attack roll, or saving throw, but requires a die roll, you can choose the maximum or minimum on the die (your choice). If the power requires rolling multiple dice, you can only affect a number of them equal to half your proficiency bonus (rounded up) in this way. Once you've used this feature on a power, you can't affect that power again until you complete a short or long rest.</li>\n</ul>\n<p>You can select this feat twice. Each time you do so, you must choose a different casting type.</p>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":500000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Casting%20Specialist.webp","effects":[]}
{"_id":"YrUXpp1j01lHSmxG","name":"Blade Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the doubleblade, doublesaber, doubleshoto, doublesword, hidden blade, lightdagger, lightfoil, lightsaber, martial lightsaber, shotosaber, techblade, vibroblade, vibrodagger, and vibrorapier. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>As a bonus action, you can take a parrying stance. While you are in this stance and you aren't wielding a shield, you gain a bonus to AC equal to half your proficiency bonus (rounded up) until the start of your next turn.</li>\n<li>Your critical hit range increases by 1.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":null,"condition":""},"duration":{"value":null,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":null,"long":null,"units":""},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"assumes a parrying stance.","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":false},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":400000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Blade%20Specialist.webp","effects":[]}
{"_id":"a4Id4dk3ov3dYw7X","name":"Polearm Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the lightsaber pike, saberspear, vibrolance, vibropike, and vibrospear. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>When you take the Attack action, you can use a bonus action to make a melee attack with the opposite end of the weapon. The weapon's damage die for this attack is a d4, and the attack deals kinetic damage. If the weapon has the reach property, the bonus action attack does not benefit from this property.</li>\n<li>When you take the Attack action, you can choose to forgo one of your attacks. If you do so, your reach increases by 5 feet until the start of your next turn.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":6000000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Polearm%20Specialist.webp","effects":[]}
{"_id":"aYMhiCMRBwH1WomL","name":"Linguist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have studied languages and codes, gaining the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You learn three languages of your choice.</li>\n<li>You can ably create written ciphers. Others can&rsquo;t decipher a code you create unless you teach them, they succeed on an Intelligence check (DC = your Intelligence score + your proficiency bonus), or they use a power to decipher it.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":100000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"aYMhiCMRBwH1WomL","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Linguist.webp","effects":[{"_id":"zLgsiHPBheUMr83I","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Linguist.webp","label":"Linguist","tint":"","transfer":true}]}
{"_id":"ai5BTh0VA5FpLVtu","name":"Force Guidance","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> The ability to cast force powers</em></p>\n<p>You've learned to utilize your gift with the Force in a specific, unique way. You gain the following benefits:</p>\n<ul>\n<li>Increase your Wisdom or Charisma score by 1, to a maximum of 20.</li>\n<li>Choose a skill or tool in which you are proficient. When you make an ability check with the chosen skill or tool, you can add half your Wisdom or Charisma modifier (your choice, rounded down, minimum of one) to the check if it doesn't already include that modifier. You can use this feature a number of times equal to your Wisdom or Charisma modifier (your choice, a minimum of once). You regain all expended uses when you complete a long rest. You can select this feat multiple times. Each time you do so, you must choose a different skill or tool.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":2800000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Force%20Guidance.webp","effects":[]}
{"_id":"aiwPy0S7ZqsaT6k6","name":"Investigative Attunement","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've spent a significant amount of time appraising and testing enhanced items. You gain the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>Your maximum attunement increases by 1.</li>\n<li>You have advantage on ability checks made to identify items.</li>\n<li>Once per long rest, you can choose one object that you must touch for 10 minutes. If it is an enhanced or modified item, you learn its properties and how to use them, whether it requires attunement to use, and how many charges it has, if any. You learn whether any powers are affecting the item and what they are. If the item was created by a power, you learn which power created it.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":null,"units":""},"target":{"value":null,"width":null,"units":"","type":""},"range":{"value":null,"long":null,"units":""},"uses":{"value":0,"max":0,"per":null},"consume":{"type":"","target":null,"amount":null},"ability":null,"actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":null,"charged":false}},"folder":"dFnKIJCGmpjqdA2C","sort":200000,"flags":{"dae":{"activeEquipped":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Investigative%20Attunement.webp","effects":[]}
{"_id":"aujuUebb7f4e6ht8","name":"Threatening","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You become fearsome to others, gaining the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Intimidation skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>When you take the Attack action, you can replace one attack with an attempt to demoralize one humanoid you can see within 30 feet of you that can see and hear you. Make a Charisma (Intimidation) check contested by the target's Wisdom (Insight) check. If your check succeeds, the target is frightened until the end of your next turn. If your check fails, the target can't be frightened by you in this way for 1 hour.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4859375,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"aujuUebb7f4e6ht8","active":false,"_targets":[],"label":"Abilities Charisma"},{"modSpecKey":"data.skills.itm.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"aujuUebb7f4e6ht8","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Threatening.webp","effects":[{"_id":"Kfcq63ZkU7F18kAq","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.cha.value","value":1,"mode":2,"priority":20},{"key":"data.skills.itm.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Threatening.webp","label":"Threatening","tint":"","transfer":true}]}
{"_id":"cHFXtjcgWLkCTAea","name":"Heavily Armored","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have trained to master the use of heavy armor, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength, Dexterity, or Constitution score by 1, to a maximum of 20.</li>\n<li>You gain proficiency with heavy armor. If you are already proficient with heavy armor, instead while you are wearing heavy armor, critical hits made against you are treated as normal hits. You can take this feat twice.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Proficiency with medium armor","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":7500000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.traits.armorProf.value","value":"hvy","mode":"+","targetSpecific":false,"id":1,"itemId":"cHFXtjcgWLkCTAea","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Heavily%20Armored.webp","effects":[{"_id":"F9EYBpeBtVSmcmc0","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.traits.armorProf.value","value":"hvy","mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Heavily%20Armored.webp","label":"Heavily Armored","tint":"","transfer":true}]}
{"_id":"ccsjgZgwSyw3r0on","name":"Exalted Awareness","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><strong><em>Prerequisite:</em></strong> <em>Wisdom 20</em></p>\n<p>You have the wisdom associated with the most renowned masters of the Force, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Wisdom saving throws. If you are already proficient in them, you add double your proficiency bonus to Wisdom saving throws you make.</li>\n<li>Creatures within 60 feet of you have disadvantage on Dexterity (Stealth) checks made to hide from you.</li>\n<li>As an action, you can sense the presence of illusions and other effects designed to deceive the senses within 30 feet of you, provided that you aren't blinded or deafened. You sense that an effect is trying to trick you, but you gain no insight into what is hidden or its true nature. Once you've used this feature, you must complete a short or long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Level 12","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":8100000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Exalted%20Awareness.webp","effects":[{"_id":"xqw5n8lT98H50eTg","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.wis.proficient","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Exalted%20Awareness.webp","label":"Exalted Awareness","tint":"","transfer":true}]}
{"_id":"ckcrU1ZRdKmq4hQY","name":"Fanatic","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Every blow that hits your enemies makes you feel closer to victory, making you shake in excitement. You gain the following benefits:</p>\n<ul>\n<li>When you score a critical hit with an attack roll or reduce a creature to 0 hit points, you can make one weapon attack as a bonus action.</li>\n<li>Whenever a creature you can see within 30 feet is reduced to 0 hit points, you go into a fervor gaining temporary hit points equal to 1d4 + your Constitution modifier.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":3600000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Fanatic.webp","effects":[]}
{"_id":"cnf7zry702QLzotX","name":"Meditative Mindfulness","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> at least 3 levels in Consular</em></p>\n<p>You've delved to new depths during your meditation, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>When you complete a long rest, you can choose one of the force powers you know and replace it with another force power, as long as that power is not of a higher level than your Max Power Level.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":3500000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Meditative%20Mindfulness.webp","effects":[]}
{"_id":"dAmUh0ASLU1xshOs","name":"Combat Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> The ability to cast force or tech powers</em><br />You've practiced making your powers more difficult to avoid, learning techniques that grant you the following benefits:</p>\n<ul>\n<li>When a creature rolls a 1 on the d20 roll of a saving throw against a power you cast that deals damage, they instead take the highest number possible for the damage die.</li>\n<li>You learn one at-will power that requires a saving throw. Your casting ability for this at-will power depends on the power list you chose from: Wisdom or Charisma (depending on power alignment) for force powers or Intelligence for tech powers.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4400000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Combat%20Caster.webp","effects":[]}
{"_id":"dQzURN2q97jG47Qo","name":"Quick Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> The ability to cast force or tech powers</em><br />You've practiced casting powers in quick succession, learning techniques that grant you the following benefits:</p>\n<ul>\n<li>When you cast a power with a casting time of a bonus action, you may use your action to cast a power with a power level no higher than half your proficiency bonus (rounded down).</li>\n<li>When you cast a power with a casting time of a bonus action, you can cast it without expending force or tech points as long as it is no higher level than your proficiency bonus. Once you've used this feature, you must complete a long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5700000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Quick%20Caster.webp","effects":[]}
{"_id":"dSjQBf5jwukcGDfY","name":"Force-Sensitive","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"You know two at-will force powers. When you reach 3rd level, you learn one 1st-level force power, which you can cast once per long rest. When you reach 5th level, you learn one 2nd-level force power, which you can once per long rest. Your forcecasting ability is Wisdom or Charisma (depending on power alignment). Additionally, you lose the Force-Insensitive special trait if you have it.\r\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Humanoid type","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":2000000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Force-Sensitive.webp","effects":[]}
{"_id":"dWfbvXKx0ZDEEY4w","name":"Overwhelming Presence","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> Charisma 20</em></p>\n<p>You have the presence of the most affluent of leaders, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Charisma saving throws. If you are already proficient in them, you add double your proficiency bonus to Charisma saving throws you make.</li>\n<li>While you are conscious, up to five friendly creatures within 30 feet of you who can see or hear you and who can understand you can gain a bonus to one Intelligence, Wisdom, or Charisma saving throw they make equal to your Charisma modifier. Once they've done so, they can't do so again until they finish a short or long rest.</li>\n<li>As an action, you can attempt to distract up to five creatures you can see within 30 feet of you. Each creature must make a Wisdom saving throw (DC = 8 + your proficiency bonus + your Charisma modifier). Any creature immune to being charmed is unaffected. If you or your companions are fighting a creature, it has advantage on the saving throw. On a failed save, for the next minute, a creature has disadvantage on Wisdom (Perception) checks made to perceive any creature other than you until the effect ends or until the target can no longer see or hear you. The feature ends early if you are incapacitated.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Level 12","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":6600000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Overwhelming%20Presence.webp","effects":[{"_id":"FsnZ3h9ehfbZFLBC","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.cha.proficient","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Overwhelming%20Presence.webp","label":"Overwhelming Presence","tint":"","transfer":true}]}
{"_id":"dYGd07LLEJu5RKzH","name":"Trip Weapon Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the chakram, light ring, net, saberwhip, vibrobaton, vibrostaff, and vibrowhip. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>As a bonus action on your turn, you can extend your weapon to sweep around and pull down an opponent's shield. Until the end of that creature's next turn, it gains no benefit to armor class from its shield.</li>\n<li>When you score a critical hit with the weapon or hit with an opportunity attack using the weapon, you can attempt to trip the opponent as well. If the target is no more than one size larger (your size or smaller if your weapon has the light property), it must succeed on a Strength saving throw (DC = 8 + your proficiency bonus + your choice of either your Strength or Dexterity modifier) or be knocked prone.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5009375,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Trip%20Weapon%20Specialist.webp","effects":[]}
{"_id":"drXPCTuKznN8IXBN","name":"Versatile Design","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've learned to approach problems from new angles, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>When you complete a long rest, you can choose one of the maneuvers you know and replace it with another one.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in scholar","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5003125,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Versatile%20Design.webp","effects":[]}
{"_id":"eqBlqioFPauxq798","name":"Cunning Intellect","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have the cunning of the most prolific scholars, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Intelligence saving throws. If you are already proficient in them, you add double your proficiency bonus to Intelligence saving throws you make.</li>\n<li>When you engage in the Training downtime activity, during resolution, you add your proficiency bonus to the check. If you would already add your proficiency bonus, you instead add twice your proficiency bonus.</li>\n<li>Whenever you make an ability check that uses your Intelligence, you can add half your proficiency bonus (rounded down) if it doesn't already include your proficiency bonus. Additionally, if you roll lower than half your level (rounded down) on an Intelligence check, you can instead use your level for the d20 roll.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Intelligence 20, level 12","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":1900000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false,"effects":[]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Cunning%20Intellect.webp","effects":[{"_id":"2EHzbhc7iENQNBsV","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.int.proficient","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Cunning%20Intellect.webp","label":"Cunning Intellect","tint":"","transfer":true}]}
{"_id":"fohQLLoe5AnkvvaC","name":"Medic","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the physician's arts, gaining the following benefits:</p>\n<ul>\n<li>Increase your Wisdom score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Medicine skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>During a short rest, you can clean and bind the wounds of up to six willing beasts and humanoids. Make a DC 15 Wisdom (Medicine) check for each creature. On a success, if a creature spends a Hit Die during this rest, that creature can forgo the roll and instead regain the maximum number of hit points the die can restore. A creature can do so only once per rest, regardless of how many Hit Dice it spends.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":7000000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.wis.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"fohQLLoe5AnkvvaC","active":false,"_targets":[],"label":"Abilities Wisdom"},{"modSpecKey":"data.skills.med.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"fohQLLoe5AnkvvaC","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Medic.webp","effects":[{"_id":"vKn9c9xUN31ay9MD","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.wis.value","value":1,"mode":2,"priority":20},{"key":"data.skills.med.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Medic.webp","label":"Medic","tint":"","transfer":true}]}
{"_id":"fz4xeG1EtHJNBHQy","name":"Bountiful Luck","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"Your people have extraordinary luck, which you have learned to lend to your companions when you see them falter. You're not sure how you do it; you just wish it, and it happens. Surely a sign of fortune's favor!\r\n\r\nWhen an ally you can see within 30 feet of you rolls a 1 on the d20 for an attack roll, an ability check, or a saving throw, you can use your reaction and expend 1 luck point to let the ally reroll the die. The ally must use the new roll.\r\n\r\nWhen you use this ability, you can't use luck points before the end of your next turn. \r\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Lucky feat","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":800000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Bountiful%20Luck.webp","effects":[]}
{"_id":"gQDk0fGDlFDVl9Uj","name":"Inspiring Leader","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> Charisma 13</em></p>\n<p>You can spend 10 minutes inspiring your companions, shoring up their resolve to fight. When you do so, choose up to six friendly creatures (which can include yourself) within 30 feet of you who can see or hear you and who can understand you. Each creature can gain temporary hit points equal to your level + your Charisma modifier. A creature can't gain temporary hit points from this feat again until it has finished a short or long rest.</p>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":7400000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Inspiring%20Leader.webp","effects":[]}
{"_id":"h9fsZnfh6RP9PiZv","name":"Dual Focused Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> The ability to cast force or tech powers</em><br />You have learned to bifurcate your attention while concentrating on powers, learning techniques that grant you the following benefits:</p>\n<ul>\n<li>If you attempt to cast a power that requires concentration while already concentrating on an existing power, you can maintain concentration on both powers simultaneously. You must spend your action each subsequent round on maintaining this concentration, or lose concentration for both powers.</li>\n<li>At the end of each of your turns where you have two powers you are concentrating on, you must make a Constitution saving throw (DC equals 10 + the number of complete rounds you've been concentrating on two powers). On a failure, you lose concentration for both powers. You can drop concentration on one of your powers during your turn as a free action to avoid this saving throw.</li>\n<li>Any time you would be forced to make a Constitution saving throw to maintain concentration due to taking damage, the DC equals 10 + both powers' levels combined, or half the damage you take, whichever number is higher. On a failure, you lose concentration on both powers.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4000000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Dual%20Focused%20Caster.webp","effects":[]}
{"_id":"iEFbSjp7DaDSo8Az","name":"Tough","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> Durable feat</em><br />You have the blood of heroes flowing through your veins. You gain the following benefits:</p>\n<ul>\n<li>Increase your Constitution score by 1, to a maximum of 20.</li>\n<li>Whenever you take the Dodge action in combat, you can spend one Hit Die to heal yourself. Roll the die, add your Constitution modifier, and regain a number of hit points equal to the total (minimum of one).</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5006250,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.con.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"iEFbSjp7DaDSo8Az","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Tough.webp","effects":[{"_id":"UovKMdzYexo4tN49","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.con.value","value":1,"mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Tough.webp","label":"Tough","tint":"","transfer":true}]}
{"_id":"ig8TPZw7mt3jQqbi","name":"Tireless Outrider","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've pushed yourself past the limits of your endurance, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>As an action, you can reduce your exhaustion level by 1 and give yourself a number of temporary hit points equal to 1d10 + your Intelligence modifier. Once you've used this feature, you must complete a short or long rest before you can use it again.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in scout","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4853125,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Tireless%20Outrider.webp","effects":[]}
{"_id":"iiZ66oT6lIqkrOGk","name":"Weapon Expert","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have practiced extensively with a variety of weapons, gaining the following benefits:</p>\n<ul>\n<li>Increase your Strength, Dexterity, or Constitution score by 1, to a maximum of 20.</li>\n<li>You gain proficiency with all blasters, lightweapons, and vibroweapons. If you are already proficient with all blasters, lightweapons or vibroweapons, instead once per turn when you roll damage for a weapon attack using a weapon from a category in which you are proficient with all weapons, you can reroll the weapon's damage dice and use either total.</li>\n</ul>\n<p>You can take this feat twice.</p>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5007813,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.traits.weaponProf.custom","value":"all blasters","mode":"+","targetSpecific":false,"id":1,"itemId":"iiZ66oT6lIqkrOGk","active":false,"_targets":[],"label":"Traits Weapon Prof. Custom"},{"modSpecKey":"data.traits.weaponProf.custom","value":"all lightweapons","mode":"+","targetSpecific":false,"id":2,"itemId":"iiZ66oT6lIqkrOGk","active":false,"_targets":[],"label":"Traits Weapon Prof. Custom"},{"modSpecKey":"data.traits.weaponProf.custom","value":"all vibroweapons","mode":"+","targetSpecific":false,"id":3,"itemId":"iiZ66oT6lIqkrOGk","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Weapon%20Expert.webp","effects":[{"_id":"0d8iTrYN5SNWLeSw","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.traits.weaponProf.custom","value":"All blasters","mode":0,"priority":20},{"key":"data.traits.weaponProf.custom","value":"All lightweapons","mode":0,"priority":20},{"key":"data.traits.weaponProf.custom","value":"All vibroweapons","mode":0,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Weapon%20Expert.webp","label":"Weapon Expert","tint":"","transfer":true}]}
{"_id":"jjAqimaLDJ9GoSSL","name":"Customized Droid","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've been customized beyond other droids of the same model, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>Choose one droid customization of standard rarity from Appendix A. That customization is installed and doesn't count against the maximum droid customizations you can support, but it does count towards your maximum parts as shown in the Droid Size Maximum Parts table in Chapter 7.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Class I, II, III, IV, or V Droid","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4800000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Customized%20Droid.webp","effects":[]}
{"_id":"k316FEnj9NARisTU","name":"Expert Potency","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> at least 3 levels in Engineer</em></p>\n<p>You've obtained new ways to assist your allies, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>When a creature has a Potent Aptitude die from you and casts a power, they can roll the die and add the number rolled to one damage or healing roll of the power. If the power would damage or heal multiple targets, this bonus only applies to one of them. The Potent Aptitude die is then lost.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":3400000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Expert%20Potency.webp","effects":[]}
{"_id":"kbN0CSXPaTs3mfan","name":"Mounted Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> The ability to cast force or tech powers</em><br />You are trained in the use of powers while mounted. While you are mounted and aren't incapacitated, you gain the following benefits:</p>\n<ul>\n<li>When you cast a power targeting yourself, you can also affect your mount with the power.</li>\n<li>You have advantage on melee force or tech attack rolls against any unmounted creature that is smaller than your mount.</li>\n<li>If your mount is subjected to an effect that allows it to make a Dexterity saving throw to take only half damage, it instead takes no damage if it succeeds on the saving throw, and only half damage if it fails.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":6900000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Mounted%20Caster.webp","effects":[]}
{"_id":"l16JW8IL3N6NSivU","name":"War Caster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> The ability to cast force or tech powers</em><br />You've practiced casting powers in the midst of combat, learning techniques that grant you the following benefits:</p>\n<ul>\n<li>You have advantage on Constitution saving throws that you make to maintain your concentration on a power when you take damage.</li>\n<li>Once per round, when a hostile creature provokes an opportunity attack from you, you can use your reaction to cast a power at the creature, rather than making an opportunity attack. The power must have a casting time of 1 action and must target only that creature.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5004688,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/War%20Caster.webp","effects":[]}
{"_id":"lWHtIoW012u1QQ53","name":"Resilient","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Choose one ability score. You gain the following benefits:</p>\n<ul>\n<li>Increase the chosen ability score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in saving throws using the chosen ability.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":3900000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Resillient.webp","effects":[]}
{"_id":"m5FKO0ltZGdxtadH","name":"Entertainer","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have a natural gift for performing and competing. Select one gaming set or musical instrument. You gain the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the chosen gaming set or musical instrument. If you are already proficient with it, you instead gain expertise with it.</li>\n<li>While playing your chosen instrument or game, you can always readily read the emotions of those paying attention to you. During this time, and for up to one minute after completing, you have advantage on Wisdom (Insight) checks to read the emotions of those you performed for or competed against. You can select this feat multiple times. Each time you do so, you must choose a different gaming set or musical instrument.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":8000000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Entertainer.webp","effects":[]}
{"_id":"mNHz5us4zXnegeR5","name":"Companion Keeper","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You gain the services of a companion. Choose one of the companion nature options, detailed later in this chapter.</p>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":null,"units":""},"target":{"value":null,"width":null,"units":"","type":""},"range":{"value":null,"long":null,"units":""},"uses":{"value":0,"max":0,"per":null},"consume":{"type":"","target":null,"amount":null},"ability":null,"actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":null,"charged":false}},"folder":"dFnKIJCGmpjqdA2C","sort":5200000,"flags":{},"img":"systems/sw5e/packs/Icons/Feats/Companion%20Keeper.webp","effects":[]}
{"_id":"odprUVlMYRnJ4OOJ","name":"Dungeon Delver","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Alert to the hidden traps and secret doors found in many dungeons, you gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence or Wisdom score by 1, to a maximum of 20.</li>\n<li>You have advantage on Wisdom (Perception) and Intelligence (Investigation) checks made to detect the presence of secret doors.</li>\n<li>You have advantage on saving throws made to avoid or resist traps.</li>\n<li>You have resistance to the damage dealt by traps.</li>\n<li>You can search for traps while traveling at a normal pace, instead of only at a slow pace.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":1800000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Dungeon%20Delver.webp","effects":[]}
{"_id":"ozWdapIWplYGXv7g","name":"Snappy Interjection","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've mastered a quick tongue to aid your allies. You gain the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, to a maximum of 20.</li>\n<li>Once per short or long rest, when an ally makes an attack roll, an ability check or a saving throw, you can spend your reaction to give them advantage on the roll.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4850000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"ozWdapIWplYGXv7g","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Snappy%20Interjection.webp","effects":[{"_id":"h2MlptVtQI3R91ye","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.cha.value","value":1,"mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Snappy%20Interjection.webp","label":"Snappy Interjection","tint":"","transfer":true}]}
{"_id":"p22Fu1TzzQ0zG6KI","name":"Climber","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You excel at scaling cliffsides, hills, trees, and general climbing. You gain the following benefits:</p>\n<ul>\n<li>Increase your Strength score by 1, to a maximum of 20.</li>\n<li>You gain a climbing speed equal to your movement speed.</li>\n<li>You have advantage on ability checks and saving throws to avoid falling off or down while climbing.</li>\n<li>You can spend 5 minutes instructing, pointing out handholds, and guiding other creatures before making a climb. When you do so, choose up to six friendly creatures (which can include yourself) within 30 feet of you. Each creature can add a 1d6 to any ability check or saving throw they make for that climb.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":1700000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.str.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"p22Fu1TzzQ0zG6KI","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Climber.webp","effects":[{"_id":"zt1XYCCaDg29dB35","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20},{"key":"data.attributes.movement.climb","value":"(@attributes.movement.walk)","mode":5,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Climber.webp","label":"Climber","tint":"","transfer":true}]}
{"_id":"p9p9uvgtw0as7ecU","name":"Relentless Pursuer","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> at least 3 levels in berserker</em></p>\n<p>You've harnessed a new level of persistence, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>When a creature ends its turn within 15 feet of you, you can use your reaction to move up to half your speed to a space closer to the creature. This movement doesn't provoke opportunity attacks.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5600000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Relentless%20Pursuer.webp","effects":[]}
{"_id":"q7ahgoAYWA5ghy81","name":"Tiny Terror","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> Strength 13, size Tiny</em><br />Despite falling below knee height of other species, your size has less impact on your strength and virility. You gain the following benefits:</p>\n<ul>\n<li>Increase your Strength score by 1, to a maximum of 20.</li>\n<li>Your speed increases by 5 feet.</li>\n<li>You lose the Pintsized special trait, and you are no longer limited to +3 when determing your bonus to attack and damasge rolls for weapon attacks using Strength due to the Puny special trait.</li>\n<li>You gain the Undersized special trait:<br /><br /><strong><em>Undersized.</em></strong> Your small stature makes it hard for you to wield bigger weapons. You can't use heavy shields or martial weapons with the two-handed property unless it has the light property, and if a martial weapon has the versatile property, you can only wield it in two-hands.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5012500,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.str.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"q7ahgoAYWA5ghy81","active":false,"_targets":[],"label":"Abilities Strength"},{"modSpecKey":"data.attributes.speed.value","value":"5","mode":"+","targetSpecific":false,"id":2,"itemId":"q7ahgoAYWA5ghy81","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Tiny%20Terror.webp","effects":[{"_id":"UDRjGgS1kz9N91VB","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.str.value","value":1,"mode":2,"priority":20},{"key":"data.attributes.movement.walk","value":5,"mode":2,"priority":20},{"key":"flags.sw5e.pintsized","value":"0","mode":5,"priority":20},{"key":"flags.sw5e.undersized","value":"1","mode":5,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Tiny%20Terror.webp","label":"Tiny Terror","tint":"","transfer":true}]}
{"_id":"qW28id0DXW7FjT6V","name":"Crushing Weapon Specialist","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You master the greatsaber, techaxe, techstaff, vibroaxe, vibroknuckler, vibromace, and vibrosword. You gain the following benefits while wielding any of these weapons, if you are proficient with it:</p>\n<ul>\n<li>You gain a +1 bonus to the weapon's attack rolls.</li>\n<li>Whenever you have advantage on an attack roll and hit, and the lower of the two d20 rolls would also hit, you can attempt to knock the target prone. If the target is no more than one size larger than you (your size or smaller if your weapon has the light property), make a Strength (Athletics) check contested by the target's Strength (Athletics) or Dexterity (Acrobatics) check (the target chooses the ability). If you win the contest, the target is knocked prone.</li>\n<li>Once per round, when you use your reaction to make a melee weapon attack, you have advantage on the attack roll.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5000000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Crushing%20Weapon%20Specialist.webp","effects":[]}
{"_id":"sC2RPRGuIXbzP4Vc","name":"Mobile","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You are exceptionally speedy and agile. You gain the following benefits:</p>\n<ul>\n<li>Your speed increases by 10 feet.</li>\n<li>When you use the Dash action, difficult terrain doesn't cost you extra movement on that turn.</li>\n<li>When you make a melee attack against a creature, you don't provoke opportunity attacks from that creature for the rest of the turn, whether you hit or not.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"4th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":3300000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.attributes.speed.value","value":"10","mode":"+","targetSpecific":false,"id":1,"itemId":"sC2RPRGuIXbzP4Vc","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Mobile.webp","effects":[{"_id":"AYuCoUXLgXEIy4Zo","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.attributes.movement.walk","value":10,"mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Mobile.webp","label":"Mobile","tint":"","transfer":true}]}
{"_id":"tVElcveiEV69LpMD","name":"Titan's Power","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have the strength that legends tell of, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Strength saving throws. If you are already proficient in them, you add double your proficiency bonus to Strength saving throws you make.</li>\n<li>You ignore the <em>two-handed</em> property of weapons with which you are proficient.</li>\n<li>When you miss with a melee weapon attack, the creature takes damage equal to your Strength modifier. This damage is of the same type as the weapon's damage.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"Strength 20, level 12","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4857813,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Titan%27s%20Power.webp","effects":[{"_id":"364INNg0IvDPOWqC","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.str.proficient","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Titan%27s%20Power.webp","label":"Titan's Power","tint":"","transfer":true}]}
{"_id":"tc0x7wRpNsW1O2Zz","name":"Prone Combatant","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've practiced fighting while prone, gaining the following benefits:</p>\n<ul>\n<li>Increase your Dexterity score by 1, to a maximum of 20.</li>\n<li>You gain a crawling speed equal to your movement speed.</li>\n<li>You no longer have disadvantage on ranged attack rolls against targets within 30 feet.</li>\n<li>When you attempt to hide on your turn while prone, you can opt to not move on that turn. If you avoid moving, you are considered lightly obscured. You lose this benefit if you move or stand up, either voluntarily or because of some external effect. You are still automatically detected if any effect or action causes you to no longer be hidden. If you are still hidden on your next turn, you can continue to remain motionless and gain this benefit until you are detected.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4700000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.dex.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"tc0x7wRpNsW1O2Zz","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Prone%20Combatant.webp","effects":[{"_id":"voyn9mLe9ijrdBsQ","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.dex.value","value":1,"mode":2,"priority":20},{"key":"data.attributes.movement.crawl","value":"(@attributes.movement.walk)","mode":5,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Prone%20Combatant.webp","label":"Prone Combatant","tint":"","transfer":true}]}
{"_id":"tzePc2J19K2YB4Mt","name":"Loremaster","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your study of history rewards you with the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Lore skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>When you take the Help action to aid another creature's ability check, you can make a DC 15 Intelligence (Lore) check. On a success, that creature's check gains a bonus equal to your proficiency bonus, as you share pertinent advice and historical examples. To receive this bonus, the creature must be able to understand what you're saying.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":2300000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"tzePc2J19K2YB4Mt","active":false,"_targets":[],"label":"Abilities Intelligence"},{"modSpecKey":"data.skills.lor.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"tzePc2J19K2YB4Mt","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Loremaster.webp","effects":[{"_id":"7CaByuPwR1Fe05Yz","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20},{"key":"data.skills.lor.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Loremaster.webp","label":"Loremaster","tint":"","transfer":true}]}
{"_id":"uYSCaHw1CtA3VJEY","name":"Quick-Witted","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Great ideas come to you naturally, often when your life depends on it. You always have a plan, or at least parts of it. You gain the following benefits:</p>\n<ul>\n<li>Increase your Intelligence score by 1, to a maximum of 20.</li>\n<li>You can use your Intelligence modifier instead of your Dexterity modifier when making initiative checks.</li>\n<li>When you would make a Dexterity saving throw, you can instead make an Intelligence saving throw. You can use this feature a number of times equal to your Intelligence modifier. You regain all expended uses of this feature when you complete a long rest.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4500000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.int.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"uYSCaHw1CtA3VJEY","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Quick-Witted.webp","effects":[{"_id":"r80Slm4fPZ6Fb0e6","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.int.value","value":1,"mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Quick-Witted.webp","label":"Quick-Witted","tint":"","transfer":true}]}
{"_id":"ua8SMi9eB45JvLvn","name":"Shard Modification","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> Droid type</em></p>\n<p>You are specially modified droid used to house a shard. Shards are sentient crystals native to the planet Orax, roughly a foot in length, that communicate with each other through pulses of light. While inhabiting a specialized droid host, shards are able to overcome the droid's inability to wield the Force, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You lose the Force Insensitive special trait.</li>\n<li>You can cast the <em>sense force</em> force power once per day. Wisdom or Charisma (your choice) is your forcecasting ability for this power.</li>\n</ul>","chat":"","unidentified":""},"source":"WH","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4900000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Shard%20Modification.webp","effects":[{"_id":"ADseZBBm0OiENVFg","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"flags.dnd5e.forceInsensitive","value":"0","mode":5,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Shard%20Modification.webp","label":"Shard Modification","tint":"","transfer":true}]}
{"_id":"vesMmgkOBAQLvIEU","name":"Blinding Agility","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p><em><strong>Prerequisite:</strong> Dexterity 20</em><br />You have the reflexes of one who can see things before they happen, granting the following benefits:</p>\n<ul>\n<li>You gain proficiency in Dexterity saving throws. If you are already proficient in them, you add double your proficiency bonus to Dexterity saving throws you make.</li>\n<li>Weapons that lack the <em>two-handed</em> or <em>special</em> properties are considered to have the <em>finesse</em> property for you.</li>\n<li>Opportunity attacks made against you have disadvantage.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"12th Level","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":600000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Blinding%20Agility.webp","effects":[{"_id":"nJqyLCEz95MgVt8G","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.dex.proficient","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Blinding%20Agility.webp","label":"Blinding Agility","tint":"","transfer":true}]}
{"_id":"vxDwtMysjVevQ9RN","name":"Crafter","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You have a knack for crafting; you work with greater efficiency and produce goods of higher quality. Select one type of artisan's implements. You gain the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>You gain proficiency with the chosen tool. If you are already proficient with it, you instead gain expertise with it.</li>\n<li>When you craft something with the chosen tool, the total market value you can craft increases 50 cr per day. If you have expertise with it, the market value instead increases by 100 cr per day.</li>\n<li>If you use the tool you've selected to practice a profession during downtime, you can support a lifestyle one higher than you would normally be able to. You can select this feat multiple times. Each time you do so, you must choose a different set of artisan's implements.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":4200000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Crafter.webp","effects":[]}
{"_id":"y09iFQHd9gACYeKn","name":"Haggler","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>Your skills at bartering have granted you the following benefits:</p>\n<ul>\n<li>Increase your Charisma score by 1, up to a maximum of 20.</li>\n<li>You have advantage on Charisma (Persuasion) and Charisma (Deception) checks when attempting to barter or trade.</li>\n<li>You are always aware of the current monetary value for any unenhanced or common enhanced item. Whenever you identify an item, you gain a rough estimate of its current monetary value.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":7600000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.cha.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"y09iFQHd9gACYeKn","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Haggler.webp","effects":[{"_id":"UoHud3hNEJGfWPXH","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.attributes.str.mod","value":"1","mode":2,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Haggler.webp","label":"Haggler","tint":"","transfer":true}]}
{"_id":"yOhhoeyIfccOM1JQ","name":"Kinetic Stoicism","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You've developed a preternatural focus, granting the following benefits:</p>\n<ul>\n<li>Increase an ability score of your choice by 1, to a maximum of 20.</li>\n<li>Once per turn, whenever you roll a Kinetic Combat die, you can roll the die twice and take either total.</li>\n</ul>","chat":"","unidentified":""},"source":"EC","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"at least 3 levels in sentinel","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":7200000,"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false}},"img":"systems/sw5e/packs/Icons/Feats/Kinetic%20Stoicism.webp","effects":[]}
{"_id":"zp1d7mtK3QWMZX6j","name":"Stealthy","permission":{"default":0,"IpSq6HI4edO6e0Yw":3},"type":"feat","data":{"description":{"value":"<p>You know how best to hide, gaining the following benefits:</p>\n<ul>\n<li>Increase your Dexterity score by 1, to a maximum of 20.</li>\n<li>You gain proficiency in the Stealth skill. If you are already proficient in it, you instead gain expertise in it.</li>\n<li>If you are hidden, you can move up to 10 feet in the open without revealing yourself if you end the move in a position where you're not clearly visible.</li>\n</ul>","chat":"","unidentified":""},"source":"PHB","activation":{"type":"","cost":0,"condition":""},"duration":{"value":0,"units":""},"target":{"value":0,"width":null,"units":"","type":""},"range":{"value":0,"long":0,"units":null},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":null,"amount":null},"ability":"","actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"requirements":"","recharge":{"value":0,"charged":true},"armorproperties":{"parts":[]},"weaponproperties":{"parts":[]}},"folder":"dFnKIJCGmpjqdA2C","sort":5250000,"flags":{"dynamiceffects":{"equipActive":true,"alwaysActive":false,"effects":[{"modSpecKey":"data.abilities.dex.value","value":"1","mode":"+","targetSpecific":false,"id":1,"itemId":"zp1d7mtK3QWMZX6j","active":false,"_targets":[],"label":"Abilities Dexterity"},{"modSpecKey":"data.skills.ste.value","value":"1","mode":"+","targetSpecific":false,"id":2,"itemId":"zp1d7mtK3QWMZX6j","active":false,"_targets":[]}]},"dae":{"activeEquipped":false,"alwaysActive":true}},"img":"systems/sw5e/packs/Icons/Feats/Stealthy.webp","effects":[{"_id":"UsFD1hC8pag7Ek5j","flags":{"dae":{"stackable":false,"specialDuration":"None","transfer":true}},"changes":[{"key":"data.abilities.dex.value","value":1,"mode":2,"priority":20},{"key":"data.skills.ste.value","value":1,"mode":4,"priority":20}],"disabled":false,"duration":{"startTime":null,"seconds":null,"rounds":null,"turns":null,"startRound":null,"startTurn":null},"icon":"systems/sw5e/packs/Icons/Feats/Stealthy.webp","label":"Stealthy","tint":"","transfer":true}]}

File diff suppressed because one or more lines are too long

View file

@ -10,12 +10,16 @@
font-weight: 400;
src: url('./fonts/RussoOne.ttf');
}
/* bungee-inline-regular - latin */
@font-face {
font-family: 'Bungee Inline';
font-family: 'Engli-Besh';
font-style: normal;
font-weight: 400;
src: url('./fonts/BungeeInline.ttf');
src: url('./fonts/EngliBesh-KG3W.ttf');
}
.engli-Besh {
font-family: 'Engli-Besh';
font-size: 20px;
font-weight: 400;
}
/* open-sans-regular - latin */
@font-face {
@ -1370,7 +1374,7 @@ body {
}
.sw5e.chat-card .card-footer span {
border-right: 2px groove #FFF;
padding: 0 5px 0 0;
padding: 0 3px 0 0;
font-size: 10px;
}
.sw5e.chat-card .card-footer span:last-child {
@ -1784,4 +1788,4 @@ a.entity-link i::before {
top: 2px;
height: 15px;
width: 15px;
}
}

View file

@ -48,6 +48,12 @@
font-weight: 400;
src: url('./fonts/Aurebesh.ttf');
}
@font-face {
font-family: 'Engli-Besh';
font-style: normal;
font-weight: 400;
src: url('./fonts/EngliBesh-KG3W.ttf');
}
/* ----------------------------------------- */
/* Fonts */
/* ----------------------------------------- */
@ -80,6 +86,9 @@ body {
font-family: 'Open Sans';
font-size: 13px;
font-weight: 400;
background-image: url('./ui/SW5e-logo.svg');
background-repeat: no-repeat;
background-size: cover;
}
h1 {
font-family: 'Russo One';
@ -702,7 +711,7 @@ input[type="reset"]:disabled {
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.12), 0 1px 5px 0 rgba(0, 0, 0, 0.2);
}
.sw5e.sheet.actor.character {
min-width: 800px;
min-width: 850px;
min-height: 720px;
}
.sw5e.sheet .window-content {
@ -754,7 +763,7 @@ input[type="reset"]:disabled {
grid-template-rows: 1fr 26px auto;
grid-template-columns: 128px 1fr;
column-gap: 8px;
row-gap: 8px;
grid-row-gap: 8px;
}
.sw5e.sheet.actor .swalt-sheet header img {
grid-column-start: 1;
@ -1327,7 +1336,7 @@ input[type="reset"]:disabled {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 16px;
row-gap: 8px;
grid-row-gap: 8px;
}
.sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits input,
.sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits select {
@ -1354,7 +1363,7 @@ input[type="reset"]:disabled {
text-shadow: none;
}
.sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits .languages {
grid-column-end: span 2;
grid-column-end: span 1;
}
.sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits .languages label:hover {
cursor: pointer;
@ -1376,7 +1385,7 @@ input[type="reset"]:disabled {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 4px;
row-gap: 4px;
grid-row-gap: 4px;
}
.sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits ul.passives strong {
font-size: 13px;
@ -1587,7 +1596,7 @@ input[type="reset"]:disabled {
}
.sw5e.sheet.actor .swalt-sheet.limited {
grid-template-rows: 144px auto;
row-gap: 8px;
grid-row-gap: 8px;
}
.sw5e.sheet.actor .swalt-sheet.limited header {
grid-template-rows: 1fr;

View file

@ -392,7 +392,7 @@ button:focus {
}
.sw5e.chat-card .card-footer span {
border-right: 2px groove #FFF;
padding: 0 4px 0 0;
padding: 0 3px 0 0;
font-size: 10px;
}
.sw5e.chat-card .card-footer span:last-child {

View file

@ -9,15 +9,15 @@
font-weight: 400;
src: url('./fonts/RussoOne.ttf');
}
/* bungee-inline-regular - latin */
/* engli-besh */
@font-face {
font-family: 'Bungee Inline';
font-family: 'Engli-Besh';
font-style: normal;
font-weight: 400;
src: url('./fonts/BungeeInline.ttf');
src: url('./fonts/EngliBesh-KG3W.ttf');
}
.bungeeInline {
font-family: 'Bungee Inline';
.engli-Besh {
font-family: 'Engli-Besh';
font-size: 20px;
font-weight: 400;
}
@ -467,11 +467,6 @@
border: none;
margin-right: 5px;
}
.sw5e.sheet .items-list .item .item-name h4 {
margin: 0;
white-space: nowrap;
overflow-x: hidden;
}
.sw5e.sheet .items-list .items-header {
height: 28px;
margin: 2px 0;
@ -513,6 +508,41 @@
height: 24px;
margin: 2px;
}
/* ----------------------------------------- */
/* HUD
/* ----------------------------------------- */
.placeable-hud .control-icon {
box-sizing: content-box;
width: 40px;
flex: 0 0 40px;
margin: 8px 0;
font-size: 28px;
line-height: 40px;
text-align: center;
color: #FBF4F4;
background: rgba(0, 0, 0, 0.6);
box-shadow: 0 0 15px #000;
border: 1px solid #333;
border-radius: 8px;
pointer-events: all;
}
#token-hud .status-effects {
visibility: hidden;
position: absolute;
left: 50px;
top: 0;
display: grid;
padding: 3px;
box-sizing: content-box;
width: 100px;
color: #FBF4F4;
grid-template-columns: 25px 25px 25px 25px;
background: rgba(0, 0, 0, 0.6);
box-shadow: 0 0 15px #000;
border: 1px solid #333;
border-radius: 4px;
pointer-events: all;
}
.sw5e.sheet.actor {
/* ----------------------------------------- */
/* Sheet Header */
@ -1562,7 +1592,7 @@
flex: 1;
margin: 0;
line-height: 36px;
font-family: 'Bungee Inline';
font-family: 'Engli-Besh';
font-size: 20px;
font-weight: 400;
color: #4b4a44;

544
sw5e.js
View file

@ -1,269 +1,277 @@
/**
* The Star Wars 5th Edition game system for Foundry Virtual Tabletop
* Author: Kakeman89
* Software License: GNU GPLv3
* Content License: https://media.wizards.com/2016/downloads/SW5E/SRD-OGL_V5.1.pdf
* Repository: https://gitlab.com/foundrynet/sw5e
* Issue Tracker: https://gitlab.com/foundrynet/sw5e/issues
*/
// Import Modules
import { SW5E } from "./module/config.js";
import { registerSystemSettings } from "./module/settings.js";
import { preloadHandlebarsTemplates } from "./module/templates.js";
import { _getInitiativeFormula } from "./module/combat.js";
import { measureDistances, getBarAttribute } from "./module/canvas.js";
// Import Entities
import Actor5e from "./module/actor/entity.js";
import Item5e from "./module/item/entity.js";
// Import Applications
import AbilityTemplate from "./module/pixi/ability-template.js";
import AbilityUseDialog from "./module/apps/ability-use-dialog.js";
import ActorSheetFlags from "./module/apps/actor-flags.js";
import ActorSheet5eCharacter from "./module/actor/sheets/oldSheets/character.js";
import ActorSheet5eNPC from "./module/actor/sheets/oldSheets/npc.js";
import ActorSheet5eVehicle from "./module/actor/sheets/oldSheets/vehicle.js";
import ActorSheet5eCharacterNew from "./module/actor/sheets/newSheet/character.js";
import ActorSheet5eNPCNew from "./module/actor/sheets/newSheet/npc.js";
import ItemSheet5e from "./module/item/sheet.js";
import ShortRestDialog from "./module/apps/short-rest.js";
import TraitSelector from "./module/apps/trait-selector.js";
import ActorMovementConfig from "./module/apps/movement-config.js";
import ActorSensesConfig from "./module/apps/senses-config.js";
// Import Helpers
import * as chat from "./module/chat.js";
import * as dice from "./module/dice.js";
import * as macros from "./module/macros.js";
import * as migrations from "./module/migration.js";
/* -------------------------------------------- */
/* Foundry VTT Initialization */
/* -------------------------------------------- */
Hooks.once("init", function() {
console.log(`SW5e | Initializing Star Wars 5th Edition System\n${SW5E.ASCII}`);
// Create a SW5E namespace within the game global
game.sw5e = {
applications: {
AbilityUseDialog,
ActorSheetFlags,
ActorSheet5eCharacter,
ActorSheet5eCharacterNew,
ActorSheet5eNPC,
ActorSheet5eNPCNew,
ActorSheet5eVehicle,
ItemSheet5e,
ShortRestDialog,
TraitSelector,
ActorMovementConfig
},
canvas: {
AbilityTemplate
},
config: SW5E,
dice: dice,
entities: {
Actor5e,
Item5e,
},
macros: macros,
migrations: migrations,
rollItemMacro: macros.rollItemMacro
};
// Record Configuration Values
CONFIG.SW5E = SW5E;
CONFIG.Actor.entityClass = Actor5e;
CONFIG.Item.entityClass = Item5e;
CONFIG.time.roundTime = 6;
// Add DND5e namespace for module compatability
game.dnd5e = game.sw5e;
CONFIG.DND5E = CONFIG.SW5E;
// Register System Settings
registerSystemSettings();
// Patch Core Functions
CONFIG.Combat.initiative.formula = "1d20 + @attributes.init.mod + @attributes.init.prof + @attributes.init.bonus";
Combat.prototype._getInitiativeFormula = _getInitiativeFormula;
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("sw5e", ActorSheet5eCharacterNew, {
types: ["character"],
makeDefault: true,
label: "SW5E.SheetClassCharacter"
});
Actors.registerSheet("sw5e", ActorSheet5eCharacter, {
types: ["character"],
makeDefault: false,
label: "SW5E.SheetClassCharacterOld"
});
Actors.registerSheet("sw5e", ActorSheet5eNPCNew, {
types: ["npc"],
makeDefault: true,
label: "SW5E.SheetClassNPC"
});
Actors.registerSheet("sw5e", ActorSheet5eNPC, {
types: ["npc"],
makeDefault: false,
label: "SW5E.SheetClassNPCOld"
});
Actors.registerSheet('sw5e', ActorSheet5eVehicle, {
types: ['vehicle'],
makeDefault: true,
label: "SW5E.SheetClassVehicle"
});
Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("sw5e", ItemSheet5e, {
types: ['weapon', 'equipment', 'consumable', 'tool', 'loot', 'class', 'power', 'feat', 'species', 'backpack', 'archetype', 'classfeature', 'background', 'fightingmastery', 'fightingstyle', 'lightsaberform'],
makeDefault: true,
label: "SW5E.SheetClassItem"
});
// Preload Handlebars Templates
preloadHandlebarsTemplates();
});
/* -------------------------------------------- */
/* Foundry VTT Setup */
/* -------------------------------------------- */
/**
* This function runs after game data has been requested and loaded from the servers, so entities exist
*/
Hooks.once("setup", function() {
// Localize CONFIG objects once up-front
const toLocalize = [
"abilities", "abilityAbbreviations", "abilityActivationTypes", "abilityConsumptionTypes", "actorSizes", "alignments",
"armorProficiencies", "armorPropertiesTypes", "conditionTypes", "consumableTypes", "cover", "currencies", "damageResistanceTypes",
"damageTypes", "distanceUnits", "equipmentTypes", "healingTypes", "itemActionTypes", "languages",
"limitedUsePeriods", "movementUnits", "polymorphSettings", "proficiencyLevels", "senses", "skills",
"powerComponents", "powerLevels", "powerPreparationModes", "powerScalingModes", "powerSchools", "targetTypes",
"timePeriods", "toolProficiencies", "weaponProficiencies", "weaponProperties", "weaponTypes"
];
// Exclude some from sorting where the default order matters
const noSort = [
"abilities", "alignments", "currencies", "distanceUnits", "movementUnits", "itemActionTypes", "proficiencyLevels",
"limitedUsePeriods", "powerComponents", "powerLevels", "powerPreparationModes", "weaponTypes"
];
// Localize and sort CONFIG objects
for ( let o of toLocalize ) {
const localized = Object.entries(CONFIG.SW5E[o]).map(e => {
return [e[0], game.i18n.localize(e[1])];
});
if ( !noSort.includes(o) ) localized.sort((a, b) => a[1].localeCompare(b[1]));
CONFIG.SW5E[o] = localized.reduce((obj, e) => {
obj[e[0]] = e[1];
return obj;
}, {});
}
// add DND5E translation for module compatability
game.i18n.translations.DND5E = game.i18n.translations.SW5E;
// console.log(game.settings.get("sw5e", "colorTheme"));
let theme = game.settings.get("sw5e", "colorTheme") + '-theme';
document.body.classList.add(theme);
});
/* -------------------------------------------- */
/**
* Once the entire VTT framework is initialized, check to see if we should perform a data migration
*/
Hooks.once("ready", function() {
// Wait to register hotbar drop hook on ready so that modules could register earlier if they want to
Hooks.on("hotbarDrop", (bar, data, slot) => macros.create5eMacro(data, slot));
// Determine whether a system migration is required and feasible
if ( !game.user.isGM ) return;
const currentVersion = game.settings.get("sw5e", "systemMigrationVersion");
const NEEDS_MIGRATION_VERSION = "1.2.0";
const COMPATIBLE_MIGRATION_VERSION = 0.80;
const needsMigration = currentVersion && isNewerVersion(NEEDS_MIGRATION_VERSION, currentVersion);
if ( !needsMigration ) return;
// Perform the migration
if ( currentVersion && isNewerVersion(COMPATIBLE_MIGRATION_VERSION, currentVersion) ) {
const warning = `Your SW5e system data is from too old a Foundry version and cannot be reliably migrated to the latest version. The process will be attempted, but errors may occur.`;
ui.notifications.error(warning, {permanent: true});
}
migrations.migrateWorld();
});
/* -------------------------------------------- */
/* Canvas Initialization */
/* -------------------------------------------- */
Hooks.on("canvasInit", function() {
// Extend Diagonal Measurement
canvas.grid.diagonalRule = game.settings.get("sw5e", "diagonalMovement");
SquareGrid.prototype.measureDistances = measureDistances;
// Extend Token Resource Bars
Token.prototype.getBarAttribute = getBarAttribute;
});
/* -------------------------------------------- */
/* Other Hooks */
/* -------------------------------------------- */
Hooks.on("renderChatMessage", (app, html, data) => {
// Display action buttons
chat.displayChatActionButtons(app, html, data);
// Highlight critical success or failure die
chat.highlightCriticalSuccessFailure(app, html, data);
// Optionally collapse the content
if (game.settings.get("sw5e", "autoCollapseItemCards")) html.find(".card-content").hide();
});
Hooks.on("getChatLogEntryContext", chat.addChatMessageContextOptions);
Hooks.on("renderChatLog", (app, html, data) => Item5e.chatListeners(html));
Hooks.on("renderChatPopout", (app, html, data) => Item5e.chatListeners(html));
Hooks.on('getActorDirectoryEntryContext', Actor5e.addDirectoryContextOptions);
Hooks.on("renderSceneDirectory", (app, html, data)=> {
//console.log(html.find("header.folder-header"));
setFolderBackground(html);
});
Hooks.on("renderActorDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("renderItemDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("renderJournalDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("renderRollTableDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("ActorSheet5eCharacterNew", (app, html, data) => {
console.log("renderSwaltSheet");
});
// TODO I should remove this
Handlebars.registerHelper('getProperty', function (data, property) {
return getProperty(data, property);
});
function setFolderBackground(html) {
html.find("header.folder-header").each(function() {
let bgColor = $(this).css("background-color");
if(bgColor == undefined)
bgColor = "rgb(255,255,255)";
$(this).closest('li').css("background-color", bgColor);
})
/**
* The Star Wars 5th Edition game system for Foundry Virtual Tabletop
* Author: Kakeman89
* Software License: GNU GPLv3
* Content License: https://media.wizards.com/2016/downloads/SW5E/SRD-OGL_V5.1.pdf
* Repository: https://gitlab.com/foundrynet/sw5e
* Issue Tracker: https://gitlab.com/foundrynet/sw5e/issues
*/
// Import Modules
import { SW5E } from "./module/config.js";
import { registerSystemSettings } from "./module/settings.js";
import { preloadHandlebarsTemplates } from "./module/templates.js";
import { _getInitiativeFormula } from "./module/combat.js";
import { measureDistances, getBarAttribute } from "./module/canvas.js";
// Import Entities
import Actor5e from "./module/actor/entity.js";
import Item5e from "./module/item/entity.js";
// Import Applications
import AbilityTemplate from "./module/pixi/ability-template.js";
import AbilityUseDialog from "./module/apps/ability-use-dialog.js";
import ActorSheetFlags from "./module/apps/actor-flags.js";
import ActorSheet5eCharacter from "./module/actor/sheets/oldSheets/character.js";
import ActorSheet5eNPC from "./module/actor/sheets/oldSheets/npc.js";
import ActorSheet5eVehicle from "./module/actor/sheets/oldSheets/vehicle.js";
import ActorSheet5eCharacterNew from "./module/actor/sheets/newSheet/character.js";
import ActorSheet5eNPCNew from "./module/actor/sheets/newSheet/npc.js";
import ItemSheet5e from "./module/item/sheet.js";
import ShortRestDialog from "./module/apps/short-rest.js";
import TraitSelector from "./module/apps/trait-selector.js";
import ActorMovementConfig from "./module/apps/movement-config.js";
import ActorSensesConfig from "./module/apps/senses-config.js";
// Import Helpers
import * as chat from "./module/chat.js";
import * as dice from "./module/dice.js";
import * as macros from "./module/macros.js";
import * as migrations from "./module/migration.js";
/* -------------------------------------------- */
/* Foundry VTT Initialization */
/* -------------------------------------------- */
Hooks.once("init", function() {
console.log(`SW5e | Initializing SW5E System\n${SW5E.ASCII}`);
// Create a SW5E namespace within the game global
game.sw5e = {
applications: {
AbilityUseDialog,
ActorSheetFlags,
ActorSheet5eCharacter,
ActorSheet5eCharacterNew,
ActorSheet5eNPC,
ActorSheet5eNPCNew,
ActorSheet5eVehicle,
ItemSheet5e,
ShortRestDialog,
TraitSelector,
ActorMovementConfig
},
canvas: {
AbilityTemplate
},
config: SW5E,
dice: dice,
entities: {
Actor5e,
Item5e,
},
macros: macros,
migrations: migrations,
rollItemMacro: macros.rollItemMacro
};
// Record Configuration Values
CONFIG.SW5E = SW5E;
CONFIG.Actor.entityClass = Actor5e;
CONFIG.Item.entityClass = Item5e;
CONFIG.time.roundTime = 6;
CONFIG.fontFamilies = [
"Engli-Besh",
"Open Sans",
"Russo One"
];
// 5e cone RAW should be 53.13 degrees
CONFIG.MeasuredTemplate.defaults.angle = 53.13;
// Add DND5e namespace for module compatability
game.dnd5e = game.sw5e;
CONFIG.DND5E = CONFIG.SW5E;
// Register System Settings
registerSystemSettings();
// Patch Core Functions
CONFIG.Combat.initiative.formula = "1d20 + @attributes.init.mod + @attributes.init.prof + @attributes.init.bonus";
Combat.prototype._getInitiativeFormula = _getInitiativeFormula;
// Register sheet application classes
Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("sw5e", ActorSheet5eCharacterNew, {
types: ["character"],
makeDefault: true,
label: "SW5E.SheetClassCharacter"
});
Actors.registerSheet("sw5e", ActorSheet5eCharacter, {
types: ["character"],
makeDefault: false,
label: "SW5E.SheetClassCharacterOld"
});
Actors.registerSheet("sw5e", ActorSheet5eNPCNew, {
types: ["npc"],
makeDefault: true,
label: "SW5E.SheetClassNPC"
});
Actors.registerSheet("sw5e", ActorSheet5eNPC, {
types: ["npc"],
makeDefault: false,
label: "SW5E.SheetClassNPCOld"
});
Actors.registerSheet('sw5e', ActorSheet5eVehicle, {
types: ['vehicle'],
makeDefault: true,
label: "SW5E.SheetClassVehicle"
});
Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("sw5e", ItemSheet5e, {
types: ['weapon', 'equipment', 'consumable', 'tool', 'loot', 'class', 'power', 'feat', 'species', 'backpack', 'archetype', 'classfeature', 'background', 'fightingmastery', 'fightingstyle', 'lightsaberform'],
makeDefault: true,
label: "SW5E.SheetClassItem"
});
// Preload Handlebars Templates
preloadHandlebarsTemplates();
});
/* -------------------------------------------- */
/* Foundry VTT Setup */
/* -------------------------------------------- */
/**
* This function runs after game data has been requested and loaded from the servers, so entities exist
*/
Hooks.once("setup", function() {
// Localize CONFIG objects once up-front
const toLocalize = [
"abilities", "abilityAbbreviations", "abilityActivationTypes", "abilityConsumptionTypes", "actorSizes", "alignments",
"armorProficiencies", "armorPropertiesTypes", "conditionTypes", "consumableTypes", "cover", "currencies", "damageResistanceTypes",
"damageTypes", "distanceUnits", "equipmentTypes", "healingTypes", "itemActionTypes", "languages",
"limitedUsePeriods", "movementTypes", "movementUnits", "polymorphSettings", "proficiencyLevels", "senses", "skills",
"powerComponents", "powerLevels", "powerPreparationModes", "powerScalingModes", "powerSchools", "targetTypes",
"timePeriods", "toolProficiencies", "weaponProficiencies", "weaponProperties", "weaponTypes"
];
// Exclude some from sorting where the default order matters
const noSort = [
"abilities", "alignments", "currencies", "distanceUnits", "movementUnits", "itemActionTypes", "proficiencyLevels",
"limitedUsePeriods", "powerComponents", "powerLevels", "powerPreparationModes", "weaponTypes"
];
// Localize and sort CONFIG objects
for ( let o of toLocalize ) {
const localized = Object.entries(CONFIG.SW5E[o]).map(e => {
return [e[0], game.i18n.localize(e[1])];
});
if ( !noSort.includes(o) ) localized.sort((a, b) => a[1].localeCompare(b[1]));
CONFIG.SW5E[o] = localized.reduce((obj, e) => {
obj[e[0]] = e[1];
return obj;
}, {});
}
// add DND5E translation for module compatability
game.i18n.translations.DND5E = game.i18n.translations.SW5E;
// console.log(game.settings.get("sw5e", "colorTheme"));
let theme = game.settings.get("sw5e", "colorTheme") + '-theme';
document.body.classList.add(theme);
});
/* -------------------------------------------- */
/**
* Once the entire VTT framework is initialized, check to see if we should perform a data migration
*/
Hooks.once("ready", function() {
// Wait to register hotbar drop hook on ready so that modules could register earlier if they want to
Hooks.on("hotbarDrop", (bar, data, slot) => macros.create5eMacro(data, slot));
// Determine whether a system migration is required and feasible
if ( !game.user.isGM ) return;
const currentVersion = game.settings.get("sw5e", "systemMigrationVersion");
const NEEDS_MIGRATION_VERSION = "1.2.1";
const COMPATIBLE_MIGRATION_VERSION = 0.80;
const needsMigration = currentVersion && isNewerVersion(NEEDS_MIGRATION_VERSION, currentVersion);
if ( !needsMigration ) return;
// Perform the migration
if ( currentVersion && isNewerVersion(COMPATIBLE_MIGRATION_VERSION, currentVersion) ) {
const warning = `Your SW5e system data is from too old a Foundry version and cannot be reliably migrated to the latest version. The process will be attempted, but errors may occur.`;
ui.notifications.error(warning, {permanent: true});
}
migrations.migrateWorld();
});
/* -------------------------------------------- */
/* Canvas Initialization */
/* -------------------------------------------- */
Hooks.on("canvasInit", function() {
// Extend Diagonal Measurement
canvas.grid.diagonalRule = game.settings.get("sw5e", "diagonalMovement");
SquareGrid.prototype.measureDistances = measureDistances;
// Extend Token Resource Bars
Token.prototype.getBarAttribute = getBarAttribute;
});
/* -------------------------------------------- */
/* Other Hooks */
/* -------------------------------------------- */
Hooks.on("renderChatMessage", (app, html, data) => {
// Display action buttons
chat.displayChatActionButtons(app, html, data);
// Highlight critical success or failure die
chat.highlightCriticalSuccessFailure(app, html, data);
// Optionally collapse the content
if (game.settings.get("sw5e", "autoCollapseItemCards")) html.find(".card-content").hide();
});
Hooks.on("getChatLogEntryContext", chat.addChatMessageContextOptions);
Hooks.on("renderChatLog", (app, html, data) => Item5e.chatListeners(html));
Hooks.on("renderChatPopout", (app, html, data) => Item5e.chatListeners(html));
Hooks.on('getActorDirectoryEntryContext', Actor5e.addDirectoryContextOptions);
Hooks.on("renderSceneDirectory", (app, html, data)=> {
//console.log(html.find("header.folder-header"));
setFolderBackground(html);
});
Hooks.on("renderActorDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("renderItemDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("renderJournalDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("renderRollTableDirectory", (app, html, data)=> {
setFolderBackground(html);
});
Hooks.on("ActorSheet5eCharacterNew", (app, html, data) => {
console.log("renderSwaltSheet");
});
// TODO I should remove this
Handlebars.registerHelper('getProperty', function (data, property) {
return getProperty(data, property);
});
function setFolderBackground(html) {
html.find("header.folder-header").each(function() {
let bgColor = $(this).css("background-color");
if(bgColor == undefined)
bgColor = "rgb(255,255,255)";
$(this).closest('li').css("background-color", bgColor);
})
}

View file

@ -2,7 +2,7 @@
"name": "sw5e",
"title": "SW 5th Edition",
"description": "A comprehensive game system for running games of SW 5th Edition in the Foundry VTT environment.",
"version": "R1-A1",
"version": "R1-A2",
"author": "Dev Team",
"scripts": [],
"esmodules": ["sw5e.js"],
@ -135,8 +135,8 @@
"gridUnits": "ft",
"primaryTokenAttribute": "attributes.hp",
"secondaryTokenAttribute": null,
"minimumCoreVersion": "0.7.6",
"compatibleCoreVersion": "0.7.7",
"minimumCoreVersion": "0.7.7",
"compatibleCoreVersion": "0.7.9",
"url": "https://github.com/unrealkakeman89/sw5e",
"manifest": "https://raw.githubusercontent.com/unrealkakeman89/sw5e/master/system.json",
"download": "https://github.com/unrealkakeman89/sw5e/archive/master.zip"

View file

@ -43,6 +43,15 @@
"init": {
"value": 0,
"bonus": 0
},
"movement": {
"burrow": 0,
"climb": 0,
"fly": 0,
"swim": 0,
"walk": 30,
"units": "ft",
"hover": false
}
},
"details": {
@ -76,15 +85,6 @@
},
"creature": {
"attributes": {
"movement": {
"burrow": 0,
"climb": 0,
"fly": 0,
"swim": 0,
"walk": 30,
"units": "ft",
"hover": false
},
"senses": {
"darkvision": 0,
"blindsight": 0,
@ -93,10 +93,7 @@
"units": "ft",
"special": ""
},
"powercasting": "none",
"speed": {
"_deprecated": true
}
"powercasting": "none"
},
"details": {
"alignment": "",

View file

@ -6,7 +6,7 @@
<input name="name" type="text" value="{{actor.name}}" placeholder="{{ localize 'SW5E.Name' }}" />
</h1>
<div class="level-experience">
<div class="charlevel">
<div class="charlevel" title="{{multiclassLabels}}">
{{ localize "SW5E.Level" }} {{data.details.level}} {{classLabels}}
</div>
{{#unless disableExperience}}
@ -115,7 +115,6 @@
<button class="item" data-tab="powerbook">{{ localize "SW5E.Powerbook" }}</button>
<button class="item" data-tab="effects">{{ localize "SW5E.Effects" }}</button>
<button class="item" data-tab="biography">{{ localize "SW5E.Biography" }}</button>
<button class="item" data-tab="notes">{{ localize "SW5E.Notes" }}</button>
</nav>
{{!-- PC Sheet Body --}}
<section class="sheet-body">
@ -143,8 +142,4 @@
<section class="tab biography" data-group="primary" data-tab="biography">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-biography.html"}}
</section>
{{!-- Notes Tab --}}
<section class="tab notes" data-group="primary" data-tab="notes">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-notes.html"}}
</section>
</form>

View file

@ -41,19 +41,19 @@
</section>
{{!-- HIT POINTS --}}
<section>
<h1>Hit Points</h1>
<div class="attribute-value multiple">
<input name="data.attributes.hp.value" type="text" value="{{data.attributes.hp.value}}"
data-dtype="Number" placeholder="10" class="value-number" />
<span class="value-separator">/</span>
<input name="data.attributes.hp.max" type="text" value="{{data.attributes.hp.max}}"
data-dtype="Number" placeholder="10" class="value-number" />
</div>
<footer class="attribute-footer hit-points">
<input name="data.attributes.hp.formula" class="hpformula" type="text"
<section class="attribute health">
<h1 class="attribute-name rollable">{{ localize "SW5E.Health" }}</h1>
<div class="attribute-value multiple">
<input name="data.attributes.hp.value" type="text" value="{{data.attributes.hp.value}}"
data-dtype="Number" placeholder="10" class="value-number" />
<span class="value-separator">/</span>
<input name="data.attributes.hp.max" type="text" value="{{data.attributes.hp.max}}"
data-dtype="Number" placeholder="10" class="value-number" />
</div>
<footer class="attribute-footer hit-points">
<input name="data.attributes.hp.formula" class="hpformula" type="text"
placeholder="{{ localize 'SW5E.HealthFormula' }}" value="{{data.attributes.hp.formula}}" />
</footer>
</footer>
</section>
<section>
<h1>{{ localize "SW5E.Movement" }}

View file

@ -44,8 +44,8 @@
</section>
<section class="panel traits-resources">
<nav class="core-tabs tab-list" data-subgroup-selection>
<button type="button" class="item active" data-subgroup="coreattributes" data-target="traits">Traits</button>
<button type="button" class="item" data-subgroup="coreattributes" data-target="resources">Resources</button>
<button type="button" class="item active" data-subgroup="coreattributes" data-target="traits">Resources & Traits</button>
<button type="button" class="item" data-subgroup="coreattributes" data-target="resources">Favorites & Notes</button>
</nav>
<div class="tab core-traits active" data-subgroup="coreattributes" data-target="traits">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-traits.html"}}

View file

@ -1,65 +1,36 @@
{{!-- Resources, Counters, & Favorites --}}
<section class="resources">
<section class="resource-items">
{{#each resources as |res|}}
<div class="resource">
<h1>
<input name="data.resources.{{res.name}}.label" type="text" value="{{res.label}}"
placeholder="{{res.placeholder}}" />
</h1>
<div class="attribute-value">
<input name="data.resources.{{res.name}}.value" type="text" value="{{res.value}}" data-dtype="Number"
placeholder="0" class="value-number" />
<span class="value-separator">/</span>
<input name="data.resources.{{res.name}}.max" type="text" value="{{res.max}}" data-dtype="Number"
placeholder="0" class="value-number" />
</div>
<footer class="attribute-footer">
<label class="recharge checkbox">
{{ localize "SW5E.AbbreviationSR" }} <input name="data.resources.{{res.name}}.sr" type="checkbox"
{{checked res.sr}} />
</label>
<label class="recharge checkbox">
{{ localize "SW5E.AbbreviationLR" }} <input name="data.resources.{{res.name}}.lr" type="checkbox"
{{checked res.lr}} />
</label>
</footer>
</div>
{{/each}}
</section>
<section class="counters">
<div class="counter">
<h4 class="death-save rollable">{{ localize "SW5E.DeathSave" }}</h4>
<div class="counter-value">
<div class="death-success">
<i class="fas fa-check"></i>
<input type="text" name="data.attributes.death.success" data-dtype="Number" placeholder="0"
value="{{data.attributes.death.success}}" />
</div>
<div class="death-fail">
<i class="fas fa-times"></i>
<input type="text" name="data.attributes.death.failure" data-dtype="Number" placeholder="0"
value="{{data.attributes.death.failure}}" />
</div>
</div>
</div>
<div class="counter">
<h4>{{ localize "SW5E.Exhaustion" }}</h4>
<div class="counter-value">
<input type="text" name="data.attributes.exhaustion" data-dtype="Number" placeholder="0"
value="{{data.attributes.exhaustion}}" />
</div>
</div>
<div class="counter">
<h4>{{ localize "SW5E.Inspiration" }}</h4>
<div class="counter-value">
<input type="checkbox" name="data.attributes.inspiration" data-dtype="Boolean"
{{checked data.attributes.inspiration}} />
</div>
</div>
</section>
<section class="favorites">
<h1>Favorites</h1>
<section class="favorites">
<h1>Favorites</h1>
<div class="favtabtarget"></div>
</section>
</section>
</section>
<p>&nbsp;</p>
<section class="background">
<h1>Journal and Notes</h1>
<input type="text" name="data.details.notesname" value="{{data.details.notesname}}"
placeholder="Personal Journal" />
{{editor content=data.details.notes.value target="data.details.notes.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes1name" value="{{data.details.notes1name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes1.value target="data.details.notes1.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes2name" value="{{data.details.notes2name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes2.value target="data.details.notes2.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes3name" value="{{data.details.notes3name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes3.value target="data.details.notes3.value" button=true owner=owner editable=editable}}
</section>
<section>
<input type="text" name="data.details.notes4name" value="{{data.details.notes4name}}"
placeholder="Additional Notes" />
{{editor content=data.details.notes4.value target="data.details.notes4.value" button=true owner=owner editable=editable}}
</section>

View file

@ -1,3 +1,63 @@
<section class="resources">
<section class="resource-items">
{{#each resources as |res|}}
<div class="resource">
<h1>
<input name="data.resources.{{res.name}}.label" type="text" value="{{res.label}}"
placeholder="{{res.placeholder}}" />
</h1>
<div class="attribute-value">
<input name="data.resources.{{res.name}}.value" type="text" value="{{res.value}}" data-dtype="Number"
placeholder="0" class="value-number" />
<span class="value-separator">/</span>
<input name="data.resources.{{res.name}}.max" type="text" value="{{res.max}}" data-dtype="Number"
placeholder="0" class="value-number" />
</div>
<footer class="attribute-footer">
<label class="recharge checkbox">
{{ localize "SW5E.AbbreviationSR" }} <input name="data.resources.{{res.name}}.sr" type="checkbox"
{{checked res.sr}} />
</label>
<label class="recharge checkbox">
{{ localize "SW5E.AbbreviationLR" }} <input name="data.resources.{{res.name}}.lr" type="checkbox"
{{checked res.lr}} />
</label>
</footer>
</div>
{{/each}}
</section>
<section class="counters">
<div class="counter">
<h4 class="death-save rollable">{{ localize "SW5E.DeathSave" }}</h4>
<div class="counter-value">
<div class="death-success">
<i class="fas fa-check"></i>
<input type="text" name="data.attributes.death.success" data-dtype="Number" placeholder="0"
value="{{data.attributes.death.success}}" />
</div>
<div class="death-fail">
<i class="fas fa-times"></i>
<input type="text" name="data.attributes.death.failure" data-dtype="Number" placeholder="0"
value="{{data.attributes.death.failure}}" />
</div>
</div>
</div>
<div class="counter">
<h4>{{ localize "SW5E.Exhaustion" }}</h4>
<div class="counter-value">
<input type="text" name="data.attributes.exhaustion" data-dtype="Number" placeholder="0"
value="{{data.attributes.exhaustion}}" />
</div>
</div>
<div class="counter">
<h4>{{ localize "SW5E.Inspiration" }}</h4>
<div class="counter-value">
<input type="checkbox" name="data.attributes.inspiration" data-dtype="Boolean"
{{checked data.attributes.inspiration}} />
</div>
</div>
</section>
<section class="traits">
<label>
{{localize "SW5E.Size"}}
@ -12,7 +72,7 @@
<label class="{{#unless data.traits.senses}}inactive{{/unless}}">
{{#unless isVehicle}}
<label>{{localize "SW5E.Senses"}}</label>
<a class="config-button" data-action="senses" title="{{localize 'SW5E.MovementConfig'}}"><i class="fas fa-cog"></i></a>
<a class="config-button" data-action="senses" title="{{localize 'SW5E.SensesConfig'}}"><i class="fas fa-cog"></i></a>
<ul class="traits-list">
{{#each senses as |v k|}}
<li class="tag {{k}}">{{v}}</li>
@ -20,6 +80,16 @@
</ul>
{{/unless}}
</label>
<div>
<label>{{localize "SW5E.MovementConfig"}}</label>
<a class="configure-movement" title="{{localize 'SW5E.MovementConfig'}}"><i class="fas fa-cog"></i></a>
</div>
<div>
{{#unless isVehicle}}
<label>{{localize "SW5E.SpecialTraits"}}</label>
<a class="configure-flags"><i class="fas fa-cog"></i></a>
{{/unless}}
</div>
<div class="languages">
<label data-options="share-languages" class="languages">{{localize "SW5E.Languages"}}</label>
<a class="trait-selector" data-options="languages" data-target="data.traits.languages">
@ -30,7 +100,40 @@
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitArmorProf"}}</label>
<a class="trait-selector" data-options="armorProficiencies" data-target="data.traits.armorProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.armorProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitToolProf"}}</label>
<a class="trait-selector" data-options="toolProficiencies" data-target="data.traits.toolProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.toolProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitWeaponProf"}}</label>
<a class="trait-selector" data-options="weaponProficiencies" data-target="data.traits.weaponProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.weaponProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.DamImm"}}</label>
<a class="trait-selector" data-options="damageResistanceTypes" data-target="data.traits.di">
@ -76,47 +179,7 @@
{{/each}}
</ul>
</div>{{#if isCharacter}}
<div>
<label>{{localize "SW5E.TraitWeaponProf"}}</label>
<a class="trait-selector" data-options="weaponProficiencies" data-target="data.traits.weaponProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.weaponProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitArmorProf"}}</label>
<a class="trait-selector" data-options="armorProficiencies" data-target="data.traits.armorProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.armorProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
<div>
<label>{{localize "SW5E.TraitToolProf"}}</label>
<a class="trait-selector" data-options="toolProficiencies" data-target="data.traits.toolProf">
<i class="fas fa-edit"></i>
</a>
<ul class="traits-list">
{{#each data.traits.toolProf.selected as |v k|}}
<li>{{v}}</li>
{{/each}}
</ul>
</div>
{{/if}}
{{#unless isVehicle}}
<div>
<label>{{localize "SW5E.SpecialTraits"}}</label>
<a class="config-button" data-action="flags" title="{{localize 'SW5E.SpecialTraits'}}"><i class="fas fa-cog"></i></a>
</div>
{{/unless}}
<ul class="passives"></ul>
</section>
</section>

View file

@ -55,11 +55,17 @@
placeholder="&mdash;" value="{{data.attributes.ac.motionless}}">
</footer>
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{localize 'SW5E.Speed'}}</h4>
<li class="attribute movement">
<h4 class="attribute-name box-title">
{{ localize "SW5E.Movement" }}
<a class="config-button" data-action="movement" title="{{localize 'SW5E.MovementConfig'}}"><i class="fas fa-cog"></i></a>
</h4>
<div class="attribute-value">
<input name="data.attributes.speed" type="text" placeholder="&mdash;" value="{{data.attributes.speed}}"/>
<span>{{movement.primary}}</span>
</div>
<footer class="attribute-footer">
<span>{{movement.special}}</span>
</footer>
</li>
</ul>
</section>

View file

@ -10,7 +10,7 @@
</h1>
<aside class="header-exp flexcol">
<div class="charlevel">
<div class="charlevel" title="{{multiclassLabels}}">
<label>{{ localize "SW5E.Level" }} {{data.details.level}}</label>
<span class="levels">{{classLabels}}</span>
</div>

View file

@ -13,7 +13,7 @@
{{#unless isVehicle}}
<div class="form-group">
<label>{{localize "SW5E.Senses"}}</label>
<a class="config-button" data-action="senses" title="{{localize 'SW5E.MovementConfig'}}"><i class="fas fa-cog"></i></a>
<a class="config-button" data-action="senses" title="{{localize 'SW5E.SensesConfig'}}"><i class="fas fa-cog"></i></a>
<ul class="traits-list">
{{#each senses as |v k|}}
<li class="tag {{k}}">{{v}}</li>

View file

@ -55,11 +55,17 @@
placeholder="&mdash;" value="{{data.attributes.ac.motionless}}">
</footer>
</li>
<li class="attribute">
<h4 class="attribute-name box-title">{{localize 'SW5E.Speed'}}</h4>
<li class="attribute movement">
<h4 class="attribute-name box-title">
{{ localize "SW5E.Movement" }}
<a class="config-button" data-action="movement" title="{{localize 'SW5E.MovementConfig'}}"><i class="fas fa-cog"></i></a>
</h4>
<div class="attribute-value">
<input name="data.attributes.speed" type="text" placeholder="&mdash;" value="{{data.attributes.speed}}"/>
<span>{{movement.primary}}</span>
</div>
<footer class="attribute-footer">
<span>{{movement.special}}</span>
</footer>
</li>
</ul>
</section>

View file

@ -2,7 +2,7 @@
<p>{{ title }}</p>
<p class="notes">{{note}}</p>
{{#each errors}}
<p class="notification error">{{localize this}}</p>
<p class="notification error">{{this}}</p>
{{/each}}
{{#if consumePowerSlot}}