Fully split force and tech powers into their own sheets

This commit is contained in:
TJ 2021-02-10 18:39:36 -06:00
parent 70d399e8f6
commit 1ce2e92ccd
18 changed files with 285 additions and 318 deletions

View file

@ -802,6 +802,8 @@
"SW5E.PowerUnprepared": "Unprepared",
"SW5E.PowerUsage": "Power Usage",
"SW5E.Powerbook": "Powerbook",
"SW5E.ForcePowerbook": "Force Powers",
"SW5E.TechPowerbook": "Tech Powers",
"SW5E.SpeciesDescription": "Description",
"SW5E.SpeciesTraits": "Species Traits",
"SW5E.StealthDisadvantage": "Stealth Disadvantage",

View file

@ -400,7 +400,8 @@
.tab.features,
.tab.inventory,
.tab.powerbook {
.tab.force-powerbook,
.tab.tech-powerbook {
overflow-y: hidden;
}

View file

@ -5,7 +5,7 @@
.dropShadow1();
}
.sw5e.sheet.actor.character {
min-width: 850px;
min-width: 880px;
min-height: 720px;
}
.sw5e.sheet .window-content {
@ -258,8 +258,8 @@
nav.sheet-navigation {
display: grid;
grid-template-columns: repeat(6, 1fr);
column-gap: 16px;
grid-template-columns: repeat(7, 1fr);
column-gap: 8px;
margin: 4px 0;
.item {
@ -938,10 +938,11 @@
grid-template-rows: 24px auto;
}
}
.tab.powerbook {
.tab.force-powerbook,
.tab.tech-powerbook {
.resource-items {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-columns: repeat(4, 1fr);
column-gap: 12px;
.resource {
@ -991,21 +992,21 @@
}
&>.panel {
grid-template-rows: 32px 24px 24px auto;
grid-template-rows: 56px 32px 24px auto;
}
h3.power-dc {
line-height: 24px;
}
.powercasting-ability {
.force-powercasting-ability {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
grid-template-columns: 1fr 1fr 1fr 1fr;
label, h3 {
.russoOne(13px);
border-bottom: none;
}
.power-dc {
grid-column-start: 3;
}
// .power-dc {
// grid-column-start: 3;
// }
}
}
.tab.biography {
@ -1097,7 +1098,8 @@
// }
}
}
.tab.powerbook {
.tab.force-powerbook,
.tab.tech-powerbook {
input.powercasting-level {
width: 48px;
}

View file

@ -382,7 +382,8 @@
}
.tab.powerbook {
.tab.force-powerbook,
.tab.tech-powerbook {
.powercasting-ability {
label,
h3 {

View file

@ -21,7 +21,8 @@ export default class ActorSheet5e extends ActorSheet {
*/
this._filters = {
inventory: new Set(),
powerbook: new Set(),
forcePowerbook: new Set(),
techPowerbook: new Set(),
features: new Set(),
effects: new Set()
};
@ -35,7 +36,8 @@ export default class ActorSheet5e extends ActorSheet {
scrollY: [
".inventory .group-list",
".features .group-list",
".powerbook .group-list",
".force-powerbook .group-list",
".tech-powerbook .group-list",
".effects .effects-list"
],
tabs: [{navSelector: ".tabs", contentSelector: ".sheet-body", initial: "description"}]

View file

@ -84,7 +84,7 @@ export default class ActorSheet5eCharacterNew extends ActorSheet5e {
};
// Partition items by category
let [items, powers, feats, classes, species, archetypes, classfeatures, backgrounds, fightingstyles, fightingmasteries, lightsaberforms] = data.items.reduce((arr, item) => {
let [items, forcepowers, techpowers, feats, classes, species, archetypes, classfeatures, backgrounds, fightingstyles, fightingmasteries, lightsaberforms] = data.items.reduce((arr, item) => {
// Item details
item.img = item.img || DEFAULT_TOKEN;
@ -112,23 +112,25 @@ export default class ActorSheet5eCharacterNew extends ActorSheet5e {
this._prepareItemToggleState(item);
// Classify items into types
if ( item.type === "power" ) arr[1].push(item);
else if ( item.type === "feat" ) arr[2].push(item);
else if ( item.type === "class" ) arr[3].push(item);
else if ( item.type === "species" ) arr[4].push(item);
else if ( item.type === "archetype" ) arr[5].push(item);
else if ( item.type === "classfeature" ) arr[6].push(item);
else if ( item.type === "background" ) arr[7].push(item);
else if ( item.type === "fightingstyle" ) arr[8].push(item);
else if ( item.type === "fightingmastery" ) arr[9].push(item);
else if ( item.type === "lightsaberform" ) arr[10].push(item);
if ( item.type === "power" && ["lgt", "drk", "uni"].includes(item.data.school) ) arr[1].push(item);
else if ( item.type === "power" && ["tec"].includes(item.data.school) ) arr[2].push(item);
else if ( item.type === "feat" ) arr[3].push(item);
else if ( item.type === "class" ) arr[4].push(item);
else if ( item.type === "species" ) arr[5].push(item);
else if ( item.type === "archetype" ) arr[6].push(item);
else if ( item.type === "classfeature" ) arr[7].push(item);
else if ( item.type === "background" ) arr[8].push(item);
else if ( item.type === "fightingstyle" ) arr[9].push(item);
else if ( item.type === "fightingmastery" ) arr[10].push(item);
else if ( item.type === "lightsaberform" ) arr[11].push(item);
else if ( Object.keys(inventory).includes(item.type ) ) arr[0].push(item);
return arr;
}, [[], [], [], [], [], [], [], [], [], [], []]);
}, [[], [], [], [], [], [], [], [], [], [], [], []]);
// Apply active item filters
items = this._filterItems(items, this._filters.inventory);
powers = this._filterItems(powers, this._filters.powerbook);
forcepowers = this._filterItems(forcepowers, this._filters.forcePowerbook);
techpowers = this._filterItems(techpowers, this._filters.techPowerbook);
feats = this._filterItems(feats, this._filters.features);
// Organize items
@ -140,10 +142,8 @@ export default class ActorSheet5eCharacterNew extends ActorSheet5e {
}
// Organize Powerbook and count the number of prepared powers (excluding always, at will, etc...)
const powerbook = this._preparePowerbook(data, powers);
const nPrepared = powers.filter(s => {
return (s.data.level > 0) && (s.data.preparation.mode === "prepared") && s.data.preparation.prepared;
}).length;
const forcePowerbook = this._preparePowerbook(data, forcepowers);
const techPowerbook = this._preparePowerbook(data, techpowers);
// Organize Features
const features = {
@ -174,8 +174,8 @@ export default class ActorSheet5eCharacterNew extends ActorSheet5e {
// Assign and return
data.inventory = Object.values(inventory);
data.powerbook = powerbook;
data.preparedPowers = nPrepared;
data.forcePowerbook = forcePowerbook;
data.techPowerbook = techPowerbook;
data.features = Object.values(features);
}

View file

@ -64,26 +64,6 @@ export default class Item5e extends Item {
/* -------------------------------------------- */
/**
* Is the Item a force power
* @type {boolean}
*/
get isForcePower() {
return ["lgt", "drk", "uni"].includes(this.data.data.school);
}
/* -------------------------------------------- */
/**
* Is the Item a tech power
* @type {boolean}
*/
get isTechPower() {
return ["tec"].includes(this.data.data.school);
}
/* -------------------------------------------- */
/**
* Does the Item implement an attack roll as part of its usage
* @type {boolean}

View file

@ -55,7 +55,7 @@ export default class ItemSheet5e extends ItemSheet {
// Potential consumption targets
data.abilityConsumptionTargets = this._getItemConsumptionTargets(data.item);
// Action Details
// Action Detail
data.hasAttackRoll = this.item.hasAttack;
data.isHealing = data.item.data.actionType === "heal";
data.isFlatDC = getProperty(data.item.data, "save.scaling") === "flat";
@ -65,7 +65,7 @@ export default class ItemSheet5e extends ItemSheet {
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.isCrewed = data.item.data.activation?.type === "crew";
data.isMountable = this._isItemMountable(data.item);
// Prepare Active Effects
@ -89,12 +89,15 @@ export default class ItemSheet5e extends ItemSheet {
// Ammunition
if (consume.type === "ammo") {
return actor.itemTypes.consumable.reduce((ammo, i) => {
return actor.itemTypes.consumable.reduce(
(ammo, i) => {
if (i.data.data.consumableType === "ammo") {
ammo[i.id] = `${i.name} (${i.data.data.quantity})`;
}
return ammo;
}, {[item._id]: `${item.name} (${item.data.quantity})`});
},
{ [item._id]: `${item.name} (${item.data.quantity})` }
);
}
// Attributes
@ -119,13 +122,13 @@ export default class ItemSheet5e extends ItemSheet {
// Charges
else if (consume.type === "charges") {
return actor.items.reduce((obj, i) => {
// Limited-use items
const uses = i.data.data.uses || {};
if (uses.per && uses.max) {
const label = uses.per === "charges" ?
` (${game.i18n.format("SW5E.AbilityUseChargesLabel", {value: uses.value})})` :
` (${game.i18n.format("SW5E.AbilityUseConsumableLabel", {max: uses.max, per: uses.per})})`;
const label =
uses.per === "charges"
? ` (${game.i18n.format("SW5E.AbilityUseChargesLabel", { value: uses.value })})`
: ` (${game.i18n.format("SW5E.AbilityUseConsumableLabel", { max: uses.max, per: uses.per })})`;
obj[i.id] = i.name + label;
}
@ -133,9 +136,8 @@ export default class ItemSheet5e extends ItemSheet {
const recharge = i.data.data.recharge || {};
if (recharge.value) obj[i.id] = `${i.name} (${game.i18n.format("SW5E.Recharge")})`;
return obj;
}, {})
}
else return {};
}, {});
} else return {};
}
/* -------------------------------------------- */
@ -148,11 +150,9 @@ export default class ItemSheet5e extends ItemSheet {
_getItemStatus(item) {
if (item.type === "power") {
return CONFIG.SW5E.powerPreparationModes[item.data.preparation];
}
else if ( ["weapon", "equipment"].includes(item.type) ) {
} else if (["weapon", "equipment"].includes(item.type)) {
return game.i18n.localize(item.data.equipped ? "SW5E.Equipped" : "SW5E.Unequipped");
}
else if ( item.type === "tool" ) {
} else if (item.type === "tool") {
return game.i18n.localize(item.data.proficient ? "SW5E.Proficient" : "SW5E.NotProficient");
}
}
@ -169,48 +169,36 @@ export default class ItemSheet5e extends ItemSheet {
const labels = this.item.labels;
if (item.type === "weapon") {
props.push(...Object.entries(item.data.properties)
.filter(e => e[1] === true)
.map(e => CONFIG.SW5E.weaponProperties[e[0]]));
}
else if ( item.type === "power" ) {
props.push(
...Object.entries(item.data.properties)
.filter((e) => e[1] === true)
.map((e) => CONFIG.SW5E.weaponProperties[e[0]])
);
} else if (item.type === "power") {
props.push(
labels.components,
labels.materials,
item.data.components.concentration ? game.i18n.localize("SW5E.Concentration") : null,
item.data.components.ritual ? game.i18n.localize("SW5E.Ritual") : null
)
}
else if ( item.type === "equipment" ) {
);
} else if (item.type === "equipment") {
props.push(CONFIG.SW5E.equipmentTypes[item.data.armor.type]);
props.push(labels.armor);
}
else if ( item.type === "feat" ) {
} else if (item.type === "feat") {
props.push(labels.featType);
}
else if ( item.type === "species" ) {
} else if (item.type === "species") {
//props.push(labels.species);
}
else if ( item.type === "archetype" ) {
} else if (item.type === "archetype") {
//props.push(labels.archetype);
}
else if ( item.type === "background" ) {
} else if (item.type === "background") {
//props.push(labels.background);
}
else if ( item.type === "classfeature" ) {
} else if (item.type === "classfeature") {
//props.push(labels.classfeature);
}
else if ( item.type === "fightingmastery" ) {
} else if (item.type === "fightingmastery") {
//props.push(labels.fightingmastery);
}
else if ( item.type === "fightingstyle" ) {
} else if (item.type === "fightingstyle") {
//props.push(labels.fightingstyle);
}
else if ( item.type === "lightsaberform" ) {
} else if (item.type === "lightsaberform") {
//props.push(labels.lightsaberform);
}
@ -220,15 +208,10 @@ export default class ItemSheet5e extends ItemSheet {
}
// Action usage
if ( (item.type !== "weapon") && item.data.activation && !isObjectEmpty(item.data.activation) ) {
props.push(
labels.activation,
labels.range,
labels.target,
labels.duration
)
if (item.type !== "weapon" && item.data.activation && !isObjectEmpty(item.data.activation)) {
props.push(labels.activation, labels.range, labels.target, labels.duration);
}
return props.filter(p => !!p);
return props.filter((p) => !!p);
}
/* -------------------------------------------- */
@ -243,8 +226,10 @@ export default class ItemSheet5e extends ItemSheet {
*/
_isItemMountable(item) {
const data = item.data;
return (item.type === 'weapon' && data.weaponType === 'siege')
|| (item.type === 'equipment' && data.armor.type === 'vehicle');
return (
(item.type === "weapon" && data.weaponType === "siege") ||
(item.type === "equipment" && data.armor.type === "vehicle")
);
}
/* -------------------------------------------- */
@ -252,7 +237,7 @@ export default class ItemSheet5e extends ItemSheet {
/** @override */
setPosition(position = {}) {
if (!(this._minimized || position.height)) {
position.height = (this._tabs[0].active === "details") ? "auto" : this.options.height;
position.height = this._tabs[0].active === "details" ? "auto" : this.options.height;
}
return super.setPosition(position);
}
@ -263,7 +248,6 @@ export default class ItemSheet5e extends ItemSheet {
/** @override */
_getSubmitData(updateData = {}) {
// Create the expanded update data object
const fd = new FormDataExtended(this.form, { editors: this.editors });
let data = fd.toObject();
@ -272,7 +256,7 @@ export default class ItemSheet5e extends ItemSheet {
// Handle Damage array
const damage = data.data?.damage;
if ( damage ) damage.parts = Object.values(damage?.parts || {}).map(d => [d[0] || "", d[1] || ""]);
if (damage) damage.parts = Object.values(damage?.parts || {}).map((d) => [d[0] || "", d[1] || ""]);
// Return the flattened submission data
return flattenObject(data);
@ -285,10 +269,13 @@ export default class ItemSheet5e extends ItemSheet {
super.activateListeners(html);
if (this.isEditable) {
html.find(".damage-control").click(this._onDamageControl.bind(this));
html.find('.trait-selector.class-skills').click(this._onConfigureClassSkills.bind(this));
html.find(".effect-control").click(ev => {
if ( this.item.isOwned ) return ui.notifications.warn("Managing Active Effects within an Owned Item is not currently supported and will be added in a subsequent update.")
onManageActiveEffect(ev, this.item)
html.find(".trait-selector.class-skills").click(this._onConfigureClassSkills.bind(this));
html.find(".effect-control").click((ev) => {
if (this.item.isOwned)
return ui.notifications.warn(
"Managing Active Effects within an Owned Item is not currently supported and will be added in a subsequent update."
);
onManageActiveEffect(ev, this.item);
});
}
}
@ -346,7 +333,7 @@ export default class ItemSheet5e extends ItemSheet {
}, {}),
minimum: skills.number,
maximum: skills.number
}).render(true)
}).render(true);
}
/* -------------------------------------------- */

View file

@ -288,7 +288,7 @@ function _migrateActorPowers(actorData, updateData) {
}
// If new Power F/T split data is not present, create it
const hasNewBonus = ad?.powers?.power1?.fvalue !== undefined;
let hasNewBonus = ad?.powers?.power1?.fvalue !== undefined;
if ( !hasNewBonus ) {
for (let i = 1; i <= 9; i++) {
// add new
@ -302,7 +302,7 @@ function _migrateActorPowers(actorData, updateData) {
}
}
// If new Bonus Power DC data is not present, create it
const hasNewBonus = ad?.bonuses?.power?.forceLightDC !== undefined;
hasNewBonus = ad?.bonuses?.power?.forceLightDC !== undefined;
if ( !hasNewBonus ) {
updateData["data.bonuses.power.forceLightDC"] = "";
updateData["data.bonuses.power.forceDarkDC"] = "";

View file

@ -40,7 +40,7 @@
{"_id":"DXdtjkn0Zg8JP8YT","name":"Truth Serum","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>You administer a poison to a creature you touched that prevents it from telling lies. The creature touched must make a Constitution saving throw. On a success, nothing happens. On a failure, the creature can't speak a deliberate lie until the power ends.</p>\n<p>An affected creature is aware of the power and can thus avoid answering questions to which it would normally respond with a lie. Such a creature can be evasive in its answers as long as it remains within the boundaries of the truth.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":10,"units":"minute"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"con","dc":null,"scaling":"power"},"level":2,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/TruthSerum.webp"}
{"_id":"DjrO5bCUnUHA71jA","name":"Ion Blast","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>You create a blast of ion energy. Choose one creature within range, or choose two creatures within range that are within 5 feet of each other. A target must succeed on a Dexterity saving throw or take 1d4 ion damage.</p>\n<p>This power's damage increases by 1d4 when you reach 5th level (2d4), 11th level (3d4), and 17th level (4d4).</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[["1d4","ion"]],"versatile":""},"formula":"","save":{"ability":"dex","dc":null,"scaling":"power"},"level":0,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/IonBlast.webp"}
{"_id":"E6OviwnCfEjRTx3X","name":"On/Off","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>This power allows you to activate or deactivate any electronic device within range, as long as the device is not being wielded by a creature, and has a clearly defined on or off function that can be easily accessed from the outside of the device. Any device that requires a software-based shutdown sequence to activate or deactivate cannot be affected by <em>on/off</em>.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"object"},"range":{"value":60,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":0,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/OnOff.webp"}
{"_id":"F4Q7jJ2ssAKfNHw0","name":"Disintegrate","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>A blast of corrosive energy emits from you. Choose a target within range.</p>\n<p>A creature targeted by this power must make a Dexterity saving throw. On a failed save, the target takes 10d6 + 40 acid damage. If this damage reduces the target to 0 hit points, it is disintegrated.</p>\n<p>A disintegrated creature and everything it is wearing and carrying are reduced to a pile of fine gray dust. A creature destroyed in this way can not be revitalized.</p>\n<p>This power automatically disintegrates a Large or smaller object. If the target is a Huge or larger object, this power disintegrates a 10-foot-cube portion of it.</p>\n<p><em><strong>Overcharge Tech.</strong></em> When you cast this power using a tech slot of 7th level or higher, the damage increases by 3d6 for each slot level above 6th.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[["10d6 + 40","acid"]],"versatile":""},"formula":"","save":{"ability":"dex","dc":null,"scaling":"power"},"level":6,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/Disintegrate.webp"}
{"_id":"F4Q7jJ2ssAKfNHw0","name":"Disintegrate","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>A blast of corrosive energy emits from you. Choose a target within range.</p>\n<p>A creature targeted by this power must make a Dexterity saving throw. On a failed save, the target takes 10d6 + 40 acid damage. If this damage reduces the target to 0 hit points, it is disintegrated.</p>\n<p>A disintegrated creature and everything it is wearing and carrying are reduced to a pile of fine gray dust. A creature destroyed in this way can not be revitalized.</p>\n<p>This power automatically disintegrates a Large or smaller object. If the target is a Huge or larger object, this power disintegrates a 10-foot-cube portion of it.</p>\n<p><em><strong>Overcharge Tech.</strong></em> When you cast this power using a tech slot of 7th level or higher, the damage increases by 3d6 for each slot level above 6th.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[["10d6 + 40","acid"]],"versatile":""},"formula":"","save":{"ability":"dex","dc":null,"scaling":"power"},"level":6,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/Disintegrate.webp","effects":[]}
{"_id":"F9vT2fmmbLjQJcWv","name":"Magnetic Hold","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>Until the power ends, one willing creature you touch gains the ability affix itself to and move along any metallic surface. It can move up, down, and across vertical surfaces and upside down along ceilings, all while leaving its hands free, at its normal walking speed.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"hour"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":2,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/MagneticHold.webp"}
{"_id":"Fb1sIhs7d6YWnF1J","name":"Infiltrate","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>A creature you touch becomes invisible. Anything the target is carrying is invisible as long as it is on the target. The power ends if the target attacks or casts a power.</p>\n<p><em><strong>Overcharge Tech.</strong></em> You can target one additional creature for each slot level above 2nd.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"hour"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":2,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/Infiltrate.webp"}
{"_id":"FsF2hPZPp4Vuo1BD","name":"Find the Path","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>This power calculates out the shortest, most direct physical route to a specific fixed location that you are familiar with on the same planet. If you name a destination that moves (such as a mobile fortress), or a destination that isn't specific (such as &quot;a Black Sun lair&quot;), the power fails.</p>\n<p>For the duration, as long as you are on the same planet as the destination, you know how far it is and in what direction it lies. While you are traveling there, whenever you are presented with a choice of paths along the way, you automatically determine which path is the shortest and most direct route (but not necessarily the safest route) to the destination.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"minute","cost":1,"condition":""},"duration":{"value":1,"units":"day"},"target":{"value":null,"units":"","type":"self"},"range":{"value":null,"long":null,"units":"self"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":6,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/Findthe%20Path.webp"}
@ -104,10 +104,10 @@
{"_id":"SZHMFvx9mkPSwUli","name":"Mass Repair Droid","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>Choose up to six droids or constructs in a 30-foot-radius sphere centered on a point. Each target regains hit points equal to 3d8 + your techcasting ability modifier. This power only effects droids and constructs.</p>\n<p><em><strong>Overcharge Tech.</strong></em> When you cast this power using a tech slot of 6th level or higher, the healing increases by 1d8 for each slot level above 5th.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":30,"units":"ft","type":"radius"},"range":{"value":60,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"heal","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[["3d8 + @abilities.int.mod","healing"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":5,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/MassRepair%20Droid.webp"}
{"_id":"T9yaDZKiKSX8zFud","name":"Temporary Boost","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>You touch one willing creature. Once before the power ends, the target can roll a d4 and add the number rolled to one ability check of its choice. It can roll the die before or after making the ability check. The power then ends.</p>\n<p>This power's die increases at higher levels: to a d6 at 5th level, a d8 at 11th level, and a d10 at 17th level.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"minute"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":0,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/TemporaryBoost.webp"}
{"_id":"TpJV9QdBqbnL7aLQ","name":"Debilitating Gas","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>You create a 20-foot-radius sphere of gas centered on a point. The cloud spreads around corners and its area is heavily obscured. It lingers in the air for the duration.</p>\n<p>Each creature completely in the cloud at the start of its turn must make a Constitution save against poison. On a failure, the creature does nothing that turn. Creatures that don't need to breathe or are immune to poison automatically succeed.</p>\n<p>A wind of 10mph disperses the cloud after 4 rounds. A wind of 20mph disperses it after 1 round.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"minute"},"target":{"value":20,"units":"ft","type":"radius"},"range":{"value":90,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"con","dc":null,"scaling":"power"},"level":3,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/DebilitatingGas.webp"}
{"name":"Electroshock","type":"power","data":{"description":{"value":"<p>Lightning springs from you to deliver a shock to a creature you try to touch. Make a melee tech attack against the target. You have advantage on the attack roll if the target is made of metal or wearing armor made of metal. On a hit, the target takes 1d8 lightning damage and becomes shocked until the start of its next turn.</p>\n<p>This power's damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":"Instantaneous"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":null},"consume":{"type":"","target":null,"amount":null},"ability":"int","actionType":"rpak","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":0,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/Electroshock.webp","_id":"UACmTGjhcYjQyLj3"}
{"_id":"UACmTGjhcYjQyLj3","name":"Electroshock","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>Lightning springs from you to deliver a shock to a creature you try to touch. Make a melee tech attack against the target. You have advantage on the attack roll if the target is made of metal or wearing armor made of metal. On a hit, the target takes 1d8 lightning damage and becomes shocked until the start of its next turn.</p>\n<p>This power's damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"rpak","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":0,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/Electroshock.webp","effects":[]}
{"_id":"UNgPNWRmkQUNpNny","name":"Pressure Crush","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>You attempt to crush the body of a creature you touch. The target must make a Strength saving throw. If the creature is grappled or restrained by you or an effect you control, it makes the saving throw with disadvantage. On a failed save, the creature takes 1d12 kinetic damage.</p>\n<p>This power's damage increases by 1d12 when you reach 5th level (2d12), 11th level (3d12), and 17th level (4d12).</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[["1d12","kinetic"]],"versatile":""},"formula":"","save":{"ability":"str","dc":null,"scaling":"power"},"level":0,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/PressureCrush.webp"}
{"_id":"USt5H36LIw7ma5gh","name":"Buffer","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>You gain 1d4 + 4 temporary hit points for the duration.</p>\n<p><em><strong>Overcharge Tech.</strong></em> When you cast this power using a tech slot of 2nd level or higher, you gain 5 additional temporary hit points for each slot level above 1st.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"hour"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"self"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[["",""]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":1,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/Buffer.webp"}
{"_id":"V0gdMfr4o2iV2AOb","name":"Echo Blast","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>You emit a reverberating pulse of sound at a target within range. The target must succeed on a Wisdom saving throw or take 1d8 sonic damage.</p>\n<p>This power can hit multiple targets in succession when you reach higher levels: two targets at 5th level, three targets at 11th level, and four targets at 17th level. Each target must be within 30 feet of the previous target, and the last target must be no further than 30 feet away from you. You can not target the same creature twice in succession.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"creature"},"range":{"value":30,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[["1d8","sonic"]],"versatile":""},"formula":"","save":{"ability":"wis","dc":null,"scaling":"power"},"level":0,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/EchoBlast.webp"}
{"_id":"V0gdMfr4o2iV2AOb","name":"Echo Blast","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>You emit a reverberating pulse of sound at a target within range. The target must succeed on a Wisdom saving throw or take 1d8 sonic damage.</p>\n<p>This power can hit multiple targets in succession when you reach higher levels: two targets at 5th level, three targets at 11th level, and four targets at 17th level. Each target must be within 30 feet of the previous target, and the last target must be no further than 30 feet away from you. You can not target the same creature twice in succession.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"creature"},"range":{"value":30,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[["1d8","sonic"]],"versatile":""},"formula":"","save":{"ability":"wis","dc":null,"scaling":"power"},"level":0,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/EchoBlast.webp","effects":[]}
{"_id":"VPpaedIPR048RLKF","name":"Energizing Aura","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>Energizing light radiates out from you in a 30-foot radius. Creatures of your choice in that radius when you cast this power have advantage on all saving throws, and other creatures have disadvantage on attack rolls against them until the power ends.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"minute"},"target":{"value":30,"units":"ft","type":"radius"},"range":{"value":null,"long":null,"units":"self"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":8,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/EnergizingAura.webp"}
{"_id":"WOnLRapxYnS99uFT","name":"Corrosive Sphere","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>You create a globule of acid and hurl it at a point within range, where it explodes in a 20-foot-radius sphere. Each creature in that area must make a Dexterity saving throw. On a failed save, a creature takes 10d4 acid damage and another 5d4 acid damage at the end of its next turn. On a successful save, a creature takes half the initial damage and no damage at the end of its next turn.</p>\n<p><em><strong>Overcharge Tech.</strong></em> When you cast this power using a tech slot of 5th level or higher, the initial damage increases by 2d4 for each slot level above 4th.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":20,"units":"ft","type":"radius"},"range":{"value":150,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[["10d4","acid"]],"versatile":"5d4"},"formula":"","save":{"ability":"dex","dc":null,"scaling":"power"},"level":4,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/CorrosiveSphere.webp"}
{"_id":"XERRPbogZO8ePUxp","name":"Synchronicity","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>A creature you touch isn't inconvenienced by mundane delays. Traffic lights are always green, there's always a waiting elevator, and a taxi is always around the corner. The target can run at full speed through dense crowds and attacks of opportunity provoked by the target's movement are made with disadvantage.</p>\n<p>The power also grants advantage to stealth checks, since cover is always available. Additionally, the target has advantage on all ability checks made to drive a vehicle.</p>\n<p>If two or more creatures under the effect of the power are attempting to avoid being inconvenienced by each other, the creatures make Charisma checks each time the effects would oppose each other. The higher check of the two's power takes effect.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"hour"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":4,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/Synchronicity.webp"}
@ -198,6 +198,3 @@
{"_id":"zBQIDrnkr3L6URgG","name":"Gleaming Outline","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>Each object in a 20-foot cube within range is outlined in blue, green, or violet light (your choice). Any creature in the area when the power is cast is also outlined in light if it fails a Dexterity saving throw. For the duration, objects and affected creatures shed dim light in a 10-foot radius.</p>\n<p>Any attack roll against an affected creature or object has advantage if the attacker can see it, and the affected creature or object can't benefit from being invisible.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"minute"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"dex","dc":null,"scaling":"power"},"level":1,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/GleamingOutline.webp"}
{"_id":"zXCnz8vBWC4fhvfw","name":"Paralyze Humanoid","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>You emit a paralyzing dart at a humanoid that you can see within range. The target must succeed on a Constitution saving throw or be poisoned for the duration. While poisoned in this way, the target is paralyzed. At the end of each of its turns, the target can make another Constitution saving throw. On a success, the power ends on the target.</p>\n<p><em><strong>Overcharge Tech.</strong></em> When you cast this power using a tech slot of 3rd level or higher, you can target one additional humanoid for each slot level above 2nd. The humanoids must be within 30 feet of each other when you target them.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"minute"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"con","dc":null,"scaling":"power"},"level":2,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":true},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/ParalyzeHumanoid.webp"}
{"_id":"zmMsZQr1lwEzLrFB","name":"Voltaic Shielding","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>A protective barrier surrounds you, manifesting as crackling lightning that covers you and your gear. You gain 5 temporary hit points for the duration. If a creature hits you with a melee attack while you have these hit points, the creature takes 5 lightning damage.</p>\n<p><em><strong>Overcharge Tech.</strong></em> When you cast this power using a tech slot of 2nd level or higher, both the temporary hit points and the lightning damage increase by 5 for each slot.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":1,"units":"hour"},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"self"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"other","attackBonus":"@prof","chatFlavor":"","critical":null,"damage":{"parts":[["+5","lightning"]],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":1,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/VoltaicShielding.webp"}
{"_id":"V0gdMfr4o2iV2AOb","name":"Echo Blast","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>You emit a reverberating pulse of sound at a target within range. The target must succeed on a Wisdom saving throw or take 1d8 sonic damage.</p>\n<p>This power can hit multiple targets in succession when you reach higher levels: two targets at 5th level, three targets at 11th level, and four targets at 17th level. Each target must be within 30 feet of the previous target, and the last target must be no further than 30 feet away from you. You can not target the same creature twice in succession.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"creature"},"range":{"value":30,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[["1d8","sonic"]],"versatile":""},"formula":"","save":{"ability":"wis","dc":null,"scaling":"power"},"level":0,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/EchoBlast.webp","effects":[]}
{"_id":"F4Q7jJ2ssAKfNHw0","name":"Disintegrate","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>A blast of corrosive energy emits from you. Choose a target within range.</p>\n<p>A creature targeted by this power must make a Dexterity saving throw. On a failed save, the target takes 10d6 + 40 acid damage. If this damage reduces the target to 0 hit points, it is disintegrated.</p>\n<p>A disintegrated creature and everything it is wearing and carrying are reduced to a pile of fine gray dust. A creature destroyed in this way can not be revitalized.</p>\n<p>This power automatically disintegrates a Large or smaller object. If the target is a Huge or larger object, this power disintegrates a 10-foot-cube portion of it.</p>\n<p><em><strong>Overcharge Tech.</strong></em> When you cast this power using a tech slot of 7th level or higher, the damage increases by 3d6 for each slot level above 6th.</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"creature"},"range":{"value":60,"long":null,"units":"ft"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"save","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[["10d6 + 40","acid"]],"versatile":""},"formula":"","save":{"ability":"dex","dc":null,"scaling":"power"},"level":6,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/Disintegrate.webp","effects":[]}
{"_id":"UACmTGjhcYjQyLj3","name":"Electroshock","permission":{"default":0},"type":"power","data":{"description":{"value":"<p>Lightning springs from you to deliver a shock to a creature you try to touch. Make a melee tech attack against the target. You have advantage on the attack roll if the target is made of metal or wearing armor made of metal. On a hit, the target takes 1d8 lightning damage and becomes shocked until the start of its next turn.</p>\n<p>This power's damage increases by 1d8 when you reach 5th level (2d8), 11th level (3d8), and 17th level (4d8).</p>\n","chat":"","unidentified":""},"source":"PHB","activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":"touch"},"uses":{"value":0,"max":0,"per":""},"consume":{"type":"","target":"","amount":null},"ability":"int","actionType":"rpak","attackBonus":null,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"power"},"level":0,"school":"tec","components":{"value":"","vocal":false,"somatic":false,"material":false,"ritual":false,"concentration":false},"materials":{"value":"","consumed":false,"cost":0,"supply":0},"preparation":{"mode":"prepared","prepared":false},"scaling":{"mode":"none","formula":""}},"flags":{"exportSource":{"world":"sw5e","system":"sw5e","coreVersion":"0.6.6","systemVersion":0.98}},"img":"systems/sw5e/packs/Icons/Tech%20Powers/Electroshock.webp","effects":[]}

View file

@ -762,12 +762,16 @@ body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .encumbrance-wrapp
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .encumbrance-wrapper .encumbrance .encumbrance-bar {
background: #0d99cc;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability label,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability h3 {
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .powercasting-ability label,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .powercasting-ability label,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .powercasting-ability h3,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .powercasting-ability h3 {
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability label span,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability h3 span {
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .powercasting-ability label span,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .powercasting-ability label span,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .powercasting-ability h3 span,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .powercasting-ability h3 span {
color: #1C1C1C;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.notes section > input {

View file

@ -86,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';
@ -708,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: 850px;
min-width: 880px;
min-height: 720px;
}
.sw5e.sheet .window-content {
@ -948,8 +951,8 @@ input[type="reset"]:disabled {
}
.sw5e.sheet.actor .swalt-sheet nav.sheet-navigation {
display: grid;
grid-template-columns: repeat(6, 1fr);
column-gap: 16px;
grid-template-columns: repeat(7, 1fr);
column-gap: 8px;
margin: 4px 0;
}
.sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item {
@ -1535,12 +1538,14 @@ input[type="reset"]:disabled {
.sw5e.sheet.actor .swalt-sheet .tab.features > .panel {
grid-template-rows: 24px auto;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .resource-items {
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .resource-items,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .resource-items {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-columns: repeat(4, 1fr);
column-gap: 12px;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .resource-items .resource h1 {
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .resource-items .resource h1,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .resource-items .resource h1 {
border: none;
margin: 0;
font-family: 'Russo One';
@ -1550,8 +1555,10 @@ input[type="reset"]:disabled {
margin-bottom: 4px;
border-radius: 0;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .resource-items .resource .attribute-value,
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .resource-items .resource .attribute-value input {
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .resource-items .resource .attribute-value,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .resource-items .resource .attribute-value,
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .resource-items .resource .attribute-value input,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .resource-items .resource .attribute-value input {
font-family: 'Russo One';
font-size: 22px;
font-weight: 400;
@ -1559,47 +1566,54 @@ input[type="reset"]:disabled {
text-align: center;
line-height: 1;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .resource-items .resource .attribute-value {
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .resource-items .resource .attribute-value,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .resource-items .resource .attribute-value {
display: grid;
grid-template-columns: auto 14px auto;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .resource-items .resource .attribute-value input {
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .resource-items .resource .attribute-value input,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .resource-items .resource .attribute-value input {
display: block;
width: 100%;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .resource-items .resource .attribute-value .value-number {
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .resource-items .resource .attribute-value .value-number,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .resource-items .resource .attribute-value .value-number {
display: block;
width: 100%;
text-align: right;
padding: 0px 3px;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .resource-items .resource .attribute-value .value-number:last-child {
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .resource-items .resource .attribute-value .value-number:last-child,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .resource-items .resource .attribute-value .value-number:last-child {
text-align: left;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .resource-items .resource .attribute-value span.value-number {
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .resource-items .resource .attribute-value span.value-number,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .resource-items .resource .attribute-value span.value-number {
padding: 1px 4px;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook > .panel {
grid-template-rows: 32px 24px 24px auto;
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook > .panel,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook > .panel {
grid-template-rows: 56px 32px 24px auto;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook h3.power-dc {
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook h3.power-dc,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook h3.power-dc {
line-height: 24px;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability {
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .force-powercasting-ability,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .force-powercasting-ability {
display: grid;
grid-template-columns: 2fr 1fr 1fr;
grid-template-columns: 1fr 1fr 1fr 1fr;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability label,
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability h3 {
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .force-powercasting-ability label,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .force-powercasting-ability label,
.sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .force-powercasting-ability h3,
.sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .force-powercasting-ability h3 {
font-family: 'Russo One';
font-size: 13px;
font-weight: 400;
letter-spacing: 0.5px;
border-bottom: none;
}
.sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability .power-dc {
grid-column-start: 3;
}
.sw5e.sheet.actor .swalt-sheet .tab.biography {
grid-template-columns: 1fr 2fr;
grid-template-rows: 100%;
@ -1678,7 +1692,8 @@ input[type="reset"]:disabled {
.sw5e.sheet.actor.npc .swalt-sheet .tab.attributes .traits-resources .counter .counter-value {
margin-left: auto;
}
.sw5e.sheet.actor.npc .swalt-sheet .tab.powerbook input.powercasting-level {
.sw5e.sheet.actor.npc .swalt-sheet .tab.force-powerbook input.powercasting-level,
.sw5e.sheet.actor.npc .swalt-sheet .tab.tech-powerbook input.powercasting-level {
width: 48px;
}
.sw5e.sheet.actor.npc .swalt-sheet .tab.biography.active {

View file

@ -762,12 +762,16 @@ body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .encumbrance-wrap
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.inventory .encumbrance-wrapper .encumbrance .encumbrance-bar {
background: #0d99cc;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability label,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability h3 {
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .powercasting-ability label,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .powercasting-ability label,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .powercasting-ability h3,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .powercasting-ability h3 {
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability label span,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.powerbook .powercasting-ability h3 span {
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .powercasting-ability label span,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .powercasting-ability label span,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.force-powerbook .powercasting-ability h3 span,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.tech-powerbook .powercasting-ability h3 span {
color: #1C1C1C;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.notes section > input {

View file

@ -883,7 +883,8 @@
}
.sw5e.sheet.actor .tab.features,
.sw5e.sheet.actor .tab.inventory,
.sw5e.sheet.actor .tab.powerbook {
.sw5e.sheet.actor .tab.force-powerbook,
.sw5e.sheet.actor .tab.tech-powerbook {
overflow-y: hidden;
}
.sw5e.sheet.actor .inventory-filters {

View file

@ -112,7 +112,8 @@
<button class="item active" data-tab="attributes">Core</button>
<button class="item" data-tab="inventory">{{ localize "SW5E.Inventory" }}</button>
<button class="item" data-tab="features">{{ localize "SW5E.Features" }}</button>
<button class="item" data-tab="powerbook">{{ localize "SW5E.Powerbook" }}</button>
<button class="item" data-tab="force-powerbook">{{ localize "SW5E.ForcePowerbook" }}</button>
<button class="item" data-tab="tech-powerbook">{{ localize "SW5E.TechPowerbook" }}</button>
<button class="item" data-tab="effects">{{ localize "SW5E.Effects" }}</button>
<button class="item" data-tab="biography">{{ localize "SW5E.Biography" }}</button>
</nav>
@ -130,12 +131,12 @@
<section class="tab features" data-group="primary" data-tab="features">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-features.html" sections=features}}
</section>
{{!-- Powerbook Tab --}}
<section class="tab powerbook" data-group="primary" data-tab="powerbook">
{{!-- Powerbook Tabs --}}
<section class="tab force-powerbook" data-group="primary" data-tab="force-powerbook">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-force-powerbook.html"}}
</section>
<section class="tab powerbook" data-group="primary" data-tab="powerbook">
<section class="tab tech-powerbook" data-group="primary" data-tab="tech-powerbook">
{{> "systems/sw5e/templates/actors/newActor/parts/swalt-tech-powerbook.html"}}
</section>
{{!-- Effects Tab --}}

View file

@ -1,3 +1,4 @@
<section class="panel">
<section class="resource-items">
<div class="resource">
<h1>Force Points</h1>
@ -8,37 +9,49 @@
<input name="data.attributes.force.points.max" type="text" value="{{data.attributes.force.points.max}}" data-dtype="Number" placeholder="0" class="value-number" />
</div>
</div>
</section>
<section class="panel">
<div class="powercasting-ability">
<label>{{localize "SW5E.PowerAbility"}}
<select name="data.attributes.powercasting" data-type="String">
{{#select data.attributes.powercasting}}
<option value="">{{localize "SW5E.None"}}</option>
{{#each data.abilities as |abl a|}}
<option value="{{a}}">{{abl.label}}</option>
{{/each}}
{{/select}}
</select>
</label>
{{#if isNPC}}
<label>{{localize "SW5E.PowercasterLevel"}}
<input class="powercasting-level" type="text" name="data.details.powerLevel" value="{{data.details.powerLevel}}"
data-dtype="Number" placeholder="0" />
</label>
{{/if}}
<h3 class="power-dc">{{localize "SW5E.PowerDC"}} <span>{{data.attributes.powerdc}}</span></h3>
<div class="resource">
<h1>Universal Power DC</h1>
<div class="attribute-value">
<div></div>
<span>{{data.attributes.powerForceUnivDC}}</span>
</div>
</div>
<ul class="filter-list" data-filter="powerbook">
<div class="resource">
<h1>Light Power DC</h1>
<div class="attribute-value">
<div></div>
<span>{{data.attributes.powerForceLightDC}}</span>
</div>
</div>
<div class="resource">
<h1>Dark Power DC</h1>
<div class="attribute-value">
<div></div>
<span>{{data.attributes.powerForceDarkDC}}</span>
</div>
</div>
</section>
{{#if isNPC}}
<div class="force-powercasting-ability">
<label>{{localize "SW5E.PowercasterLevel"}}
<input class="powercasting-level" type="text" name="data.details.powerLevel" value="{{data.details.powerLevel}}" data-dtype="Number" placeholder="0" />
</label>
</div>
{{/if}}
<ul class="filter-list" data-filter="forcePowerbook">
<li class="filter-title">{{localize "SW5E.Filter"}}</li>
<li class="filter-item" data-filter="action">{{localize "SW5E.Action"}}</li>
<li class="filter-item" data-filter="bonus">{{localize "SW5E.BonusAction"}}</li>
<li class="filter-item" data-filter="reaction">{{localize "SW5E.Reaction"}}</li>
<li class="filter-item" data-filter="concentration">{{localize "SW5E.AbbreviationConc"}}</li>
<li class="filter-item" data-filter="ritual">{{localize "SW5E.Ritual"}}</li>
<li class="filter-item" data-filter="prepared">{{localize "SW5E.Prepared"}}{{#if preparedPowers}}({{preparedPowers}}){{/if}}</li>
</ul>
<div class="group-list-header group-grid-powers">
@ -49,7 +62,7 @@
</div>
<ol class="group-list">
{{#each powerbook as |section|}}
{{#each forcePowerbook as |section|}}
<li>
<div class="group-list-title group-grid-powers">
<div class="item-name">
@ -61,27 +74,9 @@
</a>
{{/if}}
</div>
<div class="item-detail item-uses">
{{#if section.usesSlots}}
<input type="text" name="data.powers.{{section.prop}}.value" value="{{section.uses}}" placeholder="0"
data-dtype="Number" />
/
<span data-level="{{section.prop}}" data-slots="{{section.slots}}">
{{{section.slots}}}
{{#if ../editable}}
<a class="slot-max-override" title="{{localize 'SW5E.PowerProgOverride'}}">
<i class="fas fa-edit"></i>
</a>
{{/if}}
{{ else }}
{{{section.uses}}} / {{{section.slots}}}
{{/if}}
</div>
</div>
<ol class="item-list">
{{#each section.powers as |item i|}}
{{#if item.data.isForcePower }}
<li class="item group-grid-powers" data-item-id="{{item._id}}">
<div class="item-name rollable">
<div class="item-image" style="background-image: url({{item.img}})"></div>
@ -114,7 +109,6 @@
</div>
{{/if}}
</li>
{{/if}}
{{/each}}
</ol>
</li>

View file

@ -1,3 +1,4 @@
<section class="panel">
<section class="resource-items">
<div class="resource">
<h1>Tech Points</h1>
@ -8,37 +9,31 @@
<input name="data.attributes.tech.points.max" type="text" value="{{data.attributes.tech.points.max}}" data-dtype="Number" placeholder="0" class="value-number" />
</div>
</div>
<div class="resource">
<h1>Universal Power DC</h1>
<div class="attribute-value">
<div></div>
<span>{{data.attributes.powerTechDC}}</span>
</div>
</div>
</section>
<section class="panel">
<div class="powercasting-ability">
<label>{{localize "SW5E.PowerAbility"}}
<select name="data.attributes.powercasting" data-type="String">
{{#select data.attributes.powercasting}}
<option value="">{{localize "SW5E.None"}}</option>
{{#each data.abilities as |abl a|}}
<option value="{{a}}">{{abl.label}}</option>
{{/each}}
{{/select}}
</select>
</label>
{{#if isNPC}}
<div class="tech-powercasting-ability">
<label>{{localize "SW5E.PowercasterLevel"}}
<input class="powercasting-level" type="text" name="data.details.powerLevel" value="{{data.details.powerLevel}}"
data-dtype="Number" placeholder="0" />
<input class="powercasting-level" type="text" name="data.details.powerLevel" value="{{data.details.powerLevel}}" data-dtype="Number" placeholder="0" />
</label>
{{/if}}
<h3 class="power-dc">{{localize "SW5E.PowerDC"}} <span>{{data.attributes.powerdc}}</span></h3>
</div>
{{/if}}
<ul class="filter-list" data-filter="powerbook">
<ul class="filter-list" data-filter="techPowerbook">
<li class="filter-title">{{localize "SW5E.Filter"}}</li>
<li class="filter-item" data-filter="action">{{localize "SW5E.Action"}}</li>
<li class="filter-item" data-filter="bonus">{{localize "SW5E.BonusAction"}}</li>
<li class="filter-item" data-filter="reaction">{{localize "SW5E.Reaction"}}</li>
<li class="filter-item" data-filter="concentration">{{localize "SW5E.AbbreviationConc"}}</li>
<li class="filter-item" data-filter="ritual">{{localize "SW5E.Ritual"}}</li>
<li class="filter-item" data-filter="prepared">{{localize "SW5E.Prepared"}}{{#if preparedPowers}}({{preparedPowers}}){{/if}}</li>
</ul>
<div class="group-list-header group-grid-powers">
@ -49,7 +44,7 @@
</div>
<ol class="group-list">
{{#each powerbook as |section|}}
{{#each techPowerbook as |section|}}
<li>
<div class="group-list-title group-grid-powers">
<div class="item-name">
@ -61,27 +56,9 @@
</a>
{{/if}}
</div>
<div class="item-detail item-uses">
{{#if section.usesSlots}}
<input type="text" name="data.powers.{{section.prop}}.value" value="{{section.uses}}" placeholder="0"
data-dtype="Number" />
/
<span data-level="{{section.prop}}" data-slots="{{section.slots}}">
{{{section.slots}}}
{{#if ../editable}}
<a class="slot-max-override" title="{{localize 'SW5E.PowerProgOverride'}}">
<i class="fas fa-edit"></i>
</a>
{{/if}}
{{ else }}
{{{section.uses}}} / {{{section.slots}}}
{{/if}}
</div>
</div>
<ol class="item-list">
{{#each section.powers as |item i|}}
{{#if item.data.isTechPower }}
<li class="item group-grid-powers" data-item-id="{{item._id}}">
<div class="item-name rollable">
<div class="item-image" style="background-image: url({{item.img}})"></div>
@ -114,7 +91,6 @@
</div>
{{/if}}
</li>
{{/if}}
{{/each}}
</ol>
</li>