From 87bb1b6e93a30bd3a39a6832ab295d88a7f4d194 Mon Sep 17 00:00:00 2001 From: LeRatierBretonnien Date: Wed, 8 Feb 2023 21:19:53 +0100 Subject: [PATCH] Update powers --- lang/en.json | 1 + modules/warhero-actor-sheet.js | 10 +- modules/warhero-actor.js | 22 +- modules/warhero-config.js | 1 + modules/warhero-main.js | 8 +- modules/warhero-monster-sheet.js | 27 + modules/warhero-npc-sheet.js | 190 +- modules/warhero-utility.js | 51 +- styles/simple.css | 3029 ++++++++++++++-------------- system.json | 4 +- template.json | 98 +- templates/actor-sheet.html | 45 +- templates/item-weapon-sheet.html | 22 +- templates/monster-sheet.html | 547 +++++ templates/npc-sheet.html | 715 ++++--- templates/roll-dialog-generic.html | 51 +- 16 files changed, 2761 insertions(+), 2060 deletions(-) create mode 100644 modules/warhero-monster-sheet.js create mode 100644 templates/monster-sheet.html diff --git a/lang/en.json b/lang/en.json index 2fdef7b..4984c43 100644 --- a/lang/en.json +++ b/lang/en.json @@ -11,6 +11,7 @@ "WH.conf.mediumshield": "Medium", "WH.conf.towershield": "Tower", "WH.conf.polearm": "Polearm", + "WH.conf.special": "Special", "WH.conf.head": "Head", "WH.conf.cloak": "Cloak", diff --git a/modules/warhero-actor-sheet.js b/modules/warhero-actor-sheet.js index 2156a94..2591039 100644 --- a/modules/warhero-actor-sheet.js +++ b/modules/warhero-actor-sheet.js @@ -10,7 +10,7 @@ export class WarheroActorSheet extends ActorSheet { /** @override */ static get defaultOptions() { - + return mergeObject(super.defaultOptions, { classes: ["fvtt-warhero", "sheet", "actor"], template: "systems/fvtt-warhero/templates/actor-sheet.html", @@ -49,7 +49,7 @@ export class WarheroActorSheet extends ActorSheet { conditions: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getConditions()) ), armors: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getArmors())), shields: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getShields())), - powers: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getPowers())), + powers: this.actor.sortPowers(), equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsOnly()) ), slotEquipments: this.actor.buildEquipmentsSlot(), subActors: duplicate(this.actor.getSubActors()), @@ -168,7 +168,11 @@ export class WarheroActorSheet extends ActorSheet { const weaponId = li.data("item-id") this.actor.rollDamage(weaponId) }); - + html.find('.roll-damage-2hands').click((event) => { + const li = $(event.currentTarget).parents(".item") + const weaponId = li.data("item-id") + this.actor.rollDamage(weaponId, true) + }); html.find('.lock-unlock-sheet').click((event) => { this.options.editScore = !this.options.editScore; this.render(true); diff --git a/modules/warhero-actor.js b/modules/warhero-actor.js index daca3fa..304db6d 100644 --- a/modules/warhero-actor.js +++ b/modules/warhero-actor.js @@ -133,6 +133,19 @@ export class WarheroActor extends Actor { WarheroUtility.sortArrayObjectsByName(comp) return comp; } + sortPowers() { + let schools = {} + for(let power of this.items) { + if (power.type == "power") { + power = duplicate(power) + let school = schools[power.system.magicschool] || [] + school.push(power) + WarheroUtility.sortArrayObjectsByNameAndLevel(school) + schools[power.system.magicschool] = school + } + } + return schools + } /* -------------------------------------------- */ getShields() { let comp = duplicate(this.items.filter(item => item.type == 'shield') || []); @@ -186,12 +199,16 @@ export class WarheroActor extends Actor { /* -------------------------------------------- */ prepareWeapon(weapon) { let formula = weapon.system.damage - if (weapon.system.weapontype == "long") { + if (weapon.system.weapontype == "long" || weapon.system.weapontype == "short") { formula += "+" + this.system.statistics.str.value } if (weapon.system.weapontype == "twohanded") { formula += "+" + Math.floor(this.system.statistics.str.value*1.5) } + if (weapon.system.weapontype == "polearm") { + formula += "+" + Math.floor(this.system.statistics.str.value*1) + weapon.damageFormula2Hands = weapon.system.damage2hands + "+" + Math.floor(this.system.statistics.str.value*1.5) + } weapon.damageFormula = formula } /* -------------------------------------------- */ @@ -664,7 +681,7 @@ export class WarheroActor extends Actor { } } /* -------------------------------------------- */ - rollDamage(weaponId) { + rollDamage(weaponId, is2hands = false) { let weapon = this.items.get(weaponId) if (weapon) { weapon = duplicate(weapon) @@ -672,6 +689,7 @@ export class WarheroActor extends Actor { let rollData = this.getCommonRollData() rollData.mode = "damage" rollData.weapon = weapon + rollData.is2hands = is2hands rollData.img = weapon.img this.startRoll(rollData) } diff --git a/modules/warhero-config.js b/modules/warhero-config.js index 502fcd3..eba4ed6 100644 --- a/modules/warhero-config.js +++ b/modules/warhero-config.js @@ -7,6 +7,7 @@ export const WARHERO_CONFIG = { polearm: {damage: "1d6", label: "WH.conf.polearm"}, shooting: {damage: "2d6", label: "WH.conf.shooting"}, throwing: {damage: "1d8", label: "WH.conf.throwing"}, + special: {damage: "1d6", label: "WH.conf.special"}, }, armorTypes : { diff --git a/modules/warhero-main.js b/modules/warhero-main.js index f7534ef..60e7ea2 100644 --- a/modules/warhero-main.js +++ b/modules/warhero-main.js @@ -12,6 +12,7 @@ import { WarheroActor } from "./warhero-actor.js"; import { WarheroItemSheet } from "./warhero-item-sheet.js"; import { WarheroActorSheet } from "./warhero-actor-sheet.js"; import { WarheroNPCSheet } from "./warhero-npc-sheet.js"; +import { WarheroMonsterSheet } from "./warhero-monster-sheet.js"; import { WarheroUtility } from "./warhero-utility.js"; import { WarheroCombat } from "./warhero-combat.js"; import { WarheroItem } from "./warhero-item.js"; @@ -60,11 +61,12 @@ Hooks.once("init", async function () { /* -------------------------------------------- */ // Register sheet application classes Actors.unregisterSheet("core", ActorSheet); - Actors.registerSheet("fvtt-crucible", WarheroActorSheet, { types: ["character"], makeDefault: true }); - Actors.registerSheet("fvtt-crucible", WarheroNPCSheet, { types: ["npc"], makeDefault: false }); + Actors.registerSheet("fvtt-warhero", WarheroActorSheet, { types: ["character"], makeDefault: true }); + Actors.registerSheet("fvtt-warhero", WarheroNPCSheet, { types: ["npc"], makeDefault: false }); + Actors.registerSheet("fvtt-warhero", WarheroMonsterSheet, { types: ["monster"], makeDefault: false }); Items.unregisterSheet("core", ItemSheet); - Items.registerSheet("fvtt-crucible", WarheroItemSheet, { makeDefault: true }); + Items.registerSheet("fvtt-warhero", WarheroItemSheet, { makeDefault: true }); WarheroUtility.init() }); diff --git a/modules/warhero-monster-sheet.js b/modules/warhero-monster-sheet.js new file mode 100644 index 0000000..8382d6c --- /dev/null +++ b/modules/warhero-monster-sheet.js @@ -0,0 +1,27 @@ +/** + * Extend the basic ActorSheet with some very simple modifications + * @extends {ActorSheet} + */ +import { WarheroActorSheet } from "./warhero-actor-sheet.js"; + +import { WarheroUtility } from "./warhero-utility.js"; + +/* -------------------------------------------- */ +export class WarheroMonsterSheet extends WarheroActorSheet { + + /** @override */ + static get defaultOptions() { + + + return mergeObject(super.defaultOptions, { + classes: ["warhero-rpg", "sheet", "actor"], + template: "systems/fvtt-warhero/templates/npc-sheet.html", + width: 640, + height: 720, + tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }], + dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }], + editScore: true + }); + } + +} diff --git a/modules/warhero-npc-sheet.js b/modules/warhero-npc-sheet.js index e4d1c8c..0419b1b 100644 --- a/modules/warhero-npc-sheet.js +++ b/modules/warhero-npc-sheet.js @@ -2,18 +2,18 @@ * Extend the basic ActorSheet with some very simple modifications * @extends {ActorSheet} */ - +import { WarheroActorSheet } from "./warhero-actor-sheet.js"; import { WarheroUtility } from "./warhero-utility.js"; /* -------------------------------------------- */ -export class WarheroNPCSheet extends ActorSheet { +export class WarheroNPCSheet extends WarheroActorSheet { /** @override */ static get defaultOptions() { return mergeObject(super.defaultOptions, { classes: ["warhero-rpg", "sheet", "actor"], - template: "systems/fvtt-warhero/templates/npc-sheet.html", + template: "systems/fvtt-warhero/templates/monster-sheet.html", width: 640, height: 720, tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }], @@ -22,188 +22,4 @@ export class WarheroNPCSheet extends ActorSheet { }); } - /* -------------------------------------------- */ - async getData() { - const objectData = this.object.system - let actorData = duplicate(objectData) - - let formData = { - title: this.title, - id: this.actor.id, - type: this.actor.type, - img: this.actor.img, - name: this.actor.name, - editable: this.isEditable, - cssClass: this.isEditable ? "editable" : "locked", - data: actorData, - limited: this.object.limited, - skills: this.actor.getSkills( ), - weapons: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getWeapons()) ), - armors: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getArmors())), - shields: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getShields())), - spells: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getLore())), - equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsOnly()) ), - equippedWeapons: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquippedWeapons()) ), - equippedArmor: this.actor.getEquippedArmor(), - equippedShield: this.actor.getEquippedShield(), - feats: duplicate(this.actor.getFeats()), - subActors: duplicate(this.actor.getSubActors()), - race: duplicate(this.actor.getRace()), - moneys: duplicate(this.actor.getMoneys()), - encCapacity: this.actor.getEncumbranceCapacity(), - saveRolls: this.actor.getSaveRoll(), - conditions: this.actor.getConditions(), - containersTree: this.actor.containersTree, - encCurrent: this.actor.encCurrent, - options: this.options, - owner: this.document.isOwner, - editScore: this.options.editScore, - isGM: game.user.isGM - } - this.formData = formData; - - console.log("PC : ", formData, this.object); - return formData; - } - - /* -------------------------------------------- */ - /** @override */ - activateListeners(html) { - super.activateListeners(html); - - // Everything below here is only needed if the sheet is editable - if (!this.options.editable) return; - - html.bind("keydown", function(e) { // Ignore Enter in actores sheet - if (e.keyCode === 13) return false; - }); - - // Update Inventory Item - html.find('.item-edit').click(ev => { - const li = $(ev.currentTarget).parents(".item") - let itemId = li.data("item-id") - const item = this.actor.items.get( itemId ); - item.sheet.render(true); - }); - // Delete Inventory Item - html.find('.item-delete').click(ev => { - const li = $(ev.currentTarget).parents(".item") - WarheroUtility.confirmDelete(this, li) - }) - html.find('.item-add').click(ev => { - let dataType = $(ev.currentTarget).data("type") - this.actor.createEmbeddedDocuments('Item', [{ name: "NewItem", type: dataType }], { renderSheet: true }) - }) - - html.find('.equip-activate').click(ev => { - const li = $(ev.currentTarget).parents(".item") - let itemId = li.data("item-id") - this.actor.equipActivate( itemId) - }); - html.find('.equip-deactivate').click(ev => { - const li = $(ev.currentTarget).parents(".item") - let itemId = li.data("item-id") - this.actor.equipDeactivate( itemId) - }); - - html.find('.subactor-edit').click(ev => { - const li = $(ev.currentTarget).parents(".item"); - let actorId = li.data("actor-id"); - let actor = game.actors.get( actorId ); - actor.sheet.render(true); - }); - - html.find('.subactor-delete').click(ev => { - const li = $(ev.currentTarget).parents(".item"); - let actorId = li.data("actor-id"); - this.actor.delSubActor(actorId); - }); - html.find('.quantity-minus').click(event => { - const li = $(event.currentTarget).parents(".item"); - this.actor.incDecQuantity( li.data("item-id"), -1 ); - } ); - html.find('.quantity-plus').click(event => { - const li = $(event.currentTarget).parents(".item"); - this.actor.incDecQuantity( li.data("item-id"), +1 ); - } ); - - html.find('.ammo-minus').click(event => { - const li = $(event.currentTarget).parents(".item") - this.actor.incDecAmmo( li.data("item-id"), -1 ); - } ); - html.find('.ammo-plus').click(event => { - const li = $(event.currentTarget).parents(".item") - this.actor.incDecAmmo( li.data("item-id"), +1 ) - } ); - - html.find('.roll-ability').click((event) => { - const abilityKey = $(event.currentTarget).data("ability-key"); - this.actor.rollAbility(abilityKey); - }); - html.find('.roll-skill').click((event) => { - const li = $(event.currentTarget).parents(".item") - const skillId = li.data("item-id") - this.actor.rollSkill(skillId) - }); - - html.find('.roll-weapon').click((event) => { - const li = $(event.currentTarget).parents(".item"); - const skillId = li.data("item-id") - this.actor.rollWeapon(skillId) - }); - html.find('.roll-armor-die').click((event) => { - this.actor.rollArmorDie() - }); - html.find('.roll-shield-die').click((event) => { - this.actor.rollShieldDie() - }); - html.find('.roll-target-die').click((event) => { - this.actor.rollDefenseRanged() - }); - - html.find('.roll-save').click((event) => { - const saveKey = $(event.currentTarget).data("save-key") - this.actor.rollSave(saveKey) - }); - - - html.find('.lock-unlock-sheet').click((event) => { - this.options.editScore = !this.options.editScore; - this.render(true); - }); - html.find('.item-link a').click((event) => { - const itemId = $(event.currentTarget).data("item-id"); - const item = this.actor.getOwnedItem(itemId); - item.sheet.render(true); - }); - html.find('.item-equip').click(ev => { - const li = $(ev.currentTarget).parents(".item"); - this.actor.equipItem( li.data("item-id") ); - this.render(true); - }); - - html.find('.update-field').change(ev => { - const fieldName = $(ev.currentTarget).data("field-name"); - let value = Number(ev.currentTarget.value); - this.actor.update( { [`${fieldName}`]: value } ); - }); - - } - - /* -------------------------------------------- */ - /** @override */ - setPosition(options = {}) { - const position = super.setPosition(options); - const sheetBody = this.element.find(".sheet-body"); - const bodyHeight = position.height - 192; - sheetBody.css("height", bodyHeight); - return position; - } - - /* -------------------------------------------- */ - /** @override */ - _updateObject(event, formData) { - // Update the Actor - return this.object.update(formData); - } } diff --git a/modules/warhero-utility.js b/modules/warhero-utility.js index b1df65f..5810a26 100644 --- a/modules/warhero-utility.js +++ b/modules/warhero-utility.js @@ -66,7 +66,7 @@ export class WarheroUtility { console.log("Element Found !!!!") }) */ } - + /*-------------------------------------------- */ static upperFirst(text) { if (typeof text !== 'string') return text @@ -544,10 +544,10 @@ export class WarheroUtility { let actor = game.actors.get(rollData.actorId) - if ( rollData.mode == "power") { + if (rollData.mode == "power") { let manaCost = Array.from(rollData.powerLevel)[0] - if( actor.spentMana(manaCost)) { - let powerKey = "level"+rollData.powerLevel + if (actor.spentMana(manaCost)) { + let powerKey = "level" + rollData.powerLevel rollData.powerText = rollData.power.system[powerKey] let msg = await this.createChatWithRollMode(rollData.alias, { content: await renderTemplate(`systems/fvtt-warhero/templates/chat-generic-result.html`, rollData) @@ -556,13 +556,19 @@ export class WarheroUtility { } return } - if ( rollData.mode == "damage") { - let myRoll = new Roll(rollData.weapon.damageFormula + "+" + rollData.bonusMalus).roll({ async: false }) + if (rollData.mode == "damage") { + let formula + if (rollData.weapon.system.weapontype == "special") { + formula = rollData.weapon.system.damageformula + } else { + formula = (rollData.is2hands) ? rollData.weapon.damageFormula2Hands : rollData.weapon.damageFormula + } + let myRoll = new Roll(formula + "+" + rollData.bonusMalus, actor.system).roll({ async: false }) await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode")) rollData.roll = myRoll rollData.diceFormula = myRoll.formula rollData.diceResult = myRoll.terms[0].results[0].result - + let msg = await this.createChatWithRollMode(rollData.alias, { content: await renderTemplate(`systems/fvtt-warhero/templates/chat-generic-result.html`, rollData) }) @@ -570,12 +576,17 @@ export class WarheroUtility { return } - // ability/save/size => 0 - let diceFormula = "1d20" - if ( rollData.stat) { - diceFormula += "+" + rollData.stat.value + let diceFormula + if (rollData.weapon.system.weapontype == "special") { + diceFormula = rollData.weapon.system.rollformula + } else { + // ability/save/size => 0 + diceFormula = "1d20" + if (rollData.stat) { + diceFormula += "+" + rollData.stat.value + } } - if ( rollData.usemWeaponMalus) { + if (rollData.usemWeaponMalus) { diceFormula += "+" + rollData.mWeaponMalus } diceFormula += "+" + rollData.bonusMalus @@ -584,7 +595,7 @@ export class WarheroUtility { console.log("Roll formula", diceFormula) let myRoll = rollData.roll if (!myRoll) { // New rolls only of no rerolls - myRoll = new Roll(diceFormula).roll({ async: false }) + myRoll = new Roll(diceFormula, actor.system).roll({ async: false }) await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode")) } rollData.roll = myRoll @@ -619,7 +630,19 @@ export class WarheroUtility { return 0; }) } - + static sortArrayObjectsByNameAndLevel(myArray) { + myArray.sort((a, b) => { + let fa = a.system.level + a.name.toLowerCase(); + let fb = b.system.level + b.name.toLowerCase(); + if (fa < fb) { + return -1; + } + if (fa > fb) { + return 1; + } + return 0; + }) + } /* -------------------------------------------- */ static getUsers(filter) { return game.users.filter(filter).map(user => user.id); diff --git a/styles/simple.css b/styles/simple.css index d357ec6..aec56f2 100644 --- a/styles/simple.css +++ b/styles/simple.css @@ -1,1272 +1,1315 @@ - /* ==================== (A) Fonts ==================== */ +/* ==================== (A) Fonts ==================== */ - :root { - /* =================== 1. ACTOR SHEET FONT STYLES =========== */ - --window-header-title-font-size: 1.3rem; - --window-header-title-font-weight: normal; - --window-header-title-color: #f5f5f5; - - --major-button-font-size: 1.05rem; - --major-button-font-weight: normal; - --major-button-color: #dadada; - - --tab-header-font-size: 1.0rem; - --tab-header-font-weight: 700; - --tab-header-color: #403f3e; - --tab-header-color-active: #4a0404; - - --actor-input-font-size: 0.8rem; - --actor-input-font-weight: 500; - --actor-input-color: black; - - --actor-label-font-size: 0.8rem; - --actor-label-font-weight: 700; - --actor-label-color: #464331c4; - - /* =================== 2. DEBUGGING HIGHLIGHTERS ============ */ - --debug-background-color-red: #ff000054; - --debug-background-color-blue: #1d00ff54; - --debug-background-color-green: #54ff0054; - - --debug-box-shadow-red: inset 0 0 2px red; - --debug-box-shadow-blue: inset 0 0 2px blue; - --debug-box-shadow-green: inset 0 0 2px green; - } - - /*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/ - /* Global styles & Font */ - .window-app { - text-align: justify; - font-size: 16px; - letter-spacing: 1px; - color: rgba(228, 240, 240, 0.75); - background: rgba(66, 66, 64, 0.95); - - } - - /* Fonts */ - .sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item { - font-size: 1.0rem; - color: rgba(228, 240, 240, 0.75); - background: rgba(66, 66, 64, 0.95); - } /* For title, sidebar character and scene */ - .sheet nav.sheet-tabs { - font-size: 0.8rem; - color: rgba(228, 240, 240, 0.75); - background: rgba(66, 66, 64, 0.95); - } /* For nav and title */ - .window-app input, .fvtt-warhero .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle { - font-size: 0.8rem; - color: rgba(228, 240, 240, 0.75); - background: rgba(66, 66, 64, 0.95); - } - - .window-header{ - background: rgba(0,0,0,0.75); - } - .dialog .window-content { - color: #ccdbe6; - } - .dialog-content, .dialog-buttons, .form-fields { - color: #ccdbe6; - } - .window-app.sheet .window-content { - margin: 0; - padding: 0; - color: #ccdbe6; - } - .strong-text{ - font-weight: bold; - } - - .tabs .item.active, .blessures-list li ul li:first-child:hover, a:hover { - text-shadow: 1px 0px 0px #ff6600; - } - select { - background: rgba(228, 240, 240, 0.75); - color: rgba(66, 66, 64, 0.95); - } - select option { - background: rgba(228, 240, 240, 0.75); - color: rgba(66, 66, 64, 0.95); - } - - .rollable:hover, .rollable:focus { - color: #000; - text-shadow: 0 0 10px red; - cursor: pointer; - } - input:disabled { - color:#1c2058; - } - select:disabled { - color:#1c2058; - } - table {border: 1px solid #7a7971;} - - .grid, .grid-2col { - display: grid; - grid-column: span 2 / span 2; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 10px; - margin: 10px 0; - padding: 0; - } - - .grid-3col { - grid-column: span 3 / span 3; - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - - .grid-4col { - grid-column: span 4 / span 4; - grid-template-columns: repeat(4, minmax(0, 1fr)); - } - - .grid-5col { - grid-column: span 5 / span 5; - grid-template-columns: repeat(5, minmax(0, 1fr)); - } - - .grid-6col { - grid-column: span 5 / span 5; - grid-template-columns: repeat(5, minmax(0, 1fr)); - } - - .grid-7col { - grid-column: span 7 / span 7; - grid-template-columns: repeat(7, minmax(0, 1fr)); - } - - .grid-8col { - grid-column: span 8 / span 8; - grid-template-columns: repeat(8, minmax(0, 1fr)); - } - - .grid-9col { - grid-column: span 9 / span 9; - grid-template-columns: repeat(9, minmax(0, 1fr)); - } - - .grid-10col { - grid-column: span 10 / span 10; - grid-template-columns: repeat(10, minmax(0, 1fr)); - } - - .grid-11col { - grid-column: span 11 / span 11; - grid-template-columns: repeat(11, minmax(0, 1fr)); - } - - .grid-12col { - grid-column: span 12 / span 12; - grid-template-columns: repeat(12, minmax(0, 1fr)); - } - - .flex-group-center, - .flex-group-left, - .flex-group-right { - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - text-align: center; - padding: 5px; - } - - .flex-group-left { - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - text-align: left; - } - - .flex-group-right { - -webkit-box-pack: end; - -ms-flex-pack: end; - justify-content: flex-end; - text-align: right; - } - - .flex-center { - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - text-align: center; - } - - .table-create-actor { - font-size: 0.8rem; - } - - .flex-between { - -webkit-box-pack: justify; - -ms-flex-pack: justify; - justify-content: space-between; - } - - .flex-shrink { - flex: 'flex-shrink' ; - } - - /* Styles limited to foundryvtt-vadentis sheets */ - - .fvtt-warhero .sheet-header { - -webkit-box-flex: 0; - -ms-flex: 0 0 210px; - flex: 0 0 210px; - overflow: hidden; - display: -webkit-box; - display: -ms-flexbox; - display: flex; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -webkit-box-pack: start; - -ms-flex-pack: start; - justify-content: flex-start; - margin-bottom: 10px; - } - - .fvtt-warhero .sheet-header .profile-img { - -webkit-box-flex: 0; - -ms-flex: 0 0 96px; - flex: 0 0 96px; - width: 96px; - height: auto; - max-height:96px; - margin-top: 0px; - margin-right: 10px; - object-fit: cover; - border-width: 0px; - object-position: 50% 0; - } - - .button-img { - vertical-align: baseline; - width: 8%; - height: 8%; - max-height: 48px; - border-width: 0; - border: 1px solid rgba(0, 0, 0, 0); - } - .button-img:hover { - color: rgba(255, 255, 128, 0.7); - border: 1px solid rgba(255, 128, 0, 0.8); - cursor: pointer; - } - - .button-effect-img { - vertical-align: baseline; - width: 16px; - max-height: 16px; - height: 16; - border-width: 0; - } - - .small-button-container { - height: 16px; - width: 16px; - border: 0; - vertical-align: bottom; - } - - .fvtt-warhero .sheet-header .header-fields { - -webkit-box-flex: 1; - -ms-flex: 1; - flex: 1; - } - - .fvtt-warhero .sheet-header h1.charname { - height: 50px; - padding: 0px; - margin: 5px 0; - border-bottom: 0; - } - - .fvtt-warhero .sheet-header h1.charname input { - width: 100%; - height: 100%; - margin: 0; - } - - .fvtt-warhero .sheet-tabs { - -webkit-box-flex: 0; - -ms-flex: 0; - flex: 0; - } - - .fvtt-warhero .sheet-body, - .fvtt-warhero .sheet-body .tab, - .fvtt-warhero .sheet-body .tab .editor { - height: 100%; - font-size: 0.8rem; - } - - .editor { - border: 2; - height: 300px; - padding: 0 3px; - } - - .medium-editor { - border: 2; - height: 240px; - padding: 0 3px; - } - - .small-editor { - border: 2; - height: 120px; - padding: 0 3px; - } - - .fvtt-warhero .tox .tox-editor-container { - background: #fff; - } - - .fvtt-warhero .tox .tox-edit-area { - padding: 0 8px; - } - - .fvtt-warhero .resource-label { - font-weight: bold; - text-transform: uppercase; - } - - .fvtt-warhero .tabs { - height: 40px; - border-top: 1px solid #AAA; - border-bottom: 1px solid #AAA; - color: #000000; - } - - .fvtt-warhero .tabs .item { - line-height: 40px; - font-weight: bold; - } - - .fvtt-warhero .tabs .item.active { - text-decoration: underline; - text-shadow: none; - } - - .fvtt-warhero .items-list { - list-style: none; - margin: 1px 0; - padding: 0; - overflow-y: auto; - } - - .fvtt-warhero .items-list .item-header { - font-weight: bold; - } - - .fvtt-warhero .items-list .item { - height: 30px; - line-height: 24px; - padding: 1px 0; - border-bottom: 1px solid #BBB; - } - - .fvtt-warhero .items-list .item .item-image { - -webkit-box-flex: 0; - -ms-flex: 0 0 24px; - flex: 0 0 24px; - margin-right: 5px; - } - - .fvtt-warhero .items-list .item img { - display: block; - } - - .fvtt-warhero .items-list .item-name { - margin: 0; - } - - .fvtt-warhero .items-list .item-controls { - -webkit-box-flex: 0; - -ms-flex: 0 0 86px; - flex: 0 0 86px; - text-align: right; - } - - - /* ======================================== */ - /* Sheet */ - .window-app.sheet .window-content .sheet-header{ - background: url("../images/ui/pc_sheet_bg.webp") - } - /* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/ - /*color: rgba(168, 139, 139, 0.5);*/ - - .window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] { - color: rgba(228, 240, 240, 0.75); - background: rgba(66, 66, 64, 0.95); - border: 1 none; - margin-bottom: 0.25rem; - margin-left: 2px; - } - - .window-app.sheet .window-content .sheet-body input[type="text"], .window-app.sheet .window-content .sheet-body input[type="number"], .window-app.sheet .window-content .sheet-body input[type="password"], .window-app.sheet .window-content .sheet-body input[type="date"], .window-app.sheet .window-content .sheet-body input[type="time"] { - color: rgba(228, 240, 240, 0.75); - background: rgba(66, 66, 64, 0.95); - border: 1 none; - margin-bottom: 0.25rem; - margin-left: 2px; - } - - .window-app.sheet .window-content .sheet-body select, .window-app.sheet .window-content .sheet-header select { - color: rgba(228, 240, 240, 0.75); - background: rgba(66, 66, 64, 0.95); - border: 1 none; - margin-bottom: 0.25rem; - margin-left: 2px; - } - - .window-app .window-content, .window-app.sheet .window-content .sheet-body{ - font-size: 0.8rem; - background: url("../images/ui/pc_sheet_bg.webp") repeat left top; - color: rgba(228, 240, 240, 0.75); - background: rgba(66, 66, 64, 0.95); - } - - /* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/ - - section.sheet-body{padding: 0.25rem 0.5rem;} - - .sheet header.sheet-header .profile-img { - object-fit: cover; - object-position: 50% 0; - margin: 0.5rem 0 0.5rem 0.5rem; - padding: 0; - } - - .sheet nav.sheet-tabs { - font-size: 0.70rem; - font-weight: bold; - height: 3rem; - flex: 0 0 3rem; - margin: 0; - padding: 0 0 0 0.25rem; - text-align: center; - text-transform: uppercase; - line-height: 1.5rem; - border-top: 0 none; - border-bottom: 0 none; - background-color:black; - color:beige; - } - - /* background: rgb(245,245,240) url("../images/ui/fond4.webp") repeat left top;*/ - - nav.sheet-tabs .item { - position: relative; - padding: 0 0.25rem; - } - - nav.sheet-tabs .item:after { - content: ""; - position: absolute; - top: 0; - right: 0; - height: 2rem; - width: 1px; - border-right: 1px dashed rgba(52, 52, 52, 0.25); - } - - .sheet .tab[data-tab] { - padding: 0; - } - - section.sheet-body:after { - content: ""; - display: block; - clear: both; - } - - .sheet header.sheet-header .flex-compteurs {text-align: right;} - .sheet header.sheet-header .resource-content {width: 2rem;} - - .select-diff { - display: inline-block; - text-align: left; - width: 50px; - } - - .window-app.sheet .window-content .tooltip:hover .tooltiptext { - top: 2rem; - left: 2rem; - margin: 0; - padding: 0.25rem; - } - - .window-app.sheet .window-content .carac-value, .window-app.sheet .window-content .competence-xp { - margin: 0.05rem; - flex-basis: 3rem; - text-align: center; - } - - /* ======================================== */ - /* Global UI elements */ - - /* ======================================== */ - - h1, h2, h3, h4 { - font-weight: bold; - } - - ul, ol { - margin: 0; - padding: 0; - } - ul, li { - list-style-type: none; - } - - .sheet li { - margin: 0.010rem; - padding: 0.25rem; - } - .header-fields li { - margin: 0; - padding: 0; - } - - .alterne-list > .list-item:hover { - background: rgba(100, 100, 50, 0.25); - } - .alterne-list > .list-item:nth-child(even) { - background: rgba(80, 60, 0, 0.10); - } - .alterne-list > .list-item:nth-child(odd) { - background: rgb(160, 130, 100, 0.05); - } - - .specialisation-label { - font-size: 0.8rem; - } - - .carac-label, - .attr-label { - font-weight: bold; - } - - .list-item { - margin: 0.125rem; - /*box-shadow: inset 0px 0px 1px #00000096; +:root { + /* =================== 1. ACTOR SHEET FONT STYLES =========== */ + --window-header-title-font-size: 1.3rem; + --window-header-title-font-weight: normal; + --window-header-title-color: #f5f5f5; + + --major-button-font-size: 1.05rem; + --major-button-font-weight: normal; + --major-button-color: #dadada; + + --tab-header-font-size: 1rem; + --tab-header-font-weight: 700; + --tab-header-color: #403f3e; + --tab-header-color-active: #4a0404; + + --actor-input-font-size: 0.8rem; + --actor-input-font-weight: 500; + --actor-input-color: black; + + --actor-label-font-size: 0.8rem; + --actor-label-font-weight: 700; + --actor-label-color: #464331c4; + + /* =================== 2. DEBUGGING HIGHLIGHTERS ============ */ + --debug-background-color-red: #ff000054; + --debug-background-color-blue: #1d00ff54; + --debug-background-color-green: #54ff0054; + + --debug-box-shadow-red: inset 0 0 2px red; + --debug-box-shadow-blue: inset 0 0 2px blue; + --debug-box-shadow-green: inset 0 0 2px green; +} + +/*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/ +/* Global styles & Font */ +.window-app { + text-align: justify; + font-size: 16px; + letter-spacing: 1px; + color: rgba(228, 240, 240, 0.75); + background: rgba(66, 66, 64, 0.95); +} + +/* Fonts */ +.sheet header.sheet-header h1 input, +.window-app .window-header, +#actors .directory-list, +#navigation #scene-list .scene.nav-item { + font-size: 1rem; + color: rgba(228, 240, 240, 0.75); + background: rgba(66, 66, 64, 0.95); +} /* For title, sidebar character and scene */ +.sheet nav.sheet-tabs { + font-size: 0.8rem; + color: rgba(228, 240, 240, 0.75); + background: rgba(66, 66, 64, 0.95); +} /* For nav and title */ +.window-app input, +.fvtt-warhero .item-form, +.sheet header.sheet-header .flex-group-center.flex-compteurs, +.sheet header.sheet-header .flex-group-center.flex-fatigue, +select, +button, +.item-checkbox, +#sidebar, +#players, +#navigation #nav-toggle { + font-size: 0.8rem; + color: rgba(228, 240, 240, 0.75); + background: rgba(66, 66, 64, 0.95); +} + +.window-header { + background: rgba(0, 0, 0, 0.75); +} +.dialog .window-content { + color: #ccdbe6; +} +.dialog-content, +.dialog-buttons, +.form-fields { + color: #ccdbe6; +} +.window-app.sheet .window-content { + margin: 0; + padding: 0; + color: #ccdbe6; +} +.strong-text { + font-weight: bold; +} + +.tabs .item.active, +.blessures-list li ul li:first-child:hover, +a:hover { + text-shadow: 1px 0px 0px #ff6600; +} +select { + background: rgba(228, 240, 240, 0.75); + color: rgba(66, 66, 64, 0.95); +} +select option { + background: rgba(228, 240, 240, 0.75); + color: rgba(66, 66, 64, 0.95); +} + +.rollable:hover, +.rollable:focus { + color: #000; + text-shadow: 0 0 10px red; + cursor: pointer; +} +input:disabled { + color: #1c2058; +} +select:disabled { + color: #1c2058; +} +table { + border: 1px solid #7a7971; +} + +.grid, +.grid-2col { + display: grid; + grid-column: span 2 / span 2; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 10px; + margin: 10px 0; + padding: 0; +} + +.grid-3col { + grid-column: span 3 / span 3; + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.grid-4col { + grid-column: span 4 / span 4; + grid-template-columns: repeat(4, minmax(0, 1fr)); +} + +.grid-5col { + grid-column: span 5 / span 5; + grid-template-columns: repeat(5, minmax(0, 1fr)); +} + +.grid-6col { + grid-column: span 5 / span 5; + grid-template-columns: repeat(5, minmax(0, 1fr)); +} + +.grid-7col { + grid-column: span 7 / span 7; + grid-template-columns: repeat(7, minmax(0, 1fr)); +} + +.grid-8col { + grid-column: span 8 / span 8; + grid-template-columns: repeat(8, minmax(0, 1fr)); +} + +.grid-9col { + grid-column: span 9 / span 9; + grid-template-columns: repeat(9, minmax(0, 1fr)); +} + +.grid-10col { + grid-column: span 10 / span 10; + grid-template-columns: repeat(10, minmax(0, 1fr)); +} + +.grid-11col { + grid-column: span 11 / span 11; + grid-template-columns: repeat(11, minmax(0, 1fr)); +} + +.grid-12col { + grid-column: span 12 / span 12; + grid-template-columns: repeat(12, minmax(0, 1fr)); +} + +.flex-group-center, +.flex-group-left, +.flex-group-right { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + text-align: center; + padding: 5px; +} + +.flex-group-left { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + text-align: left; +} + +.flex-group-right { + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; + text-align: right; +} + +.flex-center { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; +} + +.table-create-actor { + font-size: 0.8rem; +} + +.flex-between { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.flex-shrink { + flex: 'flex-shrink'; +} + +/* Styles limited to foundryvtt-vadentis sheets */ + +.fvtt-warhero .sheet-header { + -webkit-box-flex: 0; + -ms-flex: 0 0 210px; + flex: 0 0 210px; + overflow: hidden; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + margin-bottom: 10px; +} + +.fvtt-warhero .sheet-header .profile-img { + -webkit-box-flex: 0; + -ms-flex: 0 0 96px; + flex: 0 0 96px; + width: 96px; + height: auto; + max-height: 96px; + margin-top: 0px; + margin-right: 10px; + object-fit: cover; + border-width: 0px; + object-position: 50% 0; +} + +.button-img { + vertical-align: baseline; + width: 8%; + height: 8%; + max-height: 48px; + border-width: 0; + border: 1px solid rgba(0, 0, 0, 0); +} +.button-img:hover { + color: rgba(255, 255, 128, 0.7); + border: 1px solid rgba(255, 128, 0, 0.8); + cursor: pointer; +} + +.button-effect-img { + vertical-align: baseline; + width: 16px; + max-height: 16px; + height: 16; + border-width: 0; +} + +.small-button-container { + height: 16px; + width: 16px; + border: 0; + vertical-align: bottom; +} + +.fvtt-warhero .sheet-header .header-fields { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; +} + +.fvtt-warhero .sheet-header h1.charname { + height: 50px; + padding: 0px; + margin: 5px 0; + border-bottom: 0; +} + +.fvtt-warhero .sheet-header h1.charname input { + width: 100%; + height: 100%; + margin: 0; +} + +.fvtt-warhero .sheet-tabs { + -webkit-box-flex: 0; + -ms-flex: 0; + flex: 0; +} + +.fvtt-warhero .sheet-body, +.fvtt-warhero .sheet-body .tab, +.fvtt-warhero .sheet-body .tab .editor { + height: 100%; + font-size: 0.8rem; +} + +.editor { + border: 2; + height: 300px; + padding: 0 3px; +} + +.medium-editor { + border: 2; + height: 240px; + padding: 0 3px; +} + +.small-editor { + border: 2; + height: 120px; + padding: 0 3px; +} + +.fvtt-warhero .tox .tox-editor-container { + background: #fff; +} + +.fvtt-warhero .tox .tox-edit-area { + padding: 0 8px; +} + +.fvtt-warhero .resource-label { + font-weight: bold; + text-transform: uppercase; +} + +.fvtt-warhero .tabs { + height: 40px; + border-top: 1px solid #aaa; + border-bottom: 1px solid #aaa; + color: #000000; +} + +.fvtt-warhero .tabs .item { + line-height: 40px; + font-weight: bold; +} + +.fvtt-warhero .tabs .item.active { + text-decoration: underline; + text-shadow: none; +} + +.fvtt-warhero .items-list { + list-style: none; + margin: 1px 0; + padding: 0; + overflow-y: auto; +} + +.fvtt-warhero .items-list .item-header { + font-weight: bold; +} + +.fvtt-warhero .items-list .item { + height: 30px; + line-height: 24px; + padding: 1px 0; + border-bottom: 1px solid #bbb; +} + +.fvtt-warhero .items-list .item .item-image { + -webkit-box-flex: 0; + -ms-flex: 0 0 24px; + flex: 0 0 24px; + margin-right: 5px; +} + +.fvtt-warhero .items-list .item img { + display: block; +} + +.fvtt-warhero .items-list .item-name { + margin: 0; +} + +.fvtt-warhero .items-list .item-controls { + -webkit-box-flex: 0; + -ms-flex: 0 0 86px; + flex: 0 0 86px; + text-align: right; +} + +/* ======================================== */ +/* Sheet */ +.window-app.sheet .window-content .sheet-header { + background: url('../images/ui/pc_sheet_bg.webp'); +} +/* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/ +/*color: rgba(168, 139, 139, 0.5);*/ + +.window-app.sheet .window-content .sheet-header input[type='text'], +.window-app.sheet .window-content .sheet-header input[type='number'], +.window-app.sheet .window-content .sheet-header input[type='password'], +.window-app.sheet .window-content .sheet-header input[type='date'], +.window-app.sheet .window-content .sheet-header input[type='time'] { + color: rgba(228, 240, 240, 0.75); + background: rgba(66, 66, 64, 0.95); + border: 1 none; + margin-bottom: 0.25rem; + margin-left: 2px; +} + +.window-app.sheet .window-content .sheet-body input[type='text'], +.window-app.sheet .window-content .sheet-body input[type='number'], +.window-app.sheet .window-content .sheet-body input[type='password'], +.window-app.sheet .window-content .sheet-body input[type='date'], +.window-app.sheet .window-content .sheet-body input[type='time'] { + color: rgba(228, 240, 240, 0.75); + background: rgba(66, 66, 64, 0.95); + border: 1 none; + margin-bottom: 0.25rem; + margin-left: 2px; +} + +.window-app.sheet .window-content .sheet-body select, +.window-app.sheet .window-content .sheet-header select { + color: rgba(228, 240, 240, 0.75); + background: rgba(66, 66, 64, 0.95); + border: 1 none; + margin-bottom: 0.25rem; + margin-left: 2px; +} + +.window-app .window-content, +.window-app.sheet .window-content .sheet-body { + font-size: 0.8rem; + background: url('../images/ui/pc_sheet_bg.webp') repeat left top; + color: rgba(228, 240, 240, 0.75); + background: rgba(66, 66, 64, 0.95); +} + +/* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/ + +section.sheet-body { + padding: 0.25rem 0.5rem; +} + +.sheet header.sheet-header .profile-img { + object-fit: cover; + object-position: 50% 0; + margin: 0.5rem 0 0.5rem 0.5rem; + padding: 0; +} + +.sheet nav.sheet-tabs { + font-size: 0.7rem; + font-weight: bold; + height: 3rem; + flex: 0 0 3rem; + margin: 0; + padding: 0 0 0 0.25rem; + text-align: center; + text-transform: uppercase; + line-height: 1.5rem; + border-top: 0 none; + border-bottom: 0 none; + background-color: black; + color: beige; +} + +/* background: rgb(245,245,240) url("../images/ui/fond4.webp") repeat left top;*/ + +nav.sheet-tabs .item { + position: relative; + padding: 0 0.25rem; +} + +nav.sheet-tabs .item:after { + content: ''; + position: absolute; + top: 0; + right: 0; + height: 2rem; + width: 1px; + border-right: 1px dashed rgba(52, 52, 52, 0.25); +} + +.sheet .tab[data-tab] { + padding: 0; +} + +section.sheet-body:after { + content: ''; + display: block; + clear: both; +} + +.sheet header.sheet-header .flex-compteurs { + text-align: right; +} +.sheet header.sheet-header .resource-content { + width: 2rem; +} + +.select-diff { + display: inline-block; + text-align: left; + width: 50px; +} + +.window-app.sheet .window-content .tooltip:hover .tooltiptext { + top: 2rem; + left: 2rem; + margin: 0; + padding: 0.25rem; +} + +.window-app.sheet .window-content .carac-value, +.window-app.sheet .window-content .competence-xp { + margin: 0.05rem; + flex-basis: 3rem; + text-align: center; +} + +/* ======================================== */ +/* Global UI elements */ + +/* ======================================== */ + +h1, +h2, +h3, +h4 { + font-weight: bold; +} + +ul, +ol { + margin: 0; + padding: 0; +} +ul, +li { + list-style-type: none; +} + +.sheet li { + margin: 0.01rem; + padding: 0.25rem; +} +.header-fields li { + margin: 0; + padding: 0; +} + +.alterne-list > .list-item:hover { + background: rgba(100, 100, 50, 0.25); +} +.alterne-list > .list-item:nth-child(even) { + background: rgba(80, 60, 0, 0.1); +} +.alterne-list > .list-item:nth-child(odd) { + background: rgb(160, 130, 100, 0.05); +} + +.specialisation-label { + font-size: 0.8rem; +} + +.carac-label, +.attr-label { + font-weight: bold; +} + +.list-item { + margin: 0.125rem; + /*box-shadow: inset 0px 0px 1px #00000096; border-radius: 0.25rem;*/ - padding: 0.125rem; - flex: 1 1 5rem; - display: flex !important; - } - .list-item-shadow { - background:rgba(87, 60, 32, 0.35); - /*flex-grow: 0;*/ - flex-wrap: nowrap; - justify-content: flex-start; - } - .list-item-shadow2 { - background:rgba(87, 60, 32, 0.25); - flex-grow: 0; - flex-wrap: nowrap; - justify-content: flex-start; - } - .item-display-show { - display: block; - } - .item-display-hide { - display: none; - } - .conteneur-type { - background: rgb(200, 10, 100, 0.25); - } - .item-quantite { - margin-left: 0.5rem; - } - .list-item-margin1 { - margin-left: 1rem; - } - .list-item-margin2 { - margin-left: 2rem; - } - .list-item-margin3 { - margin-left: 3rem; - } - .list-item-margin4 { - margin-left: 4rem; - } - - .sheet-competence-img { - width: 24px; - max-width: 24px; - height: 24px; - max-height: 24px; - flex-grow: 0; - margin-right: 0.25rem; - } - .competence-column { - flex-direction: column; - align-content: flex-start; - justify-content: flex-start; - flex-grow: 0; - flex-basis: 1; - } - .competence-header { - align-content: flex-start; - justify-content: flex-start; - font-weight: bold; - flex-grow: 0; - } - .secondaire-label, - .arme-label, - .generic-label, - .competence-label, - .devotion-label, - .sort-label, - .technique-label, - .ability-label, - .arme-label, - .armure-label, - .equipement-label, - .description-label { - flex-grow: 2; - margin-left: 4px; - } - .status-header-label { - margin-left: 2px; - } - .roll-dialog-label { - margin: 4px 0; - min-width: 96px; - } - .short-label { - flex-grow: 1; - } - .keyword-label { - font-size: 0.85rem; - } - - .item-sheet-label { - flex-grow: 1; - } - - .item-text-long-line { - flex-grow: 3; - } - - .score-label { - flex-grow: 2; - align-content: center; - } - - .attribut-value, - .carac-value { - flex-grow: 0; - flex-basis: 64px; - margin-right: 4px; - margin-left: 4px; - } - .sante-value, - .competence-value { - flex-grow: 0; - flex-basis: 2rem; - margin-right: 0.25rem; - margin-left: 0.25rem; - } - .description-value { - flex-grow: 0; - flex-basis: 4rem; - margin-right: 0.25rem; - margin-left: 0.25rem; - } - .competence-xp { - flex-grow: 0; - flex-basis: 2rem; - margin-right: 0.25rem; - margin-left: 0.25rem; - } - .blessures-title { - font-weight: bold; - } - .alchimie-title { - font-weight: bold; - } - .blessure-data { - flex-direction: row; - align-content: flex-start; - justify-content: flex-start; - } - .blessures-soins { - flex-grow: 0; - flex-basis: 32px; - margin-right: 4px; - margin-left: 4px; - } - .blessures-loc { - flex-grow: 0; - flex-basis: 96px; - margin-right: 4px; - margin-left: 4px; - } - .pointsreve-value { - flex-grow: 0; - flex-basis: 64px; - margin-right: 4px; - margin-left: 4px; - } - - .input-sante-header, - .stress-style { - flex-grow: 0; - flex-basis: 64px; - margin-right: 4px; - margin-left: 4px; - } - - .small-label { - margin-top: 5px; - } - - .padd-right { - margin-right: 8px; - } - .padd-left { - margin-left: 8px; - } - - .stack-left { - align-items:center; - flex-shrink: 1; - flex-grow: 0; - } - .npc-ability-label { - flex-grow: 2; - } - - .packed-left { - white-space: nowrap; - flex-grow: 0; - } - - .input-numeric-short { - width: 40px; - max-width: 40px; - flex-grow: 0; - flex-shrink: 0; - flex-basis: 40px; - margin-right: 0.25rem; - margin-left: 0.25rem; - } - - .abilities-table { - align-content: flex-start; - } - - /* ======================================== */ - .tokenhudext { - display: flex; - flex: 0 !important; - font-weight: 600; - } - .tokenhudext.left { - justify-content: flex-start; - flex-direction: column; - position: absolute; - top: 2.75rem; - right: 4rem; - } - .tokenhudext.right { - justify-content: flex-start; - flex-direction: column; - position: absolute; - top: 2.75rem; - left: 4rem; - } - .control-icon.tokenhudicon { - width: fit-content; - height: fit-content; - min-width: 6rem; - flex-basis: auto; - padding: 0; - line-height: 1rem; - margin: 0.25rem; - } - .control-icon.tokenhudicon.right { - margin-left: 8px; - } - #token-hud .status-effects.active{ - z-index: 2; - } - /* ======================================== */ - .item-checkbox { - height: 25px; - border: 1px solid #736953a6; - border-left: none; - font-weight: 500; - font-size: 1rem; - color: black; - padding-top: 5px; - margin-right: 0px; - width: 45px; - position: relative; - left: 0px; - text-align: center; - } - - - .flex-actions-bar { - flex-grow: 2; - } - - /* ======================================== */ - /* Sidebar CSS */ - #sidebar { - font-size: 1rem; - background-position: 100%; - color: rgba(220,220,220,0.75); - } - - /* background: rgb(105,85,65) url("../images/ui/texture_feuille_perso_onglets.webp") no-repeat right bottom;*/ - - #sidebar.collapsed { - height: 470px !important; - } - - #sidebar-tabs > .collapsed, #chat-controls .chat-control-icon { - color: rgba(220,220,220,0.75); - text-shadow: 1px 1px 0 rgba(0,0,0,0.75); - } - - .sidebar-tab .directory-list .entity { - border-top: 1px dashed rgba(0,0,0,0.25); - border-bottom: 0 none; - padding: 0.25rem 0; - } - - .sidebar-tab .directory-list .entity:hover { - background: rgba(0,0,0,0.05); - cursor: pointer; - } - .chat-message-header { - background: rgba(220,220,210,0.5); - font-size: 1.1rem; - height: 48px; - text-align: center; - vertical-align: middle; - display: flex; - align-items: center; - } - - .chat-message .message-header .flavor-text, .chat-message .message-header .whisper-to { - font-size: 0.9rem; - } - .chat-actor-name { - padding: 4px; - } - - .chat-img { - width: 64px; - height: 64px; - } - - .roll-dialog-header { - height: 52px; - } - - .actor-icon { - float: left; - width: 48px; - height: 48px; - padding: 2px 6px 2px 2px; - } - - .padding-dice { - padding-top: .2rem; - padding-bottom: .2rem; - } - - .dice-image { - box-sizing: border-box; - border: none; - border-radius: 0; - max-width: 100%; - } - - .dice-image-reroll { - background-color:rgba(115, 224, 115, 0.25); - border-color: #011d33; - box-sizing: border-box; - border: 1px; - border-radius: 0%; - max-width: 100%; - } - - .chat-dice { - width: 15%; - height: 15%; - font-size: 15px; - padding: 10px; - padding-bottom: 20px; - padding-top: .2rem; - padding-bottom: .2rem; - } - - .div-river-full { - height: 5rem; - align-items: flex-start; - } - - .div-river { - align-content: center; - margin-left: 8px; - align-content:space-around; - justify-content: space-around; - } - - .div-center { - align-self: center; - } - - .chat-message { - background: rgba(220,220,210,0.5); - font-size: 0.9rem; - } - - .chat-message.whisper { - background: rgba(220,220,210,0.75); - border: 2px solid #545469; - } - - .chat-message .chat-icon { - border: 0; - padding: 2px 6px 2px 2px; - float: left; - width: 64px; - height: 64px; - } - - .ability-icon { - border: 0; - padding: 2px 2px 2px 2px; - max-width:32px; - max-height:32px; - width: auto; - height: auto; - } - .small-ability-icon { - border: 0; - padding: 2px 2px 2px 2px; - max-width:16px; - max-height:16px; - width: auto; - height: auto; - } - .combat-icon { - border: 0; - padding: 2px 2px 2px 2px; - max-width:24px; - max-height:24px; - width: auto; - height: auto; - } - - #sidebar-tabs { - flex: 0 0 32px; - box-sizing: border-box; - margin: 0 0 5px; - border-bottom: 1px solid rgba(0,0,0,0); - box-shadow: inset 0 0 2rem rgba(0,0,0,0.5); - } - - #sidebar-tabs > .item.active { - border: 1px solid rgba(114,98,72,1); - background: rgba(30, 25, 20, 0.75); - box-shadow: 0 0 6px inset rgba(114,98,72,1); - } - - #sidebar #sidebar-tabs i{ - width: 25px; - height: 25px; - display: inline-block; - background-position:center; - background-size:cover; - text-shadow: 1px 1px 0 rgba(0,0,0,0.75); - - } - - /*--------------------------------------------------------------------------*/ - /* Control, Tool, hotbar & navigation */ - - #controls .scene-control, #controls .control-tool { - box-shadow: 0 0 3px #000; - margin: 0 0 8px; - border-radius: 0; - background: rgba(30, 25, 20, 1); - background-origin: padding-box; - border-image: url(img/ui/footer-button.png) 10 repeat; - border-image-width: 4px; - border-image-outset: 0px; - } - - #controls .scene-control.active, #controls .control-tool.active, #controls .scene-control:hover, #controls .control-tool:hover { - background: rgba(72, 46, 28, 1); - background-origin: padding-box; - border-image: url(img/ui/footer-button.png) 10 repeat; - border-image-width: 4px; - border-image-outset: 0px; - box-shadow: 0 0 3px #ff6400; - } - - #hotbar #action-bar #macro-list { - border: 1px solid rgba(72, 46, 28, 1); - box-shadow: 2px 2px 5px #000000; - } - - #hotbar #action-bar .macro { - border-image: url(img/ui/bg_control.jpg) 21 repeat; - border-image-slice: 6 6 6 6 fill; - border-image-width: 6px 6px 6px 6px; - border-image-outset: 0px 0px 0px 0px; - border-radius: 0px; - } - - #hotbar .bar-controls { - background: rgba(30, 25, 20, 1); - border: 1px solid rgba(72, 46, 28, 1); - } - - #players { - border-image: url(img/ui/footer-button.png) 10 repeat; - border-image-width: 4px; - border-image-outset: 0px; - background: rgba(30, 25, 20, 1); - } - - #navigation #scene-list .scene.nav-item.active { - background: rgba(72, 46, 28, 1); - } - - #navigation #scene-list .scene.nav-item { - background: rgba(30, 25, 20, 1); - background-origin: padding-box; - border-image: url(img/ui/footer-button.png) 10 repeat; - border-image-width: 4px; - border-image-outset: 0px; - } - - #navigation #scene-list .scene.view, #navigation #scene-list .scene.context { - background: rgba(72, 46, 28, 1); - background-origin: padding-box; - border-image: url(img/ui/footer-button.png) 10 repeat; - border-image-width: 4px; - border-image-outset: 0px; - box-shadow: 0 0 3px #ff6400; - } - - #navigation #nav-toggle { - background: rgba(30, 25, 20, 1); - background-origin: padding-box; - border-image: url(img/ui/footer-button.png) 10 repeat; - border-image-width: 4px; - border-image-outset: 0px; - } - - /* Tooltip container */ - .tooltip { - position: relative; - display: inline-block; - /*border-bottom: 1px dotted black; /* If you want dots under the hoverable text */ - } - - /* Tooltip text */ - .tooltip .tooltiptext { - text-align: left; - background: rgba(231, 229, 226, 0.9); - width: 150px; - padding: 3px 0; - font-size: 0.9rem; - - /* Position the tooltip text */ - top: 1px; - position: absolute; - z-index: 1; - - /* Fade in tooltip */ - visibility: hidden; - opacity: 0; - transition: opacity 0.3s; - } - - .tooltip .ttt-fatigue{ - width: 360px; - - background: rgba(30, 25, 20, 0.9); - border-image: url(img/ui/bg_control.jpg) 21 repeat; - border-image-slice: 6 6 6 6 fill; - border-image-width: 6px 6px 6px 6px; - border-image-outset: 0px 0px 0px 0px; - border-radius: 0px; - - font-size: 0.8rem; - padding: 3px 0; - } - - .tooltip .ttt-ajustements { - width: 150px; - background: rgba(220,220,210,0.95); - border-radius: 6px; - font-size: 0.9rem; - padding: 3px 0; - } - - .tooltip-nobottom { - border-bottom: unset; /* If you want dots under the hoverable text */ - } - .tooltip .ttt-xp { - width: 250px; - background: rgba(220,220,210,0.95); - border-radius: 6px; - font-size: 0.9rem; - padding: 3px 0; - } - - /* Show the tooltip text when you mouse over the tooltip container */ - .tooltip:hover .tooltiptext { - visibility: visible; - opacity: 1; - } - - .river-button { - box-shadow: inset 0px 1px 0px 0px #a6827e; - background: linear-gradient(to bottom, #21374afc 5%, #152833ab 100%); - background-color: #7d5d3b00; - border-radius: 3px; - border: 2px ridge #846109; - display: inline-block; - cursor: pointer; - color: #ffffff; - font-size: 0.8rem; - padding: 2px 4px 0px 4px; - text-decoration: none; - text-shadow: 0px 1px 0px #4d3534; - position: relative; - margin:4px; - } - - .chat-card-button { - box-shadow: inset 0px 1px 0px 0px #a6827e; - background: linear-gradient(to bottom, #21374afc 5%, #152833ab 100%); - background-color: #7d5d3b00; - border-radius: 3px; - border: 2px ridge #846109; - display: inline-block; - cursor: pointer; - color: #ffffff; - font-size: 0.8rem; - padding: 4px 12px 0px 12px; - text-decoration: none; - text-shadow: 0px 1px 0px #4d3534; - position: relative; - margin:2px; - } - - .chat-card-button:hover { - background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); - background-color: red; - } - .chat-card-button:active { - position:relative; - top:1px; - } - - .plus-minus-button { - box-shadow: inset 0px 1px 0px 0px #a6827e; - background: linear-gradient(to bottom, #21374afc 5%, #152833ab 100%); - background-color: #7d5d3b00; - border-radius: 2px; - border: 1px ridge #846109; - display: inline-block; - cursor: pointer; - color: #ffffff; - margin: 2px 2px 2px 2px; - padding: 2px 2px 2px 2px; - text-decoration: none; - text-shadow: 0px 1px 0px #4d3534; - position: relative; - margin:0px; - } - - .river-button:hover, - .plus-minus-button:hover, - .chat-card-button:hover { - background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); - background-color: red; - } - - .plus-minus-button:active, - .chat-card-button:active { - position:relative; - top:1px; - } - - .plus-minus { - font-size: 0.9rem; - font-weight: bold; - } - - .ul-level1 { - padding-left: 2rem; - } - - .drop-equipment-effect, - .drop-power-effect, - .drop-perk-effect, - .drop-ability-effect, - .drop-effect-specaffected, - .drop-effect-spec, - .drop-ability-weapon, - .drop-ability-armor, - .drop-race-perk, - .drop-spec-perk, - .drop-ability-power, - .drop-ability-spec, - .drop-spec-power, - .drop-specialability, - .drop-abilities, - .drop-optionnal-abilities, - .drop-virtue-vice-effect, - .drop-virtue-vice, - .drop-vice-virtue, - .drop-specialperk1, - .drop-perk2, - .drop-spec1 , - .drop-spec2 { - background: linear-gradient(to bottom, #6c95b9fc 5%, #105177ab 100%); - background-color: #7d5d3b00; - border-radius: 3px; - border: 2px ridge #846109; - } - - /*************************************************************/ - #pause - { - font-size: 2rem; - } - #pause > h3 - { - color: #CCC - } - - /* =================== 1. ACTOR SHEET FONT STYLES =========== *//* + padding: 0.125rem; + flex: 1 1 5rem; + display: flex !important; +} +.list-item-shadow { + background: rgba(87, 60, 32, 0.35); + /*flex-grow: 0;*/ + flex-wrap: nowrap; + justify-content: flex-start; +} +.list-item-shadow2 { + background: rgba(87, 60, 32, 0.25); + flex-grow: 0; + flex-wrap: nowrap; + justify-content: flex-start; +} +.item-display-show { + display: block; +} +.item-display-hide { + display: none; +} +.conteneur-type { + background: rgb(200, 10, 100, 0.25); +} +.item-quantite { + margin-left: 0.5rem; +} +.list-item-margin1 { + margin-left: 1rem; +} +.list-item-margin2 { + margin-left: 2rem; +} +.list-item-margin3 { + margin-left: 3rem; +} +.list-item-margin4 { + margin-left: 4rem; +} + +.sheet-competence-img { + width: 24px; + max-width: 24px; + height: 24px; + max-height: 24px; + flex-grow: 0; + margin-right: 0.25rem; +} +.competence-column { + flex-direction: column; + align-content: flex-start; + justify-content: flex-start; + flex-grow: 0; + flex-basis: 1; +} +.competence-header { + align-content: flex-start; + justify-content: flex-start; + font-weight: bold; + flex-grow: 0; +} +.secondaire-label, +.arme-label, +.generic-label, +.competence-label, +.devotion-label, +.sort-label, +.technique-label, +.ability-label, +.arme-label, +.armure-label, +.equipement-label, +.description-label { + flex-grow: 2; + margin-left: 4px; +} +.status-header-label { + margin-left: 2px; +} +.roll-dialog-label { + margin: 4px 0; + min-width: 96px; +} +.short-label { + flex-grow: 1; +} +.keyword-label { + font-size: 0.85rem; +} + +.item-sheet-label { + flex-grow: 1; +} + +.item-text-long-line { + flex-grow: 3; +} + +.score-label { + flex-grow: 2; + align-content: center; +} + +.attribut-value, +.carac-value { + flex-grow: 0; + flex-basis: 64px; + margin-right: 4px; + margin-left: 4px; +} +.sante-value, +.competence-value { + flex-grow: 0; + flex-basis: 2rem; + margin-right: 0.25rem; + margin-left: 0.25rem; +} +.description-value { + flex-grow: 0; + flex-basis: 4rem; + margin-right: 0.25rem; + margin-left: 0.25rem; +} +.competence-xp { + flex-grow: 0; + flex-basis: 2rem; + margin-right: 0.25rem; + margin-left: 0.25rem; +} +.blessures-title { + font-weight: bold; +} +.alchimie-title { + font-weight: bold; +} +.blessure-data { + flex-direction: row; + align-content: flex-start; + justify-content: flex-start; +} +.blessures-soins { + flex-grow: 0; + flex-basis: 32px; + margin-right: 4px; + margin-left: 4px; +} +.blessures-loc { + flex-grow: 0; + flex-basis: 96px; + margin-right: 4px; + margin-left: 4px; +} +.pointsreve-value { + flex-grow: 0; + flex-basis: 64px; + margin-right: 4px; + margin-left: 4px; +} + +.input-sante-header, +.stress-style { + flex-grow: 0; + flex-basis: 64px; + margin-right: 4px; + margin-left: 4px; +} + +.small-label { + margin-top: 5px; +} + +.padd-right { + margin-right: 8px; +} +.padd-left { + margin-left: 8px; +} + +.stack-left { + align-items: center; + flex-shrink: 1; + flex-grow: 0; +} +.npc-ability-label { + flex-grow: 2; +} + +.packed-left { + white-space: nowrap; + flex-grow: 0; +} + +.input-numeric-short { + width: 40px; + max-width: 40px; + flex-grow: 0; + flex-shrink: 0; + flex-basis: 40px; + margin-right: 0.25rem; + margin-left: 0.25rem; +} + +.abilities-table { + align-content: flex-start; +} + +/* ======================================== */ +.tokenhudext { + display: flex; + flex: 0 !important; + font-weight: 600; +} +.tokenhudext.left { + justify-content: flex-start; + flex-direction: column; + position: absolute; + top: 2.75rem; + right: 4rem; +} +.tokenhudext.right { + justify-content: flex-start; + flex-direction: column; + position: absolute; + top: 2.75rem; + left: 4rem; +} +.control-icon.tokenhudicon { + width: fit-content; + height: fit-content; + min-width: 6rem; + flex-basis: auto; + padding: 0; + line-height: 1rem; + margin: 0.25rem; +} +.control-icon.tokenhudicon.right { + margin-left: 8px; +} +#token-hud .status-effects.active { + z-index: 2; +} +/* ======================================== */ +.item-checkbox { + height: 25px; + border: 1px solid #736953a6; + border-left: none; + font-weight: 500; + font-size: 1rem; + color: black; + padding-top: 5px; + margin-right: 0px; + width: 45px; + position: relative; + left: 0px; + text-align: center; +} + +.flex-actions-bar { + flex-grow: 2; +} + +/* ======================================== */ +/* Sidebar CSS */ +#sidebar { + font-size: 1rem; + background-position: 100%; + color: rgba(220, 220, 220, 0.75); +} + +/* background: rgb(105,85,65) url("../images/ui/texture_feuille_perso_onglets.webp") no-repeat right bottom;*/ + +#sidebar.collapsed { + height: 470px !important; +} + +#sidebar-tabs > .collapsed, +#chat-controls .chat-control-icon { + color: rgba(220, 220, 220, 0.75); + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); +} + +.sidebar-tab .directory-list .entity { + border-top: 1px dashed rgba(0, 0, 0, 0.25); + border-bottom: 0 none; + padding: 0.25rem 0; +} + +.sidebar-tab .directory-list .entity:hover { + background: rgba(0, 0, 0, 0.05); + cursor: pointer; +} +.chat-message-header { + background: rgba(220, 220, 210, 0.5); + font-size: 1.1rem; + height: 48px; + text-align: center; + vertical-align: middle; + display: flex; + align-items: center; +} + +.chat-message .message-header .flavor-text, +.chat-message .message-header .whisper-to { + font-size: 0.9rem; +} +.chat-actor-name { + padding: 4px; +} + +.chat-img { + width: 64px; + height: 64px; +} + +.roll-dialog-header { + height: 52px; +} + +.actor-icon { + float: left; + width: 48px; + height: 48px; + padding: 2px 6px 2px 2px; +} + +.padding-dice { + padding-top: 0.2rem; + padding-bottom: 0.2rem; +} + +.dice-image { + box-sizing: border-box; + border: none; + border-radius: 0; + max-width: 100%; +} + +.dice-image-reroll { + background-color: rgba(115, 224, 115, 0.25); + border-color: #011d33; + box-sizing: border-box; + border: 1px; + border-radius: 0%; + max-width: 100%; +} + +.chat-dice { + width: 15%; + height: 15%; + font-size: 15px; + padding: 10px; + padding-bottom: 20px; + padding-top: 0.2rem; + padding-bottom: 0.2rem; +} + +.div-river-full { + height: 5rem; + align-items: flex-start; +} + +.div-river { + align-content: center; + margin-left: 8px; + align-content: space-around; + justify-content: space-around; +} + +.div-center { + align-self: center; +} + +.chat-message { + background: rgba(220, 220, 210, 0.5); + font-size: 0.9rem; +} + +.chat-message.whisper { + background: rgba(220, 220, 210, 0.75); + border: 2px solid #545469; +} + +.chat-message .chat-icon { + border: 0; + padding: 2px 6px 2px 2px; + float: left; + width: 64px; + height: 64px; +} + +.ability-icon { + border: 0; + padding: 2px 2px 2px 2px; + max-width: 32px; + max-height: 32px; + width: auto; + height: auto; +} +.small-ability-icon { + border: 0; + padding: 2px 2px 2px 2px; + max-width: 16px; + max-height: 16px; + width: auto; + height: auto; +} +.combat-icon { + border: 0; + padding: 2px 2px 2px 2px; + max-width: 24px; + max-height: 24px; + width: auto; + height: auto; +} + +#sidebar-tabs { + flex: 0 0 32px; + box-sizing: border-box; + margin: 0 0 5px; + border-bottom: 1px solid rgba(0, 0, 0, 0); + box-shadow: inset 0 0 2rem rgba(0, 0, 0, 0.5); +} + +#sidebar-tabs > .item.active { + border: 1px solid rgba(114, 98, 72, 1); + background: rgba(30, 25, 20, 0.75); + box-shadow: 0 0 6px inset rgba(114, 98, 72, 1); +} + +#sidebar #sidebar-tabs i { + width: 25px; + height: 25px; + display: inline-block; + background-position: center; + background-size: cover; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); +} + +/*--------------------------------------------------------------------------*/ +/* Control, Tool, hotbar & navigation */ + +#controls .scene-control, +#controls .control-tool { + box-shadow: 0 0 3px #000; + margin: 0 0 8px; + border-radius: 0; + background: rgba(30, 25, 20, 1); + background-origin: padding-box; + border-image: url(img/ui/footer-button.png) 10 repeat; + border-image-width: 4px; + border-image-outset: 0px; +} + +#controls .scene-control.active, +#controls .control-tool.active, +#controls .scene-control:hover, +#controls .control-tool:hover { + background: rgba(72, 46, 28, 1); + background-origin: padding-box; + border-image: url(img/ui/footer-button.png) 10 repeat; + border-image-width: 4px; + border-image-outset: 0px; + box-shadow: 0 0 3px #ff6400; +} + +#hotbar #action-bar #macro-list { + border: 1px solid rgba(72, 46, 28, 1); + box-shadow: 2px 2px 5px #000000; +} + +#hotbar #action-bar .macro { + border-image: url(img/ui/bg_control.jpg) 21 repeat; + border-image-slice: 6 6 6 6 fill; + border-image-width: 6px 6px 6px 6px; + border-image-outset: 0px 0px 0px 0px; + border-radius: 0px; +} + +#hotbar .bar-controls { + background: rgba(30, 25, 20, 1); + border: 1px solid rgba(72, 46, 28, 1); +} + +#players { + border-image: url(img/ui/footer-button.png) 10 repeat; + border-image-width: 4px; + border-image-outset: 0px; + background: rgba(30, 25, 20, 1); +} + +#navigation #scene-list .scene.nav-item.active { + background: rgba(72, 46, 28, 1); +} + +#navigation #scene-list .scene.nav-item { + background: rgba(30, 25, 20, 1); + background-origin: padding-box; + border-image: url(img/ui/footer-button.png) 10 repeat; + border-image-width: 4px; + border-image-outset: 0px; +} + +#navigation #scene-list .scene.view, +#navigation #scene-list .scene.context { + background: rgba(72, 46, 28, 1); + background-origin: padding-box; + border-image: url(img/ui/footer-button.png) 10 repeat; + border-image-width: 4px; + border-image-outset: 0px; + box-shadow: 0 0 3px #ff6400; +} + +#navigation #nav-toggle { + background: rgba(30, 25, 20, 1); + background-origin: padding-box; + border-image: url(img/ui/footer-button.png) 10 repeat; + border-image-width: 4px; + border-image-outset: 0px; +} + +/* Tooltip container */ +.tooltip { + position: relative; + display: inline-block; + /*border-bottom: 1px dotted black; /* If you want dots under the hoverable text */ +} + +/* Tooltip text */ +.tooltip .tooltiptext { + text-align: left; + background: rgba(231, 229, 226, 0.9); + width: 150px; + padding: 3px 0; + font-size: 0.9rem; + + /* Position the tooltip text */ + top: 1px; + position: absolute; + z-index: 1; + + /* Fade in tooltip */ + visibility: hidden; + opacity: 0; + transition: opacity 0.3s; +} + +.tooltip .ttt-fatigue { + width: 360px; + + background: rgba(30, 25, 20, 0.9); + border-image: url(img/ui/bg_control.jpg) 21 repeat; + border-image-slice: 6 6 6 6 fill; + border-image-width: 6px 6px 6px 6px; + border-image-outset: 0px 0px 0px 0px; + border-radius: 0px; + + font-size: 0.8rem; + padding: 3px 0; +} + +.tooltip .ttt-ajustements { + width: 150px; + background: rgba(220, 220, 210, 0.95); + border-radius: 6px; + font-size: 0.9rem; + padding: 3px 0; +} + +.tooltip-nobottom { + border-bottom: unset; /* If you want dots under the hoverable text */ +} +.tooltip .ttt-xp { + width: 250px; + background: rgba(220, 220, 210, 0.95); + border-radius: 6px; + font-size: 0.9rem; + padding: 3px 0; +} + +/* Show the tooltip text when you mouse over the tooltip container */ +.tooltip:hover .tooltiptext { + visibility: visible; + opacity: 1; +} + +.river-button { + box-shadow: inset 0px 1px 0px 0px #a6827e; + background: linear-gradient(to bottom, #21374afc 5%, #152833ab 100%); + background-color: #7d5d3b00; + border-radius: 3px; + border: 2px ridge #846109; + display: inline-block; + cursor: pointer; + color: #ffffff; + font-size: 0.8rem; + padding: 2px 4px 0px 4px; + text-decoration: none; + text-shadow: 0px 1px 0px #4d3534; + position: relative; + margin: 4px; +} + +.chat-card-button { + box-shadow: inset 0px 1px 0px 0px #a6827e; + background: linear-gradient(to bottom, #21374afc 5%, #152833ab 100%); + background-color: #7d5d3b00; + border-radius: 3px; + border: 2px ridge #846109; + display: inline-block; + cursor: pointer; + color: #ffffff; + font-size: 0.8rem; + padding: 4px 12px 0px 12px; + text-decoration: none; + text-shadow: 0px 1px 0px #4d3534; + position: relative; + margin: 2px; +} + +.chat-card-button:hover { + background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); + background-color: red; +} +.chat-card-button:active { + position: relative; + top: 1px; +} + +.plus-minus-button { + box-shadow: inset 0px 1px 0px 0px #a6827e; + background: linear-gradient(to bottom, #21374afc 5%, #152833ab 100%); + background-color: #7d5d3b00; + border-radius: 2px; + border: 1px ridge #846109; + display: inline-block; + cursor: pointer; + color: #ffffff; + margin: 2px 2px 2px 2px; + padding: 2px 2px 2px 2px; + text-decoration: none; + text-shadow: 0px 1px 0px #4d3534; + position: relative; + margin: 0px; +} + +.river-button:hover, +.plus-minus-button:hover, +.chat-card-button:hover { + background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); + background-color: red; +} + +.plus-minus-button:active, +.chat-card-button:active { + position: relative; + top: 1px; +} + +.plus-minus { + font-size: 0.9rem; + font-weight: bold; +} + +.ul-level1 { + padding-left: 2rem; +} + +.drop-equipment-effect, +.drop-power-effect, +.drop-perk-effect, +.drop-ability-effect, +.drop-effect-specaffected, +.drop-effect-spec, +.drop-ability-weapon, +.drop-ability-armor, +.drop-race-perk, +.drop-spec-perk, +.drop-ability-power, +.drop-ability-spec, +.drop-spec-power, +.drop-specialability, +.drop-abilities, +.drop-optionnal-abilities, +.drop-virtue-vice-effect, +.drop-virtue-vice, +.drop-vice-virtue, +.drop-specialperk1, +.drop-perk2, +.drop-spec1, +.drop-spec2 { + background: linear-gradient(to bottom, #6c95b9fc 5%, #105177ab 100%); + background-color: #7d5d3b00; + border-radius: 3px; + border: 2px ridge #846109; +} + +/*************************************************************/ +#pause { + font-size: 2rem; +} +#pause > h3 { + color: #ccc; +} + +/* =================== 1. ACTOR SHEET FONT STYLES =========== */ /* Agility AGI: #02a41d Also Used for Ranged Damage Mind MND: #a100fe Social SOC: #fd7100 @@ -1277,227 +1320,231 @@ Stealth STL: #505050 Perception PER: #f9c801 Also Used for Ranged Damage Focus FOC: #ff0084 - */ - .color-class-black { - background-color: black; - background: black; - } - .color-class-agi, - .color-class-range { - background-color: #02a41d; - background: #02a41d; - } - .color-class-pool { - background-color:#c5c3c3; - } - .color-class-mnd { - background-color: #a100fe; - } - .color-class-soc { - background-color: #fd7100; - } - .color-class-str, - .color-class-meleedmg { - background-color: #5f3d00; - } - .color-class-phy, - .color-class-dmgres { - background-color: #990304; - } - .color-class-mr { - background-color: #050505; - } - .color-class-com, - .color-class-melee { - background-color: #0136ff; - } - .color-class-def, - .color-class-defence { - background-color: #88826a; - } - .color-class-stl { - background-color: #505050; - } - .color-class-per, - .color-class-ranged { - background-color: #f9c801; - } - .color-class-foc { - background-color: #ff0084; - } - .color-class-common { - background: rgba(185, 183, 40, 0.45); - } - .status-small-label { - font-size: 0.65rem; - } - .combat-button { - min-height: 26px; - max-height: 26px; - margin-top: 4px; - } - .no-grow { - flex-grow: 1; - max-width: 32px; - } - .status-col-name { - max-width: 72px; - } - .status-block { - max-width: 216px; - } - .momentum-block { - max-width: 128px; - justify-content: flex-start; - } - .ability-item { - flex-grow: 1; - justify-content: flex-start; - margin: 2px; - } - .ability-block { - min-width: 160px; - } - .ability-margin { - margin-left: 4px; - margin-top: 5px; - } - .combat-margin { - margin-left: 4px; - margin-top: 3px; - } - .item-ability-roll { - max-height: 42px; - min-height: 36px; - } - .item-ability-roll select, .item-ability-roll input { - margin-top: 4px; - margin-right: 2px; - } - .table-momentum { - background: none; - border: 0; - } - .img-no-border { - max-width: 48px; - max-height: 48px; - border: 0; - } - .items-title-bg { - margin-top: 6px; - background: black; - color: white; - } - .items-title-bg-red { - background: darkred; - } - .items-title-text { - margin-left: 4px; - } - .lock-icon { - width:16px; - height: 16px; - } - .item-sheet-img { - width: 64px; - height: auto; - } - .item-name-img { - flex-grow:1; - max-width: 2rem; - min-width: 2rem; - } - .item-name-label-header { - flex-grow:2; - max-width: 12rem; - min-width: 12rem; - } - .item-name-label-header-long { - flex-grow:2; - max-width: 14rem; - min-width: 14rem; - } - .item-name-label-header-long2 { - flex-grow:2; - max-width: 24rem; - min-width: 24rem; - } - .item-name-label-header-long3 { - flex-grow:2; - max-width: 30rem; - min-width: 30rem; - } - .item-name-label { - flex-grow:2; - max-width: 10rem; - min-width: 10rem; - } - .item-name-label-long { - flex-grow:2; - max-width: 12rem; - min-width: 12rem; - } - .item-name-label-long2 { - flex-grow:2; - max-width: 22rem; - min-width: 22rem; - } - .item-name-label-level2 { - flex-grow:2; - max-width: 9rem; - min-width: 9rem; - } - .item-field-label-short { - flex-grow:1; - margin-top: 4px; - max-width: 4rem; - min-width: 4rem; - } - .item-field-label-medium { - flex-grow:1; - margin-top: 4px; - max-width: 6rem; - min-width: 6rem; - } - .item-field-label-long { - flex-grow:1; - margin-top: 4px; - max-width: 8rem; - min-width: 8rem; - } - .item-field-label-vlong { - flex-grow:1; - margin-top: 4px; - max-width: 12rem; - min-width: 12rem; - } - .item-field-label-vlong2 { - flex-grow:1; - margin-top: 4px; - max-width: 22rem; - min-width: 22rem; - } - .item-control-end { - align-self: flex-end; - } - .alternate-list { - margin-top: 4px; - fong2ex-wrap: nowrap; - } - .item-filler { - flex-grow: 6; - flex-shrink: 7; - } - .item-controls-fixed { - min-width:2rem; - max-width: 2rem; - } - form .notes { - color: rgba(214, 230, 230, 0.95); - } - .crit-success { - color: darkgreen; - } - .crit-failure { - color: darkred; - } \ No newline at end of file + */ +.color-class-black { + background-color: black; + background: black; +} +.color-class-agi, +.color-class-range { + background-color: #02a41d; + background: #02a41d; +} +.color-class-pool { + background-color: #c5c3c3; +} +.color-class-mnd { + background-color: #a100fe; +} +.color-class-soc { + background-color: #fd7100; +} +.color-class-str, +.color-class-meleedmg { + background-color: #5f3d00; +} +.color-class-phy, +.color-class-dmgres { + background-color: #990304; +} +.color-class-mr { + background-color: #050505; +} +.color-class-com, +.color-class-melee { + background-color: #0136ff; +} +.color-class-def, +.color-class-defence { + background-color: #88826a; +} +.color-class-stl { + background-color: #505050; +} +.color-class-per, +.color-class-ranged { + background-color: #f9c801; +} +.color-class-foc { + background-color: #ff0084; +} +.color-class-common { + background: rgba(185, 183, 40, 0.45); +} +.status-small-label { + font-size: 0.65rem; +} +.combat-button { + min-height: 26px; + max-height: 26px; + margin-top: 4px; +} +.no-grow { + flex-grow: 1; + max-width: 32px; +} +.status-col-name { + max-width: 72px; +} +.status-block { + max-width: 216px; +} +.momentum-block { + max-width: 128px; + justify-content: flex-start; +} +.ability-item { + flex-grow: 1; + justify-content: flex-start; + margin: 2px; +} +.ability-block { + min-width: 160px; +} +.ability-margin { + margin-left: 4px; + margin-top: 5px; +} +.combat-margin { + margin-left: 4px; + margin-top: 3px; +} +.item-ability-roll { + max-height: 42px; + min-height: 36px; +} +.item-ability-roll select, +.item-ability-roll input { + margin-top: 4px; + margin-right: 2px; +} +.table-momentum { + background: none; + border: 0; +} +.img-no-border { + max-width: 48px; + max-height: 48px; + border: 0; +} +.items-title-bg { + margin-top: 6px; + background: black; + color: white; +} +.items-title-bg-red { + background: darkred; +} +.items-title-text { + margin-left: 4px; +} +.lock-icon { + width: 16px; + height: 16px; +} +.item-sheet-img { + width: 64px; + height: auto; +} +.item-name-img { + flex-grow: 1; + max-width: 2rem; + min-width: 2rem; +} +.item-name-label-header { + flex-grow: 2; + max-width: 12rem; + min-width: 12rem; +} +.item-name-label-header-long { + flex-grow: 2; + max-width: 14rem; + min-width: 14rem; +} +.item-name-label-header-long2 { + flex-grow: 2; + max-width: 24rem; + min-width: 24rem; +} +.item-name-label-header-long3 { + flex-grow: 2; + max-width: 30rem; + min-width: 30rem; +} +.item-name-label { + flex-grow: 2; + max-width: 10rem; + min-width: 10rem; +} +.item-name-label-long { + flex-grow: 2; + max-width: 12rem; + min-width: 12rem; +} +.item-name-label-long2 { + flex-grow: 2; + max-width: 22rem; + min-width: 22rem; +} +.item-name-label-level2 { + flex-grow: 2; + max-width: 9rem; + min-width: 9rem; +} +.item-field-label-short { + flex-grow: 1; + margin-top: 4px; + max-width: 4rem; + min-width: 4rem; +} +.item-field-label-medium { + flex-grow: 1; + margin-top: 4px; + max-width: 6rem; + min-width: 6rem; +} +.item-field-label-long { + flex-grow: 1; + margin-top: 4px; + max-width: 8rem; + min-width: 8rem; +} +.item-field-label-vlong { + flex-grow: 1; + margin-top: 4px; + max-width: 12rem; + min-width: 12rem; +} +.item-field-label-vlong2 { + flex-grow: 1; + margin-top: 4px; + max-width: 24rem; + min-width: 24rem; +} +.item-control-end { + align-self: flex-end; +} +.alternate-list { + margin-top: 4px; + fong2ex-wrap: nowrap; +} +.item-filler { + flex-grow: 6; + flex-shrink: 7; +} +.item-controls-fixed { + min-width: 2rem; + max-width: 2rem; +} +form .notes { + color: rgba(214, 230, 230, 0.95); +} +.crit-success { + color: darkgreen; +} +.crit-failure { + color: darkred; +} +.directory .directory-header .header-search input { + color: rgba(52, 52, 52, 0.95); +} diff --git a/system.json b/system.json index 5f8447b..e0e1965 100644 --- a/system.json +++ b/system.json @@ -101,7 +101,7 @@ "styles": [ "styles/simple.css" ], - "version": "10.0.20", + "version": "10.0.23", "compatibility": { "minimum": "10", "verified": "10", @@ -109,7 +109,7 @@ }, "title": "Warhero RPG", "manifest": "https://www.uberwald.me/gitea/public/fvtt-warhero/raw/branch/master/system.json", - "download": "https://www.uberwald.me/gitea/uberwald/fvtt-warhero/archive/fvtt-warhero-10.0.20.zip", + "download": "https://www.uberwald.me/gitea/uberwald/fvtt-warhero/archive/fvtt-warhero-10.0.23.zip", "url": "https://www.uberwald.me/gitea/public/fvtt-warhero", "background": "images/ui/warhero_welcome_page.webp", "id": "fvtt-warhero" diff --git a/template.json b/template.json index 16bff50..23e714f 100644 --- a/template.json +++ b/template.json @@ -1,6 +1,10 @@ { "Actor": { - "types": ["character", "npc"], + "types": [ + "character", + "npc", + "monster" + ], "templates": { "biodata": { "biodata": { @@ -51,7 +55,7 @@ } }, "attributes": { - "hp":{ + "hp": { "label": "WH.ui.HitPoints", "abbrev": "hp", "style": "edit", @@ -60,7 +64,7 @@ "max": 1, "value": 1 }, - "knowledge":{ + "knowledge": { "label": "WH.ui.Knowledge", "abbrev": "knowledge", "style": "edit", @@ -69,14 +73,14 @@ "max": 1, "value": 1 }, - "def":{ + "def": { "label": "WH.ui.Defence", "abbrev": "def", "style": "edit", "max": 1, "value": 1 }, - "txcm":{ + "txcm": { "label": "WH.ui.Throw2HitM", "abbrev": "txcm", "istxc": true, @@ -85,7 +89,7 @@ "max": 1, "value": 1 }, - "txcr":{ + "txcr": { "label": "WH.ui.Throw2HitR", "abbrev": "txcr", "istxc": true, @@ -94,7 +98,7 @@ "max": 1, "value": 1 }, - "mana":{ + "mana": { "label": "WH.ui.Mana", "abbrev": "pm", "style": "edit", @@ -103,28 +107,28 @@ "max": 1, "value": 1 }, - "ini":{ + "ini": { "label": "WH.ui.Initiative", "abbrev": "ini", "style": "edit", "max": 1, "value": 1 }, - "movearth":{ + "movearth": { "label": "WH.ui.Movement", "abbrev": "mov", "style": "edit", "max": 1, "value": 1 }, - "movswim":{ + "movswim": { "label": "WH.ui.MovementSwim", "abbrev": "mov", "style": "edit", "max": 1, "value": 1 }, - "movfly":{ + "movfly": { "label": "WH.ui.MovementFly", "abbrev": "mov", "style": "edit", @@ -144,27 +148,27 @@ "label": "WH.ui.malusmultiweapon", "abbrev": "malusmultiweapon", "style": "edit", - "value": 0 + "value": 0 }, "drbonus": { "label": "WH.ui.drbonus", "abbrev": "drbonus", "style": "edit", - "value": 0 + "value": 0 }, "drbonustotal": { "label": "WH.ui.drbonustotal", "abbrev": "drbonustotal", "disabled": true, "style": "edit", - "value": 0 + "value": 0 }, "parrybonus": { "label": "WH.ui.parrybonus", "abbrev": "parrybonus", "isparrybonus": true, "style": "edit", - "value": 0 + "value": 0 }, "parrybonustotal": { "label": "WH.ui.parrybonustotal", @@ -172,7 +176,7 @@ "disabled": true, "style": "edit", "roll": true, - "value": 0 + "value": 0 }, "counterspell": { "label": "WH.ui.counterspell", @@ -180,20 +184,20 @@ "style": "edit", "hasmax": true, "max": 1, - "value": 0 + "value": 0 }, "createitem": { "label": "WH.ui.createitem", "abbrev": "createitem", "style": "edit", - "value": 0 + "value": 0 }, "nblanguage": { "label": "WH.ui.languagesbonus", "abbrev": "nblanguage", "style": "edit", "disabled": true, - "value": 0 + "value": 0 } } }, @@ -203,14 +207,37 @@ } }, "character": { - "templates": [ "biodata", "core" ] + "templates": [ + "biodata", + "core" + ] }, "npc": { - "templates": [ "biodata", "core" ] - } + "templates": [ + "biodata", + "core" + ] + }, + "monster": { + "templates": [ + "biodata", + "core" + ] + } }, "Item": { - "types": [ "equipment", "race", "weapon", "armor", "shield", "skill", "power", "language", "condition", "class"], + "types": [ + "equipment", + "race", + "weapon", + "armor", + "shield", + "skill", + "power", + "language", + "condition", + "class" + ], "templates": { "commonclassrace": { "weapons": { @@ -219,7 +246,7 @@ "twohanded": false, "shooting": false, "polearm": false, - "throwing": false + "throwing": false }, "armors": { "light": false, @@ -230,7 +257,7 @@ "light": false, "medium": false, "tower": false - } + } } }, "condition": { @@ -238,7 +265,9 @@ "description": "" }, "class": { - "templates": ["commonclassrace"], + "templates": [ + "commonclassrace" + ], "description": "" }, "race": { @@ -248,7 +277,9 @@ "attributebonus1": "", "attributebonus4": "", "attributebonus8": "", - "templates": ["commonclassrace"] + "templates": [ + "commonclassrace" + ] }, "language": { "shortdescription": "", @@ -264,6 +295,9 @@ "weapon": { "weapontype": "short", "damage": "1d6", + "damage2hands": "1d6", + "rollformula": "", + "damageformula": "", "cost": 0, "equipped": false, "quantity": 1, @@ -279,7 +313,7 @@ "quantity": 1, "slotused": 1, "slotlocation": "armor", - "description":"" + "description": "" }, "shield": { "shieldtype": "light", @@ -289,7 +323,7 @@ "quantity": 1, "slotused": 1, "slotlocation": "shield", - "description":"" + "description": "" }, "equipment": { "equiptype": "", @@ -298,18 +332,18 @@ "equipped": false, "slotused": 1, "slotlocation": "backpack", - "description":"" + "description": "" }, "power": { "level": "", "magicschool": "", "description": "" }, - "spell":{ + "spell": { "lore": "", "circle": 1, "range": "", "description": "" } } -} +} \ No newline at end of file diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index bc783be..517f058 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -192,8 +192,16 @@ {{weapon.name}} {{weapon.system.weapontype}} - + + {{#if (eq system.weapontype "special")}} + {{weapon.system.damageformula}} + {{else}} {{weapon.damageFormula}} + {{/if}} + + {{#if (eq system.weapontype "polearm")}} + {{weapon.damageFormula2Hands}} + {{/if}}
 
@@ -383,29 +391,34 @@
- + + {{#each powers as |school schoolKey|}} + {{/each}}
diff --git a/templates/item-weapon-sheet.html b/templates/item-weapon-sheet.html index 3c49dd0..2a539bb 100644 --- a/templates/item-weapon-sheet.html +++ b/templates/item-weapon-sheet.html @@ -18,7 +18,7 @@
    -
  • +
  • - -
  • + + {{#if (eq system.weapontype "special")}} +
  • + +
  • +
  • + +
  • + {{else}} +
  • - + {{/if}} + + {{#if (eq system.weapontype "polearm")}} +
  • + +
  • + {{/if}} {{> systems/fvtt-warhero/templates/partial-item-common-equipment.html}} diff --git a/templates/monster-sheet.html b/templates/monster-sheet.html new file mode 100644 index 0000000..c3a1258 --- /dev/null +++ b/templates/monster-sheet.html @@ -0,0 +1,547 @@ +
    + + {{!-- Sheet Header --}} +
    +
    +

    +
    + +
    + +
    +
    +
      + {{#each system.statistics as |stat key|}} + {{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=stat key=key path="statistics" fieldClass="item-field-label-medium"}} + {{/each}} +
    +
    + +
    +
      +
    • + + + +
      + +
      +
    • +
    • + + + +
      + +
      +
    • +
    • + + +
    • +
    +
    +
    + +
    + {{#each system.attributes as |attr key|}} + {{#if attr.isheader}} +
    + {{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=attr key=key path="attributes" fieldClass="item-field-label-medium"}} +
    + {{/if}} + {{/each}} +
+
+ +
+ + + + + + + + {{!-- Sheet Tab Navigation --}} + + + {{!-- Sheet Body --}} +
+ + {{!-- Skills Tab --}} +
+ +
+ +
+
    + {{#each system.attributes as |attr key|}} + {{#if (not attr.isheader)}} + {{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=attr key=key path="attributes" fieldClass="item-field-label-vlong"}} + {{/if}} + {{/each}} +
+ +
+
    +
  • + +

    +
    +
  • + {{#each competency.weapons as |flag key|}} + {{#if flag}} +
  • + {{localize "WH.ui.weapons"}} {{key}} +
  • + {{/if}} + {{/each}} + {{#each competency.shields as |flag key|}} + {{#if flag}} +
  • + {{localize "WH.ui.shields"}} {{key}} +
  • + {{/if}} + {{/each}} + {{#each competency.armors as |flag key|}} + {{#if flag}} +
  • + {{localize "WH.ui.armors"}} {{key}} +
  • + {{/if}} + {{/each}} +
+
+ +
+ +
+
    +
  • + +

    + {{localize "WH.ui.xphp"}} +

    +
    + {{hpprogression}} +
  • + + + {{#each system.secondary as |second key|}} + {{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=second key=key path="secondary" fieldClass="item-field-label-vlong"}} + {{/each}} + +
+ +
+
    +
  • + +

    +
    +
  • + {{#each languages as |language key|}} +
  • + + {{language.name}} + +
     
    +
    + +
    +
  • + {{/each}} +
+
+ +
+ +
+ +
+ + {{!-- Combat Tab --}} +
+
+ +
+
    +
  • + +

    +
    + + + + + + +
  • + {{#each weapons as |weapon key|}} +
  • + + {{weapon.name}} + + {{weapon.system.weapontype}} + + {{weapon.damageFormula}} + +
     
    +
    + +
    +
  • + {{/each}} +
+
+ +
+
    +
  • + +

    +
    + + + + + + +
  • + {{#each shields as |shield key|}} +
  • + + {{shield.name}} + + {{shield.system.shieldtype}} + + {{shield.system.parrybonus}} + +
     
    +
    + +
    +
  • + {{/each}} +
+
+ +
+
    +
  • + +

    +
    + + + + + + +
  • + {{#each armors as |armor key|}} +
  • + + {{armor.name}} + + {{armor.system.armortype}} + + {{armor.system.damagereduction}} + +
     
    +
    + +
    +
  • + {{/each}} +
+
+ +
+
+ + {{!-- Skills Tab --}} +
+
+ +
+
    +
  • + +

    +
    + + + + + + +
  • + {{#each classSkills as |skill key|}} +
  • + + {{skill.name}} + + {{#if skill.system.unlimited}} + N/A + N/A + {{else}} + {{skill.system.currentuse}} + {{skill.system.maxuse}} + {{/if}} + +
     
    +
    + +
    +
  • + {{/each}} +
+
+ +
+
    +
  • + +

    +
    + + + + + + +
  • + {{#each skills as |skill key|}} +
  • + + {{skill.name}} + + {{#if skill.system.unlimited}} + N/A + N/A + {{else}} + {{skill.system.currentuse}} + {{skill.system.maxuse}} + {{/if}} + +
     
    +
    + +
    +
  • + {{/each}} +
+
+ +
+
    +
  • + +

    +
    + + + +
  • + {{#each conditions as |cond key|}} +
  • + + {{cond.name}} + + {{cond.system.shortdescription}} + +
     
    +
    + +
    +
  • + {{/each}} +
+
+ + +
+
+ + + {{!-- Powers Tab --}} +
+ +
+ + {{#each powers as |school schoolKey|}} + + {{/each}} + +
+
+ + {{!-- Equipement Tab --}} +
+ + {{#each slotEquipments as |slot slotKey|}} +
    +
  • + +

    +
    + + + + + + + + + + + + +
     
    +
    + +
    +
  • + {{#each slot.content as |item itemKey|}} +
  • + + {{item.name}} + + + + + + + + +
     
    +
    + +
    +
  • + {{/each}} +
+ {{/each}} + + +
+ +
+ + {{!-- Biography Tab --}} +
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
+
+
+ + +
+

Background :

+
+ {{editor description target="system.biodata.description" button=true owner=owner + editable=editable}} +
+
+

Notes :

+
+ {{editor notes target="system.biodata.notes" button=true owner=owner editable=editable}} +
+
+ +
+ +
+ \ No newline at end of file diff --git a/templates/npc-sheet.html b/templates/npc-sheet.html index 208c497..ce9f9b7 100644 --- a/templates/npc-sheet.html +++ b/templates/npc-sheet.html @@ -11,78 +11,64 @@
    - {{#each data.abilities as |ability key|}} - {{#if (eq ability.col 1)}} - {{> systems/fvtt-crucible-rpg/templates/partial-actor-ability-block.html ability=ability key=key}} - {{/if}} + {{#each system.statistics as |stat key|}} + {{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=stat key=key path="statistics" fieldClass="item-field-label-medium"}} {{/each}} -
- -
  • - -

    Class

    -
    - -
  • - +
      - {{#each data.abilities as |ability key|}} - {{#if (eq ability.col 2)}} - {{> systems/fvtt-crucible-rpg/templates/partial-actor-ability-block.html ability=ability key=key}} - {{/if}} - {{/each}} - - {{#if equippedArmor}} -
    • - - -

      {{equippedArmor.name}}

      -
      -
    • - {{/if}} - {{#if equippedShield}} -
    • - - -

      {{equippedShield.name}}

      -
      -
    • - {{/if}} -
    • - - -

      Target Roll

      -
      -
    • - +
    • + + + +
      + +
      +
    • +
    • + + + +
      + +
      +
    • +
    • + + +
    -
    +
    + -
    - {{> systems/fvtt-crucible-rpg/templates/partial-actor-status.html}} -
    +
    + {{#each system.attributes as |attr key|}} + {{#if attr.isheader}} +
    + {{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=attr key=key path="attributes" fieldClass="item-field-label-medium"}} +
    + {{/if}} + {{/each}} + +
    + + {{!-- Sheet Tab Navigation --}} @@ -90,31 +76,386 @@
    {{!-- Skills Tab --}} -
    +
    + +
    -
      -
    • +
      +
        + {{#each system.attributes as |attr key|}} + {{#if (not attr.isheader)}} + {{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=attr key=key path="attributes" fieldClass="item-field-label-vlong"}} + {{/if}} + {{/each}} +
      + +
      +
        +
      • + +

        +
        +
      • + {{#each competency.weapons as |flag key|}} + {{#if flag}} +
      • + {{localize "WH.ui.weapons"}} {{key}} +
      • + {{/if}} + {{/each}} + {{#each competency.shields as |flag key|}} + {{#if flag}} +
      • + {{localize "WH.ui.shields"}} {{key}} +
      • + {{/if}} + {{/each}} + {{#each competency.armors as |flag key|}} + {{#if flag}} +
      • + {{localize "WH.ui.armors"}} {{key}} +
      • + {{/if}} + {{/each}} +
      +
      + +
      + +
      +
        +
      • + +

        + {{localize "WH.ui.xphp"}} +

        +
        + {{hpprogression}} +
      • + + + {{#each system.secondary as |second key|}} + {{> systems/fvtt-warhero/templates/partial-actor-stat-block.html stat=second key=key path="secondary" fieldClass="item-field-label-vlong"}} + {{/each}} + +
      + +
      +
        +
      • + +

        +
        +
      • + {{#each languages as |language key|}} +
      • + + {{language.name}} + +
         
        +
        + +
        +
      • + {{/each}} +
      +
      + +
      + +
    + +
    + + {{!-- Combat Tab --}} +
    +
    + +
    +
      +
    • + +

      +
      + + + + + + +
    • + {{#each weapons as |weapon key|}} +
    • + + {{weapon.name}} + + {{weapon.system.weapontype}} + + {{weapon.damageFormula}} + +
       
      +
      + +
      +
    • + {{/each}} +
    +
    + +
    +
      +
    • + +

      +
      + + + + + + +
    • + {{#each shields as |shield key|}} +
    • + + {{shield.name}} + + {{shield.system.shieldtype}} + + {{shield.system.parrybonus}} + +
       
      +
      + +
      +
    • + {{/each}} +
    +
    + +
    +
      +
    • + +

      +
      + + + + + + +
    • + {{#each armors as |armor key|}} +
    • + + {{armor.name}} + + {{armor.system.armortype}} + + {{armor.system.damagereduction}} + +
       
      +
      + +
      +
    • + {{/each}} +
    +
    + +
    +
    + + {{!-- Skills Tab --}} +
    +
    + +
    +
      +
    • + +

      +
      + + + + + + +
    • + {{#each classSkills as |skill key|}} +
    • + + {{skill.name}} + + {{#if skill.system.unlimited}} + N/A + N/A + {{else}} + {{skill.system.currentuse}} + {{skill.system.maxuse}} + {{/if}} + +
       
      +
      + +
      +
    • + {{/each}} +
    +
    + +
    +
      +
    • + +

      +
      + + + + + + +
    • + {{#each skills as |skill key|}} +
    • + + {{skill.name}} + + {{#if skill.system.unlimited}} + N/A + N/A + {{else}} + {{skill.system.currentuse}} + {{skill.system.maxuse}} + {{/if}} + +
       
      +
      + +
      +
    • + {{/each}} +
    +
    + +
    +
      +
    • + +

      +
      + + + +
    • + {{#each conditions as |cond key|}} +
    • + + {{cond.name}} + + {{cond.system.shortdescription}} + +
       
      +
      + +
      +
    • + {{/each}} +
    +
    + + +
    +
    + + {{!-- Powers Tab --}} +
    + +
    + + {{#each powers as |school schoolKey|}} + + {{/each}} + +
    +
    + + {{!-- Equipement Tab --}} +
    + + {{#each slotEquipments as |slot slotKey|}} +
      +
    • -

      -
      - - - - - +

      +
      + + - + + + + + + + +
       
      +
      + +
    • - {{#each skills as |skill key|}} -
    • + {{#each slot.content as |item itemKey|}} +
    • - {{skill.name}} - {{upper skill.system.ability}} - {{skill.system.skilldice}} -  -  + src="{{item.img}}" /> + {{item.name}} + + + + + + + +
       
      @@ -122,213 +463,10 @@
    • {{/each}}
    + {{/each}} -
      -
    • - -

      -
      - - - - - - -
    • - {{#each equippedWeapons as |weapon key|}} -
    • - - {{weapon.name}} - {{weapon.system.ability}} - - {{perk.system.range}} - -
       
      -
      - -
      -
    • - {{/each}} -
    - -
      -
    • - -

      -
      - - - - - - - - - -
    • - {{#each feats as |feat key|}} -
    • - - {{feat.name}} - - {{upperFirst feat.system.isfeatdie}} - {{upperFirst feat.system.issl}} - {{feat.system.sl}} - -
       
      -
      - -
      -
    • - {{/each}} -
    - -
      -
    • - -

      -
      -
    • - {{#each conditions as |condition key|}} -
    • - - {{condition.name}} - -
       
      -
       
      -
      - -
      -
    • - {{/each}} -
    - -
      -
    • - -

      -
      - - - - - - -
      - -
      -
    • - {{#each weapons as |weapon key|}} -
    • - - {{weapon.name}} - - - -
       
      - -
    • - {{/each}} -
    - -
      -
    • - -

      -
      - - - - - - - -
       
      -
      - -
      -
    • - {{#each armors as |armor key|}} -
    • - - {{armor.name}} - {{upper armor.system.armortype}} - {{armor.system.absorprionroll}} - -
       
      - -
    • - {{/each}} -
    - - - -
      -
    • - -

      -
      - - - -
       
      -
      - -
      - -
    • - {{#each containersTree as |equip key|}} - {{> systems/fvtt-crucible-rpg/templates/partial-actor-equipment.html equip=equip level=1}} -
        - {{#each equip.data.contents as |subgear key|}} - {{> systems/fvtt-crucible-rpg/templates/partial-actor-equipment.html equip=subgear level=2}} - {{/each}} -
      - {{/each}} -
    -
    +
    @@ -358,6 +496,11 @@ +
  • + + +
  • @@ -379,16 +522,6 @@ -
  • - - -
  • -
  • - - - -
  • @@ -397,13 +530,13 @@

    Background :

    - {{editor data.biodata.description target="system.biodata.description" button=true owner=owner + {{editor description target="system.biodata.description" button=true owner=owner editable=editable}}

    Notes :

    - {{editor data.biodata.notes target="system.biodata.notes" button=true owner=owner editable=editable}} + {{editor notes target="system.biodata.notes" button=true owner=owner editable=editable}}

    diff --git a/templates/roll-dialog-generic.html b/templates/roll-dialog-generic.html index 14ff2ec..205a410 100644 --- a/templates/roll-dialog-generic.html +++ b/templates/roll-dialog-generic.html @@ -9,21 +9,42 @@
    {{#if weapon}} -
    - Weapon : - {{weapon.name}} +
    + Weapon : + {{weapon.name}} +
    + {{#if (eq mode "damage")}} + {{#if (eq weapon.system.weapontype "special")}} +
    + Damage : + {{weapon.system.damageformula}} +
    + {{else}} +
    + Damage : + {{#if is2hands}} + {{weapon.damageFormula2Hands}} + {{else}} + {{weapon.damage}} + {{/if}} +
    + {{/if}} + + {{else}} + {{#if (eq weapon.system.weapontype "special")}}
    - Damage : - {{weapon.damageFormula}} -
    + Roll Formula : + {{weapon.system.rollformula}} +
    + {{/if}} {{/if}} -
    + {{/if}} {{#if stat}}
    - {{localize stat.label}} + {{localize stat.label}} {{#if (eq mode "save")}} {{stat.save}} {{else}} @@ -33,7 +54,7 @@ {{#if stat.istxc}}
    - Multiple weapons malus ({{mWeaponMalus}})? + Multiple weapons malus ({{mWeaponMalus}})? {{/if}}
    @@ -41,31 +62,31 @@ {{#if shield}}
    - Use shield ? : + Use shield ? :
    - {{shield.name}} : - {{shield.data.shielddie}} + {{shield.name}} : + {{shield.data.shielddie}}
    {{/if}} {{#if power}}
    - Power : + Power : {{power.name}}
    - Power Level : + Power Level : {{power.system.level}}
    {{/if}} {{#if hasBM}}
    - Bonus/Malus : + Bonus/Malus :