forked from GitHub-Mirrors/foundry-sw5e
Merge branch 'Develop'
This commit is contained in:
commit
6f25cabf41
37 changed files with 6020 additions and 5892 deletions
BIN
.DS_Store
vendored
Normal file
BIN
.DS_Store
vendored
Normal file
Binary file not shown.
|
@ -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
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
//SW5e Colors
|
||||
@colorBlack: #1C1C1C;
|
||||
@colorDarkGray: #363636;
|
||||
@colorGray: #4f4f4f;
|
||||
@colorGray: #a9a9a9;
|
||||
@colorLightGray: #828282;
|
||||
@colorPaleGray: #D6D6D6;
|
||||
@colorRed: #c40f0f;
|
||||
|
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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
121
module/characterImporter.js
Normal 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);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
BIN
packs/Icons/Archetypes/Pugnacity Practice.webp
Normal file
BIN
packs/Icons/Archetypes/Pugnacity Practice.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.3 KiB |
BIN
packs/Icons/Species/Ho'Din.webp
Normal file
BIN
packs/Icons/Species/Ho'Din.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.3 KiB |
|
@ -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
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
2
sw5e.js
2
sw5e.js
|
@ -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);
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue