Merge branch 'Develop'

This commit is contained in:
Kakeman89 2021-02-16 09:34:59 -05:00
commit 6f25cabf41
37 changed files with 6020 additions and 5892 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

View file

@ -31,6 +31,6 @@ Please reach out on the SW5E Foundry Dev Discord with any questions.
## Compatible Modules and Optimum Settings
- DAE (Dynamic Active Effects) is needed for many automatic features.
**Please enable: "Include active effects in special traits display" in "Configure Game Settings> Module Settings> Dynamic Active Effects".**
- **Please enable: "Include active effects in special traits display" in "Configure Game Settings> Module Settings> Dynamic Active Effects".**
- Midi QoL is compatible with great features
- Token Action Hud has compatibility

View file

@ -41,7 +41,7 @@
//SW5e Colors
@colorBlack: #1C1C1C;
@colorDarkGray: #363636;
@colorGray: #4f4f4f;
@colorGray: #a9a9a9;
@colorLightGray: #828282;
@colorPaleGray: #D6D6D6;
@colorRed: #c40f0f;

View file

@ -95,8 +95,8 @@
}
#chat-controls {
.roll-type-select {
background: #4f4f4f;
color: #FFFFFF;
background: #a9a9a9;
color: #1C1C1C;
}
label {
color: @bodyFontColor;
@ -104,7 +104,8 @@
}
#chat-form textarea {
background: #4f4f4f;
background: #a9a9a9;
color: #1C1C1C;
}

View file

@ -92,7 +92,7 @@ export default class Actor5e extends Actor {
init.total = init.mod + init.prof + init.bonus;
// Prepare power-casting data
data.attributes.powerdc = data.attributes.powercasting ? data.abilities[data.attributes.powercasting].dc : 10;
data.attributes.powerdc = data.attributes.powercasting && data.attributes.powercasting !== "none" ? data.abilities[data.attributes.powercasting].dc : 10;
this._computePowercastingProgression(this.data);
// Compute owned item attributes which depend on prepared Actor data

121
module/characterImporter.js Normal file
View file

@ -0,0 +1,121 @@
export default class CharacterImporter {
// transform JSON from sw5e.com to Foundry friendly format
// and insert new actor
static async transform(rawCharacter){
const sourceCharacter = JSON.parse(rawCharacter); //source character
const details = {
species: sourceCharacter.attribs.find(e => e.name == "race").current,
background: sourceCharacter.attribs.find(e => e.name == "background").current,
alignment: sourceCharacter.attribs.find(e => e.name == "alignment").current
}
const hp = {
value: sourceCharacter.attribs.find(e => e.name == "hp").current,
min: 0,
max: sourceCharacter.attribs.find(e => e.name == "hp").current,
temp: sourceCharacter.attribs.find(e => e.name == "hp_temp").current
};
const ac = {
value: sourceCharacter.attribs.find(e => e.name == "ac").current
};
const abilities = {
str: {
value: sourceCharacter.attribs.find(e => e.name == "strength").current,
proficient: sourceCharacter.attribs.find(e => e.name == 'strength_save_prof').current ? 1 : 0
},
dex: {
value: sourceCharacter.attribs.find(e => e.name == "dexterity").current,
proficient: sourceCharacter.attribs.find(e => e.name == 'dexterity_save_prof').current ? 1 : 0
},
con: {
value: sourceCharacter.attribs.find(e => e.name == "constitution").current,
proficient: sourceCharacter.attribs.find(e => e.name == 'constitution_save_prof').current ? 1 : 0
},
int: {
value: sourceCharacter.attribs.find(e => e.name == "intelligence").current,
proficient: sourceCharacter.attribs.find(e => e.name == 'intelligence_save_prof').current ? 1 : 0
},
wis: {
value: sourceCharacter.attribs.find(e => e.name == "wisdom").current,
proficient: sourceCharacter.attribs.find(e => e.name == 'wisdom_save_prof').current ? 1 : 0
},
cha: {
value: sourceCharacter.attribs.find(e => e.name == "charisma").current,
proficient: sourceCharacter.attribs.find(e => e.name == 'charisma_save_prof').current ? 1 : 0
},
};
const targetCharacter = {
name: sourceCharacter.name,
type: "character",
data: {
abilities: abilities,
details: details,
attributes: {
ac: ac,
hp: hp
}
}
};
let actor = await Actor.create(targetCharacter);
const profession = sourceCharacter.attribs.find(e => e.name == "class").current;
let professionLevel = sourceCharacter.attribs.find(e => e.name == "class_display").current;
professionLevel = parseInt( professionLevel.replace(/[^0-9]/g,'') ); //remove a-z, leaving only integers
CharacterImporter.addClasses(profession, professionLevel, actor);
}
static async addClasses(profession, level, actor){
let classes = await game.packs.get('sw5e.classes').getContent();
let assignedClass = classes.find( c => c.name === profession );
assignedClass.data.data.levels = level;
await actor.createEmbeddedEntity("OwnedItem", assignedClass.data, { displaySheet: false });
}
static addImportButton(html){
const header = $("#actors").find("header.directory-header");
const search = $("#actors").children().find("div.header-search");
const newImportButtonDiv = $("#actors").children().find("div.header-actions").clone();
const newSearch = search.clone();
search.remove();
newImportButtonDiv.attr('id', 'character-sheet-import');
header.append(newImportButtonDiv);
newImportButtonDiv.children("button").remove();
newImportButtonDiv.append("<button class='create-entity' id='cs-import-button'><i class='fas fa-upload'></i> Import Character</button>");
newSearch.appendTo(header);
let characterImportButton = $("#cs-import-button");
characterImportButton.click(ev => {
let content = '<h1>Saved Character JSON Import</h1> '
+ '<label for="character-json">Paste character JSON here:</label> '
+ '</br>'
+ '<textarea id="character-json" name="character-json" rows="10" cols="50"></textarea>';
let importDialog = new Dialog({
title: "Import Character from SW5e.com",
content: content,
buttons: {
"Import": {
icon: '<i class="fas fa-file-import"></i>',
label: "Import Character",
callback: (e) => {
let characterData = $('#character-json').val();
console.log('Parsing Character JSON');
CharacterImporter.transform(characterData);
}
},
"Cancel": {
icon: '<i class="fas fa-times-circle"></i>',
label: "Cancel",
callback: () => {},
}
}
})
importDialog.render(true);
});
}
}

View file

@ -274,7 +274,7 @@ SW5E.consumableTypes = {
"food": "SW5E.ConsumableFood",
"medpac": "SW5E.ConsumableMedpac",
"technology": "SW5E.ConsumableTechnology",
"ammunition": "SW5E.ConsumableAmmunition",
"ammo": "SW5E.ConsumableAmmunition",
"trinket": "SW5E.ConsumableTrinket",
"force": "SW5E.ConsumableForce",
"tech": "SW5E.ConsumableTech"

View file

@ -399,7 +399,7 @@ export default class Item5e extends Item {
// 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 consumeResource = !!resource.target && resource.type !== "ammo" && !['simpleB', 'martialB'].includes(id.weaponType); // Consume a linked (non-ammo) resource, ignore if use is from a blaster
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

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View file

@ -52,7 +52,7 @@
{"name":"Traz","permission":{"default":0,"vXYkFWX6qzvOu2jc":3},"type":"tool","data":{"description":{"value":"","chat":"","unidentified":""},"source":"PHB","quantity":1,"weight":6,"price":300,"attuned":false,"equipped":false,"rarity":"","identified":true,"ability":"int","chatFlavor":"","proficient":0,"attributes":{"spelldc":10},"damage":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false,"effects":[]}},"img":"systems/sw5e/packs/Icons/Musical%20Instrument/Traz.webp","_id":"UQu4duMtxYEXKAbo"}
{"name":"Tent, two-person","permission":{"default":0,"vXYkFWX6qzvOu2jc":3},"type":"loot","data":{"description":{"value":"","chat":"","unidentified":""},"source":"","quantity":1,"weight":5,"price":20,"attuned":false,"equipped":false,"rarity":"","identified":true,"attributes":{"spelldc":10},"damage":{"parts":[]}},"flags":{},"img":"systems/sw5e/packs/Icons/Utility/Tent.webp","_id":"UxL0trd3omeqzBk4"}
{"name":"Homing Beacon","permission":{"default":0,"vXYkFWX6qzvOu2jc":3},"type":"loot","data":{"description":{"value":"<p>A homing beacon is a device used to track starships or any other entity being transported. Homing beacons transmit using non-mass HoloNet transceivers able to be tracked through hyperspace. Homing beacons are small enough that they can easily be hidden inside a ship, or tucked into some crevice on its exterior.</p>","chat":"","unidentified":""},"source":"","quantity":1,"weight":1,"price":450,"attuned":false,"equipped":false,"rarity":"","identified":true,"attributes":{"spelldc":10},"damage":{"parts":[]}},"flags":{},"img":"systems/sw5e/packs/Icons/Utility/Homing%20Beacon.webp","_id":"V2hSxkLfq461mvNz"}
{"name":"Power Cell","permission":{"default":0,"vXYkFWX6qzvOu2jc":3},"type":"consumable","data":{"description":{"value":"<p>Power cells fuel blaster weapons that deal energy or ion damage. Additionally, power cells are used to energize certain tools.</p>","chat":"","unidentified":""},"source":"PHB","quantity":1,"weight":1,"price":10,"attuned":false,"equipped":false,"rarity":"","identified":true,"activation":{"type":"","cost":null,"condition":""},"duration":{"value":null,"units":""},"target":{"value":null,"units":"","type":""},"range":{"value":null,"long":null,"units":""},"uses":{"value":0,"max":0,"per":"","autoDestroy":false},"consume":{"type":"","target":"","amount":null},"ability":null,"actionType":"","attackBonus":0,"chatFlavor":"","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"spell"},"consumableType":"ammo","attributes":{"spelldc":10}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false,"effects":[]}},"img":"systems/sw5e/packs/Icons/Ammunition/Power%20Cell.webp","_id":"VUkO1T2aYMuUcBZM"}
{"name":"Power Cell","permission":{"default":0,"vXYkFWX6qzvOu2jc":3},"type":"consumable","data":{"description":{"value":"<p>Power cells fuel blaster weapons that deal energy or ion damage. Additionally, power cells are used to energize certain tools.</p>","chat":"","unidentified":""},"source":"PHB","quantity":1,"weight":1,"price":10,"attuned":false,"equipped":false,"rarity":"","identified":true,"activation": {"type": "none","cost": null,"condition": ""},"duration": {"value": null,"units": ""},"target": {"value": null,"width": null,"units": "","type": ""},range":{"value": null,"long": null,"units": ""},"uses": {"value": 100,"max": "100","per": "charges","autoDestroy": false},"consume": {"type": "","target": "","amount": null},"ability": null,"actionType": "","attackBonus": 0,"chatFlavor": "","critical": null,"damage": {"parts": [],"versatile": ""},"formula": "","save": {"ability": "","dc": null,"scaling": "spell"},"consumableType": "ammo","attributes": {"spelldc": 10},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false,"effects":[]}},"img":"systems/sw5e/packs/Icons/Ammunition/Power%20Cell.webp","_id":"VUkO1T2aYMuUcBZM"}
{"name":"Propulsion pack","permission":{"default":0,"vXYkFWX6qzvOu2jc":3},"type":"loot","data":{"description":{"value":"<p>Propulsion packs enhance underwater movement. Activating or deactivating the propulsion pack requires a bonus action and, while active, you have a swimming speed of 30 feet. The propulsion pack lasts for 1 minute per power cell (to a maximum of 10 minutes) and can be recharged by a power source or replacing the power cells.</p>","chat":"","unidentified":""},"source":"WH","quantity":1,"weight":20,"price":400,"attuned":false,"equipped":false,"rarity":"","identified":true,"attributes":{"spelldc":10},"damage":{"parts":[]}},"flags":{},"img":"systems/sw5e/packs/Icons/Weapon%20or%20Armor%20Accessory/Propulsion%20Pack.webp","_id":"XR1obpDj1PqDLfA8"}
{"name":"Emergency Battery","permission":{"default":0,"vXYkFWX6qzvOu2jc":3},"type":"consumable","data":{"description":{"value":"<p>All non-expendable droids need recharging as they are used. The battery has ten uses. As an action, you can expend one use of the kit to stabilize a droid that has 0 hit points, without needing to make an Intelligence (Technology) check.</p>","chat":"","unidentified":""},"source":"PHB","quantity":1,"weight":5,"price":70,"attuned":false,"equipped":false,"rarity":"","identified":true,"activation":{"type":"action","cost":1,"condition":""},"duration":{"value":null,"units":""},"target":{"value":1,"units":"","type":"creature"},"range":{"value":null,"long":null,"units":""},"uses":{"value":10,"max":10,"per":"charges","autoDestroy":true},"consume":{"type":"","target":"","amount":null},"ability":"","actionType":"other","attackBonus":0,"chatFlavor":"Stabilize Droid","critical":null,"damage":{"parts":[],"versatile":""},"formula":"","save":{"ability":"","dc":null,"scaling":"spell"},"consumableType":"potion","attributes":{"spelldc":10}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false,"effects":[]}},"img":"systems/sw5e/packs/Icons/Medical/Emergency%20Battery.webp","_id":"Z0YM3aYCyCRhL6cx"}
{"name":"Smugglepack","permission":{"default":0,"vXYkFWX6qzvOu2jc":3},"type":"backpack","data":{"description":{"value":"<p>This backpack comes with a main compartment that can store up to 15 lb., not exceeding a volume of 1/2 cubic foot. Additionally, it has a hidden storage compartment that can hold up to 5 lb, not exceeding a volume of 1/4 cubic foot. Finding the hidden compartment requires a DC 15 Investigation check.</p>","chat":"","unidentified":""},"source":"WH","quantity":1,"weight":6,"price":400,"attuned":false,"equipped":false,"rarity":"","identified":true,"capacity":{"type":"weight","value":20,"weightless":false},"currency":{"cp":0,"sp":0,"ep":0,"gp":0,"pp":0},"attributes":{"spelldc":10},"damage":{"parts":[]}},"flags":{"dynamiceffects":{"equipActive":false,"alwaysActive":false,"effects":[]}},"img":"systems/sw5e/packs/Icons/Storage/Smugglerpack.webp","_id":"Zlj5z56A4oVQ5iEC"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -65,7 +65,7 @@ body.dark-theme input[type="date"]:hover,
body.dark-theme input[type="time"]:hover,
body.dark-theme select:hover,
body.dark-theme textarea:hover {
border-color: #4f4f4f;
border-color: #a9a9a9;
}
body.dark-theme input[type="text"]:focus,
body.dark-theme input[type="number"]:focus,
@ -207,7 +207,7 @@ body.dark-theme .midi-qol-item-card .card-footer span:last-child {
border-right: none;
}
body.dark-theme .dice-roll .dice-formula {
background: #4f4f4f;
background: #a9a9a9;
color: white;
box-shadow: none;
border-radius: 4px;
@ -234,14 +234,15 @@ body.dark-theme .dice-roll .dice-total.fumble {
box-shadow: 0 0 12px rgba(232, 17, 17, 0.5);
}
body.dark-theme #chat-controls .roll-type-select {
background: #4f4f4f;
color: #FFFFFF;
background: #a9a9a9;
color: #1C1C1C;
}
body.dark-theme #chat-controls label {
color: white;
}
body.dark-theme #chat-form textarea {
background: #4f4f4f;
background: #a9a9a9;
color: #1C1C1C;
}
body.dark-theme #combat #combat-round {
color: #E81111;
@ -260,7 +261,7 @@ body.dark-theme #combat #combat-tracker li.combatant {
color: white;
}
body.dark-theme #combat #combat-tracker li.combatant:nth-child(even) {
background: rgba(79, 79, 79, 0.5);
background: rgba(169, 169, 169, 0.5);
}
body.dark-theme #combat #combat-tracker li.combatant h4 {
color: white;
@ -347,7 +348,7 @@ body.dark-theme .sidebar-tab .directory-list .actor:nth-child(even),
body.dark-theme .sidebar-tab .directory-list .item:nth-child(even),
body.dark-theme .sidebar-tab .directory-list .journal:nth-child(even),
body.dark-theme .sidebar-tab .directory-list .table:nth-child(even) {
background: rgba(79, 79, 79, 0.3);
background: rgba(169, 169, 169, 0.3);
}
body.dark-theme #scenes .scene {
border-top: 1px solid #0d99cc;
@ -380,7 +381,7 @@ body.dark-theme #compendium .compendium-entity h3 {
border-bottom: 2px solid #0d99cc;
}
body.dark-theme #compendium .compendium-entity ol.compendium-list li.compendium-pack:nth-child(even) {
background: rgba(79, 79, 79, 0.3);
background: rgba(169, 169, 169, 0.3);
}
body.dark-theme #compendium .compendium-entity ol.compendium-list li.compendium-pack .pack-title .status-icons {
color: #828282;
@ -559,7 +560,7 @@ body.dark-theme .sw5e.sheet .window-content select {
}
body.dark-theme .sw5e.sheet .window-content input:hover,
body.dark-theme .sw5e.sheet .window-content select:hover {
border-color: #4f4f4f;
border-color: #a9a9a9;
}
body.dark-theme .sw5e.sheet .window-content input:focus,
body.dark-theme .sw5e.sheet .window-content select:focus {
@ -592,7 +593,7 @@ body.dark-theme .sw5e.sheet.actor .swalt-sheet header h1.character-name input[ty
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .level-experience .xpbar {
border: 1px solid #4f4f4f;
border: 1px solid #a9a9a9;
background-color: #afc6d6;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .level-experience .xpbar .bar {
@ -600,11 +601,11 @@ body.dark-theme .sw5e.sheet.actor .swalt-sheet header .level-experience .xpbar .
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .summary input,
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .summary .proficiency {
color: #4f4f4f;
color: #a9a9a9;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value,
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value input {
color: #4f4f4f;
color: #a9a9a9;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value .value-separator {
color: #828282;
@ -627,17 +628,17 @@ body.dark-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.initiat
border-color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item {
color: #4f4f4f;
color: #a9a9a9;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item.active {
color: #E81111;
border-bottom-color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item.active:hover {
background: rgba(79, 79, 79, 0.1);
background: rgba(169, 169, 169, 0.1);
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item:hover {
background: rgba(79, 79, 79, 0.1);
background: rgba(169, 169, 169, 0.1);
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .filter-list .filter-item {
border-bottom: 2px solid #828282;
@ -669,7 +670,7 @@ body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item h4 {
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-name .item-image::before,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-name .item-image::before {
color: #4f4f4f;
color: #a9a9a9;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-name.rollable:hover .item-image:hover::before,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-name.rollable:hover .item-image:hover::before {
@ -694,7 +695,7 @@ body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .score
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-score {
color: #4f4f4f;
color: #a9a9a9;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-modifiers .ability-mod,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-modifiers .ability-save {
@ -710,7 +711,7 @@ body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .skill
color: #E81111;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button {
color: #4f4f4f;
color: #a9a9a9;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button.active {
color: #E81111;
@ -720,7 +721,7 @@ body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources
background: rgba(232, 17, 17, 0.1);
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button:hover {
background: rgba(79, 79, 79, 0.1);
background: rgba(169, 169, 169, 0.1);
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits .trait-selector i.fas {
color: #E81111;
@ -734,7 +735,7 @@ body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value,
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value input {
color: #4f4f4f;
color: #a9a9a9;
}
body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value .value-separator {
color: #828282;
@ -775,5 +776,5 @@ body.dark-theme .sw5e.sheet.actor .swalt-sheet .tab.notes section > input {
border-bottom: 2px solid #0d99cc;
}
body.dark-theme .sw5e.sheet.actor.npc .swalt-sheet header .experience {
color: #4f4f4f;
color: #a9a9a9;
}

View file

@ -185,7 +185,7 @@ a:active {
position: absolute;
font-family: "Aurebesh", sans-serif;
font-size: 13px;
color: #4f4f4f;
color: #a9a9a9;
animation: none;
opacity: 0.8;
text-shadow: 0 0 8px #0d99cc;

View file

@ -65,7 +65,7 @@ body.light-theme input[type="date"]:hover,
body.light-theme input[type="time"]:hover,
body.light-theme select:hover,
body.light-theme textarea:hover {
border-color: #4f4f4f;
border-color: #a9a9a9;
}
body.light-theme input[type="text"]:focus,
body.light-theme input[type="number"]:focus,
@ -234,14 +234,15 @@ body.light-theme .dice-roll .dice-total.fumble {
box-shadow: 0 0 12px rgba(196, 15, 15, 0.5);
}
body.light-theme #chat-controls .roll-type-select {
background: #4f4f4f;
color: #FFFFFF;
background: #a9a9a9;
color: #1C1C1C;
}
body.light-theme #chat-controls label {
color: #1C1C1C;
}
body.light-theme #chat-form textarea {
background: #4f4f4f;
background: #a9a9a9;
color: #1C1C1C;
}
body.light-theme #combat #combat-round {
color: #c40f0f;
@ -251,7 +252,7 @@ body.light-theme #combat #combat-round .encounters h4 {
color: #c40f0f;
}
body.light-theme #combat #combat-round .encounters a {
color: #4f4f4f;
color: #a9a9a9;
}
body.light-theme #combat #combat-round .encounters a:hover {
color: #c40f0f;
@ -266,7 +267,7 @@ body.light-theme #combat #combat-tracker li.combatant h4 {
color: #1C1C1C;
}
body.light-theme #combat #combat-tracker li.combatant .roll {
color: #4f4f4f;
color: #a9a9a9;
}
body.light-theme #combat #combat-tracker li.combatant .roll:hover {
color: #c40f0f;
@ -278,7 +279,7 @@ body.light-theme #combat #combat-tracker li.combatant .combatant-control.active
color: #363636;
}
body.light-theme #combat #combat-tracker li.combatant .token-resource {
color: #4f4f4f;
color: #a9a9a9;
border-right: 1px solid #828282;
}
body.light-theme #combat #combat-tracker li.combatant.active {
@ -298,7 +299,7 @@ body.light-theme .sidebar-tab .directory-header .header-search i.fa-search {
color: #0d99cc;
}
body.light-theme .sidebar-tab .directory-header .header-search input {
background: #4f4f4f;
background: #a9a9a9;
}
body.light-theme .sidebar-tab .subdirectory {
background: white;
@ -320,7 +321,7 @@ body.light-theme .sidebar-tab .directory-list .folder > .folder-header h3 > i {
color: #0d99cc;
}
body.light-theme .sidebar-tab .directory-list .folder > .folder-header a {
color: #4f4f4f;
color: #a9a9a9;
}
body.light-theme .sidebar-tab .directory-list .folder > .folder-header a:hover {
color: #c40f0f;
@ -559,7 +560,7 @@ body.light-theme .sw5e.sheet .window-content select {
}
body.light-theme .sw5e.sheet .window-content input:hover,
body.light-theme .sw5e.sheet .window-content select:hover {
border-color: #4f4f4f;
border-color: #a9a9a9;
}
body.light-theme .sw5e.sheet .window-content input:focus,
body.light-theme .sw5e.sheet .window-content select:focus {
@ -592,7 +593,7 @@ body.light-theme .sw5e.sheet.actor .swalt-sheet header h1.character-name input[t
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .level-experience .xpbar {
border: 1px solid #4f4f4f;
border: 1px solid #a9a9a9;
background-color: #afc6d6;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .level-experience .xpbar .bar {
@ -600,11 +601,11 @@ body.light-theme .sw5e.sheet.actor .swalt-sheet header .level-experience .xpbar
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .summary input,
body.light-theme .sw5e.sheet.actor .swalt-sheet header .summary .proficiency {
color: #4f4f4f;
color: #a9a9a9;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value,
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value input {
color: #4f4f4f;
color: #a9a9a9;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes .attribute-value .value-separator {
color: #828282;
@ -627,17 +628,17 @@ body.light-theme .sw5e.sheet.actor .swalt-sheet header .attributes footer.initia
border-color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item {
color: #4f4f4f;
color: #a9a9a9;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item.active {
color: #c40f0f;
border-bottom-color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item.active:hover {
background: rgba(79, 79, 79, 0.1);
background: rgba(169, 169, 169, 0.1);
}
body.light-theme .sw5e.sheet.actor .swalt-sheet nav.sheet-navigation .item:hover {
background: rgba(79, 79, 79, 0.1);
background: rgba(169, 169, 169, 0.1);
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .filter-list .filter-item {
border-bottom: 2px solid #828282;
@ -669,7 +670,7 @@ body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item h4 {
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-name .item-image::before,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-name .item-image::before {
color: #4f4f4f;
color: #a9a9a9;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list li.item .item-name.rollable:hover .item-image:hover::before,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab .group-list ol li.item .item-name.rollable:hover .item-image:hover::before {
@ -694,7 +695,7 @@ body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scor
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-score {
color: #4f4f4f;
color: #a9a9a9;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-modifiers .ability-mod,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .scores li .ability-modifiers .ability-save {
@ -710,7 +711,7 @@ body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .abilities .skil
color: #c40f0f;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button {
color: #4f4f4f;
color: #a9a9a9;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button.active {
color: #c40f0f;
@ -720,7 +721,7 @@ body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resource
background: rgba(196, 15, 15, 0.1);
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources nav button:hover {
background: rgba(79, 79, 79, 0.1);
background: rgba(169, 169, 169, 0.1);
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.traits .trait-selector i.fas {
color: #c40f0f;
@ -734,7 +735,7 @@ body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resource
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value,
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value input {
color: #4f4f4f;
color: #a9a9a9;
}
body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.attributes .traits-resources section.resources .resource-items .resource .attribute-value .value-separator {
color: #828282;
@ -775,5 +776,5 @@ body.light-theme .sw5e.sheet.actor .swalt-sheet .tab.notes section > input {
border-bottom: 2px solid #0d99cc;
}
body.light-theme .sw5e.sheet.actor.npc .swalt-sheet header .experience {
color: #4f4f4f;
color: #a9a9a9;
}

View file

@ -17,6 +17,7 @@ import { measureDistances, getBarAttribute } from "./module/canvas.js";
// Import Entities
import Actor5e from "./module/actor/entity.js";
import Item5e from "./module/item/entity.js";
import CharacterImporter from "./module/characterImporter.js";
// Import Applications
import AbilityTemplate from "./module/pixi/ability-template.js";
@ -248,6 +249,7 @@ Hooks.on("renderSceneDirectory", (app, html, data)=> {
});
Hooks.on("renderActorDirectory", (app, html, data)=> {
setFolderBackground(html);
CharacterImporter.addImportButton(html);
});
Hooks.on("renderItemDirectory", (app, html, data)=> {
setFolderBackground(html);

View file

@ -98,7 +98,7 @@
<span>{{movement.primary}}</span>
</div>
<footer class="attribute-footer">
<span>{{movement.special}}</span>
<span>{{movement.special}} {{data.attributes.movement.units}}</span>
</footer>
</section>

View file

@ -29,7 +29,7 @@
</section>
<section class="counters">
<div class="counter">
<h4 class="death-save rollable">{{ localize "SW5E.DeathSave" }}</h4>
<h4 class="death-save rollable" data-action="rollDeathSave">{{ localize "SW5E.DeathSave" }}</h4>
<div class="counter-value">
<div class="death-success">
<i class="fas fa-check"></i>