Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| eea83aa10e | |||
| d03c5f2c1e | |||
| 1f2d82bd0b | |||
| 151312b994 | |||
| 10e668bc71 | |||
| 0ee42aef99 | |||
| ee3a5764f0 | |||
| 28ec390020 | |||
| 86ee9a44ec | |||
| abfc4e8443 | |||
| 707a318bb7 | |||
| 368e087e0d | |||
| f2e6415f33 | |||
| 4aa22195a3 | |||
| 7e517bfb12 | |||
| 57706629e1 | |||
| 29cb687bbb | |||
| 973daae15a | |||
| ff180ddd2e |
File diff suppressed because it is too large
Load Diff
@@ -30,11 +30,15 @@ Hooks.once("init", function () {
|
||||
documents,
|
||||
}
|
||||
|
||||
CONFIG.Combat.initiative = {
|
||||
formula: '3d6 + @stats.mind.value',
|
||||
decimals: 0
|
||||
};
|
||||
|
||||
CONFIG.Actor.documentClass = documents.HellbornActor
|
||||
CONFIG.Actor.dataModels = {
|
||||
character: models.HellbornCharacter,
|
||||
vehicle: models.HellbornVehicle,
|
||||
creature: models.HellbornCreature
|
||||
enemy: models.HellbornEnemy,
|
||||
}
|
||||
|
||||
CONFIG.Item.documentClass = documents.HellbornItem
|
||||
@@ -53,8 +57,7 @@ Hooks.once("init", function () {
|
||||
// Register sheet application classes
|
||||
foundry.documents.collections.Actors.unregisterSheet("core", foundry.appv1.sheets.ActorSheet)
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-hellborn", applications.HellbornCharacterSheet , { types: ["character"], makeDefault: true })
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-hellborn", applications.HellbornVehicleSheet, { types: ["vehicle"], makeDefault: true })
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-hellborn", applications.HellbornCreatureSheet, { types: ["creature"], makeDefault: true })
|
||||
foundry.documents.collections.Actors.registerSheet("fvtt-hellborn", applications.HellbornEnemySheet, { types: ["enemy"], makeDefault: true })
|
||||
|
||||
foundry.documents.collections.Items.unregisterSheet("core", foundry.appv1.sheets.ItemSheet)
|
||||
foundry.documents.collections.Items.registerSheet("fvtt-hellborn", applications.HellbornWeaponSheet, { types: ["weapon"], makeDefault: true })
|
||||
|
||||
85
lang/en.json
85
lang/en.json
@@ -19,6 +19,22 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Enemy": {
|
||||
"FIELDS": {
|
||||
"description": {
|
||||
"label": "Description"
|
||||
},
|
||||
"notes": {
|
||||
"label": "Notes"
|
||||
},
|
||||
"flavorText": {
|
||||
"label": "Flavor Text"
|
||||
},
|
||||
"enemyType" : {
|
||||
"label": "Enemy Type"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Character": {
|
||||
"FIELDS": {
|
||||
"mortality": {
|
||||
@@ -48,6 +64,9 @@
|
||||
"age": {
|
||||
"label": "Age"
|
||||
},
|
||||
"aliases": {
|
||||
"label": "Aliases"
|
||||
},
|
||||
"birthplace": {
|
||||
"label": "Birthplace"
|
||||
},
|
||||
@@ -60,6 +79,9 @@
|
||||
"hair": {
|
||||
"label": "Hair"
|
||||
},
|
||||
"dod": {
|
||||
"label": "Date of Death"
|
||||
},
|
||||
"height": {
|
||||
"label": "Height"
|
||||
},
|
||||
@@ -318,15 +340,25 @@
|
||||
"description": {
|
||||
"label": "Description"
|
||||
},
|
||||
"enc": {
|
||||
"label": "Enc"
|
||||
},
|
||||
"techAge": {
|
||||
"label": "Tech Age"
|
||||
"quantity": {
|
||||
"label": "Quantity"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Label": {
|
||||
"addArmor": "Add Armor",
|
||||
"addPerk": "Add Perk",
|
||||
"addRitual": "Add Ritual",
|
||||
"addSpeciesTrait": "Add Trait",
|
||||
"addTarot": "Add Tarot",
|
||||
"addMalefica": "Add Malefica",
|
||||
"addTrait": "Add Trait",
|
||||
"newMalefica": "New Malefica",
|
||||
"newPerk": "New Perk",
|
||||
"newRitual": "New Ritual",
|
||||
"newSpeciesTrait": "New Trait",
|
||||
"newTarot": "New Tarot",
|
||||
"titleStat": "Stat Roll Dialog",
|
||||
"difficulty": "Difficulty",
|
||||
"unknown": "Unknown",
|
||||
"statRoll": "Stat Roll",
|
||||
@@ -360,10 +392,10 @@
|
||||
"combat": "Combat",
|
||||
"Counters": "Counters",
|
||||
"creature": "Creature",
|
||||
"fiendishSuccess": "Fiendish Failure",
|
||||
"fiendishFailure": "Fiendish Failure",
|
||||
"satanicSuccess": "Satanic Success",
|
||||
"bonus": "Bonus",
|
||||
"penalty": "Penalty",
|
||||
"bonus": "Upright XP Trigger",
|
||||
"penalty": "Reversed XP Trigger",
|
||||
"quote": "Quote",
|
||||
"current": "Curr.",
|
||||
"damage": "Damage",
|
||||
@@ -447,9 +479,27 @@
|
||||
},
|
||||
"Malefica": {
|
||||
"FIELDS": {
|
||||
"duration": {
|
||||
"label": "Duration"
|
||||
},
|
||||
"maintain": {
|
||||
"label": "Maintain"
|
||||
},
|
||||
"choiceMaintainDuration": {
|
||||
"label": "Choice Maintain/Duration"
|
||||
},
|
||||
"description": {
|
||||
"label": "Description"
|
||||
},
|
||||
"hasDamage": {
|
||||
"label": "Has Damage"
|
||||
},
|
||||
"damage": {
|
||||
"label": "Damage"
|
||||
},
|
||||
"damageType": {
|
||||
"label": "Damage Type"
|
||||
},
|
||||
"domain": {
|
||||
"label": "Domain"
|
||||
},
|
||||
@@ -530,7 +580,10 @@
|
||||
"Tarot": {
|
||||
"FIELDS": {
|
||||
"bonus": {
|
||||
"label": "Bonus"
|
||||
"label": "Upright XP Trigger"
|
||||
},
|
||||
"penalty": {
|
||||
"label": "Reversed XP Trigger"
|
||||
},
|
||||
"description": {
|
||||
"label": "Description"
|
||||
@@ -593,6 +646,12 @@
|
||||
},
|
||||
"Weapon": {
|
||||
"FIELDS": {
|
||||
"stat": {
|
||||
"label": "Stat"
|
||||
},
|
||||
"damageStat": {
|
||||
"label": "Damage Stat"
|
||||
},
|
||||
"ammo": {
|
||||
"label": "Ammo"
|
||||
},
|
||||
@@ -602,6 +661,9 @@
|
||||
"damage": {
|
||||
"label": "Damage"
|
||||
},
|
||||
"damageType": {
|
||||
"label": "Damage Type"
|
||||
},
|
||||
"description": {
|
||||
"label": "Description"
|
||||
},
|
||||
@@ -640,8 +702,7 @@
|
||||
"TYPES": {
|
||||
"Actor": {
|
||||
"character": "Character",
|
||||
"creature": "Creature",
|
||||
"vehicle": "Vehicle"
|
||||
"enemy": "Enemy"
|
||||
},
|
||||
"Item": {
|
||||
"armor": "Armor",
|
||||
@@ -650,7 +711,7 @@
|
||||
"malefica": "Malefica",
|
||||
"perk": "Perk",
|
||||
"ritual": "Ritual",
|
||||
"species-trait": "Species Trait",
|
||||
"species-trait": "Trait",
|
||||
"tarot": "Tarot",
|
||||
"weapon": "Weapon"
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
export { default as HellbornWeaponSheet } from "./sheets/weapon-sheet.mjs"
|
||||
export { default as HellbornVehicleSheet } from "./sheets/vehicle-sheet.mjs"
|
||||
export { default as HellbornCharacterSheet } from "./sheets/character-sheet.mjs"
|
||||
export { default as HellbornEquipmentSheet } from "./sheets/equipment-sheet.mjs"
|
||||
export { default as HellbornCreatureSheet } from "./sheets/creature-sheet.mjs"
|
||||
export { default as HellbornEnemySheet } from "./sheets/enemy-sheet.mjs"
|
||||
export { default as HellbornRitualSheet } from "./sheets/ritual-sheet.mjs"
|
||||
export { default as HellbornItemSheet } from "./sheets/base-item-sheet.mjs"
|
||||
export { default as HellbornSpeciesTraitSheet } from "./sheets/species-trait-sheet.mjs"
|
||||
|
||||
@@ -32,7 +32,10 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found
|
||||
editImage: HellbornActorSheet.#onEditImage,
|
||||
toggleSheet: HellbornActorSheet.#onToggleSheet,
|
||||
edit: HellbornActorSheet.#onItemEdit,
|
||||
delete: HellbornActorSheet.#onItemDelete
|
||||
delete: HellbornActorSheet.#onItemDelete,
|
||||
updateCheckboxArray: HellbornActorSheet.#onUpdateCheckboxArray,
|
||||
toChat: HellbornActorSheet.#toChat,
|
||||
|
||||
},
|
||||
}
|
||||
|
||||
@@ -136,7 +139,7 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found
|
||||
* @param {DragEvent} event The originating DragEvent
|
||||
* @protected
|
||||
*/
|
||||
_onDragOver(event) {}
|
||||
_onDragOver(event) { }
|
||||
|
||||
async _onDropItem(item) {
|
||||
console.log("Dropped item", item)
|
||||
@@ -184,6 +187,46 @@ export default class HellbornActorSheet extends HandlebarsApplicationMixin(found
|
||||
return fp.browse()
|
||||
}
|
||||
|
||||
static #onUpdateCheckboxArray(event, target) {
|
||||
console.log("Update checkbox array", event, target)
|
||||
let arrayName = target.dataset.name
|
||||
let arrayIdx = Number(target.dataset.index)
|
||||
let dataPath = `system.mortality.${arrayName}`
|
||||
let tab = foundry.utils.duplicate(this.document.system.mortality[arrayName])
|
||||
tab[arrayIdx] = target.checked
|
||||
this.actor.update({ [dataPath]: tab })
|
||||
}
|
||||
|
||||
static async #toChat(event, target) {
|
||||
const itemUuid = target.getAttribute("data-item-uuid")
|
||||
const item = fromUuidSync(itemUuid)
|
||||
if (!item) return
|
||||
let content = ""
|
||||
if (item.type === "perk") {
|
||||
content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/chat-perk.hbs", item.toObject())
|
||||
}
|
||||
if (item.type === "malefica") {
|
||||
content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/chat-malefica.hbs", item.toObject())
|
||||
}
|
||||
if (item.type === "ritual") {
|
||||
content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/chat-ritual.hbs", item.toObject())
|
||||
}
|
||||
if (item.type === "species-trait") {
|
||||
content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/chat-trait.hbs", item.toObject())
|
||||
}
|
||||
if (item.type === "tarot") {
|
||||
content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-hellborn/templates/chat-tarot.hbs", item.toObject())
|
||||
}
|
||||
const chatData = {
|
||||
user: game.user.id,
|
||||
speaker: ChatMessage.getSpeaker({ actor: this.actor }),
|
||||
content: content,
|
||||
type: CONST.CHAT_MESSAGE_TYPES.OTHER,
|
||||
}
|
||||
ChatMessage.create(chatData, { renderSheet: false })
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit an existing item within the Actor
|
||||
* Start with the uuid, if it's not found, fallback to the id (as Embedded item in the actor)
|
||||
|
||||
@@ -18,6 +18,7 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
||||
createDeal: HellbornCharacterSheet.#onCreateDeal,
|
||||
createMalefica: HellbornCharacterSheet.#onCreateMalefica,
|
||||
createRitual: HellbornCharacterSheet.#onCreateRitual,
|
||||
createPerk: HellbornCharacterSheet.#onCreatePerk,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -89,12 +90,24 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
||||
case "status":
|
||||
context.tab = context.tabs.status
|
||||
context.perks = doc.itemTypes.perk
|
||||
context.perks.sort((a, b) => a.name.localeCompare(b.name))
|
||||
// Sort the perks by system.role and then by the system.level
|
||||
context.perks.sort((a, b) => {
|
||||
if (a.system.role === b.system.role) {
|
||||
return a.system.level.localeCompare(b.system.level)
|
||||
}
|
||||
return a.system.role.localeCompare(b.system.role)
|
||||
})
|
||||
break;
|
||||
case "maleficas":
|
||||
context.tab = context.tabs.maleficas
|
||||
context.maleficas = doc.itemTypes.malefica
|
||||
context.maleficas.sort((a, b) => a.name.localeCompare(b.name))
|
||||
// Sort the maleficas by system.domain and then by the system.level
|
||||
context.maleficas.sort((a, b) => {
|
||||
if (a.system.domain === b.system.domain) {
|
||||
return a.system.level.localeCompare(b.system.level)
|
||||
}
|
||||
return a.system.domain.localeCompare(b.system.domain)
|
||||
})
|
||||
context.rituals = doc.itemTypes.ritual
|
||||
context.rituals.sort((a, b) => a.name.localeCompare(b.name))
|
||||
break
|
||||
@@ -124,7 +137,6 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
||||
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.notes, { async: true })
|
||||
break
|
||||
}
|
||||
console.log("context", context)
|
||||
return context
|
||||
}
|
||||
|
||||
@@ -153,6 +165,9 @@ export default class HellbornCharacterSheet extends HellbornActorSheet {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newArmor"), type: "armor" }])
|
||||
}
|
||||
|
||||
static #onCreatePerk(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newPerk"), type: "perk" }])
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -22,7 +22,7 @@ export default class HellbornDealSheet extends HellbornItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,38 @@
|
||||
import HellbornActorSheet from "./base-actor-sheet.mjs"
|
||||
|
||||
export default class HellbornCreatureSheet extends HellbornActorSheet {
|
||||
export default class HellbornEnemySheet extends HellbornActorSheet {
|
||||
/** @override */
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["creature"],
|
||||
classes: ["enemy"],
|
||||
position: {
|
||||
width: 860,
|
||||
height: 620,
|
||||
},
|
||||
window: {
|
||||
contentClasses: ["creature-content"],
|
||||
contentClasses: ["enemy-content"],
|
||||
},
|
||||
actions: {
|
||||
createTrait: HellbornCreatureSheet.#onCreateTrait,
|
||||
createAbility: HellbornCreatureSheet.#onCreateAbility
|
||||
},
|
||||
createTrait: HellbornEnemySheet.#onCreateTrait,
|
||||
createEquipment: HellbornEnemySheet.#onCreateEquipment,
|
||||
createWeapon: HellbornEnemySheet.#onCreateWeapon,
|
||||
createMalefica: HellbornEnemySheet.#onCreateMalefica,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/** @override */
|
||||
static PARTS = {
|
||||
main: {
|
||||
template: "systems/fvtt-hellborn/templates/creature-main.hbs",
|
||||
template: "systems/fvtt-hellborn/templates/enemy-main.hbs",
|
||||
},
|
||||
tabs: {
|
||||
template: "templates/generic/tab-navigation.hbs",
|
||||
},
|
||||
traits: {
|
||||
template: "systems/fvtt-hellborn/templates/creature-sheet-trait.hbs",
|
||||
template: "systems/fvtt-hellborn/templates/enemy-trait.hbs",
|
||||
},
|
||||
biography: {
|
||||
template: "systems/fvtt-hellborn/templates/creature-biography.hbs",
|
||||
template: "systems/fvtt-hellborn/templates/enemy-biography.hbs",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -38,6 +41,7 @@ export default class HellbornCreatureSheet extends HellbornActorSheet {
|
||||
sheet: "traits",
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Prepare an array of form header tabs.
|
||||
* @returns {Record<string, Partial<ApplicationTab>>}
|
||||
@@ -59,9 +63,6 @@ export default class HellbornCreatureSheet extends HellbornActorSheet {
|
||||
const context = await super._prepareContext()
|
||||
context.tabs = this.#getTabs()
|
||||
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedNotes = await TextEditor.enrichHTML(this.document.system.notes, { async: true })
|
||||
|
||||
return context
|
||||
}
|
||||
|
||||
@@ -73,15 +74,19 @@ export default class HellbornCreatureSheet extends HellbornActorSheet {
|
||||
break
|
||||
case "traits":
|
||||
context.tab = context.tabs.traits
|
||||
context.abilities = doc.itemTypes["creature-ability"]
|
||||
context.abilities.sort((a, b) => a.name.localeCompare(b.name))
|
||||
context.traits = doc.itemTypes["creature-trait"]
|
||||
context.traits = doc.itemTypes["species-trait"]
|
||||
context.traits.sort((a, b) => a.name.localeCompare(b.name))
|
||||
context.weapons = doc.itemTypes.weapon
|
||||
context.weapons.sort((a, b) => a.name.localeCompare(b.name))
|
||||
context.maleficas = doc.itemTypes.malefica
|
||||
context.maleficas.sort((a, b) => a.name.localeCompare(b.name))
|
||||
context.equipments = doc.itemTypes.equipment
|
||||
context.equipments.sort((a, b) => a.name.localeCompare(b.name))
|
||||
break
|
||||
case "biography":
|
||||
context.tab = context.tabs.biography
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
|
||||
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(doc.system.description, { async: true })
|
||||
context.enrichedNotes = await foundry.applications.ux.TextEditor.implementation.enrichHTML(doc.system.notes, { async: true })
|
||||
break
|
||||
}
|
||||
return context
|
||||
@@ -93,13 +98,22 @@ export default class HellbornCreatureSheet extends HellbornActorSheet {
|
||||
* @param {HTMLElement} target The current target of the event listener.
|
||||
*/
|
||||
static #onCreateTrait(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newTrait"), type: "creature-trait" }])
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newTrait"), type: "species-trait" }])
|
||||
}
|
||||
|
||||
static #onCreateAbility(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newAbility"), type: "creature-ability" }])
|
||||
static #onCreateEquipment(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newEquipment"), type: "equipment" }])
|
||||
}
|
||||
|
||||
static #onCreateMalefica(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newMalefica"), type: "malefica" }])
|
||||
}
|
||||
|
||||
static #onCreateWeapon(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newWeapon"), type: "weapon" }])
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Handles the roll action triggered by user interaction.
|
||||
*
|
||||
@@ -117,27 +131,21 @@ export default class HellbornCreatureSheet extends HellbornActorSheet {
|
||||
async _onRoll(event, target) {
|
||||
const rollType = $(event.currentTarget).data("roll-type")
|
||||
let item
|
||||
let formula
|
||||
let roll
|
||||
switch (rollType) {
|
||||
case "skill":
|
||||
let skillId = $(event.currentTarget).data("skill-id");
|
||||
item = this.actor.system.skills[skillId];
|
||||
await this.document.system.roll(rollType, item)
|
||||
case "stat":
|
||||
{
|
||||
let statId = $(event.currentTarget).data("stat-id");
|
||||
item = this.actor.system.stats[statId];
|
||||
await this.document.system.roll(rollType, item)
|
||||
}
|
||||
break
|
||||
case "creature-damage":
|
||||
formula = this.actor.system.damage
|
||||
// Rolll the damage
|
||||
roll = new Roll(formula)
|
||||
await roll.evaluate()
|
||||
roll.toMessage( { flavor: `${this.actor.name} : Damage roll` })
|
||||
break
|
||||
case "creature-number":
|
||||
formula = this.actor.system.numberAppearing
|
||||
// Rolll the damage
|
||||
roll = new Roll(formula)
|
||||
await roll.evaluate()
|
||||
roll.toMessage({flavor: `${this.actor.name} : Number Appearing roll`})
|
||||
case "weapon":
|
||||
case "damage":
|
||||
{
|
||||
let li = $(event.currentTarget).parents(".item");
|
||||
item = this.actor.items.get(li.data("item-id"));
|
||||
await this.document.system.roll(rollType, item)
|
||||
}
|
||||
break
|
||||
default:
|
||||
throw new Error(`Unknown roll type ${rollType}`)
|
||||
@@ -22,7 +22,7 @@ export default class HellbornEquipmentSheet extends HellbornItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ export default class HellbornMaleficaSheet extends HellbornItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ export default class HellbornPerkSheet extends HellbornItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@ export default class HellbornRitualSheet extends HellbornItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ export default class HellbornSpeciesTraitSheet extends HellbornItemSheet {
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,134 +0,0 @@
|
||||
import HellbornActorSheet from "./base-actor-sheet.mjs"
|
||||
|
||||
export default class HellbornVehicleSheet extends HellbornActorSheet {
|
||||
/** @override */
|
||||
static DEFAULT_OPTIONS = {
|
||||
classes: ["vehicle"],
|
||||
position: {
|
||||
width: 680,
|
||||
height: 540,
|
||||
},
|
||||
window: {
|
||||
contentClasses: ["vehicle-content"],
|
||||
},
|
||||
actions: {
|
||||
createEquipment: HellbornVehicleSheet.#onCreateEquipment,
|
||||
createWeapon: HellbornVehicleSheet.#onCreateWeapon,
|
||||
},
|
||||
}
|
||||
|
||||
/** @override */
|
||||
static PARTS = {
|
||||
main: {
|
||||
template: "systems/fvtt-hellborn/templates/vehicle-main.hbs",
|
||||
},
|
||||
tabs: {
|
||||
template: "templates/generic/tab-navigation.hbs",
|
||||
},
|
||||
equipment: {
|
||||
template: "systems/fvtt-hellborn/templates/vehicle-equipment.hbs",
|
||||
},
|
||||
description: {
|
||||
template: "systems/fvtt-hellborn/templates/vehicle-description.hbs",
|
||||
},
|
||||
}
|
||||
|
||||
/** @override */
|
||||
tabGroups = {
|
||||
sheet: "equipment",
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare an array of form header tabs.
|
||||
* @returns {Record<string, Partial<ApplicationTab>>}
|
||||
*/
|
||||
#getTabs() {
|
||||
const tabs = {
|
||||
equipment: { id: "equipment", group: "sheet", icon: "fa-solid fa-shapes", label: "HELLBORN.Label.equipment" },
|
||||
description: { id: "description", group: "sheet", icon: "fa-solid fa-book", label: "HELLBORN.Label.description" },
|
||||
}
|
||||
for (const v of Object.values(tabs)) {
|
||||
v.active = this.tabGroups[v.group] === v.id
|
||||
v.cssClass = v.active ? "active" : ""
|
||||
}
|
||||
return tabs
|
||||
}
|
||||
|
||||
/** @override */
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.tabs = this.#getTabs()
|
||||
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(this.document.system.description, { async: true })
|
||||
context.enrichedNotes = await TextEditor.enrichHTML(this.document.system.notes, { async: true })
|
||||
|
||||
return context
|
||||
}
|
||||
|
||||
_generateTooltip(type, target) {
|
||||
}
|
||||
|
||||
/** @override */
|
||||
async _preparePartContext(partId, context) {
|
||||
const doc = this.document
|
||||
switch (partId) {
|
||||
case "main":
|
||||
break
|
||||
case "equipment":
|
||||
context.tab = context.tabs.equipment
|
||||
context.weapons = doc.itemTypes.weapon
|
||||
context.weapons.sort((a, b) => a.name.localeCompare(b.name))
|
||||
context.equipments = doc.itemTypes.equipment
|
||||
context.equipments.sort((a, b) => a.name.localeCompare(b.name))
|
||||
break
|
||||
case "description":
|
||||
context.tab = context.tabs.description
|
||||
context.enrichedDescription = await TextEditor.enrichHTML(doc.system.description, { async: true })
|
||||
context.enrichedNotes = await TextEditor.enrichHTML(doc.system.notes, { async: true })
|
||||
break
|
||||
}
|
||||
return context
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new attack item directly from the sheet and embeds it into the document.
|
||||
* @param {Event} event The initiating click event.
|
||||
* @param {HTMLElement} target The current target of the event listener.
|
||||
*/
|
||||
static #onCreateEquipment(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newEquipment"), type: "equipment" }])
|
||||
}
|
||||
|
||||
static #onCreateWeapon(event, target) {
|
||||
this.document.createEmbeddedDocuments("Item", [{ name: game.i18n.localize("HELLBORN.Label.newWeapon"), type: "weapon" }])
|
||||
}
|
||||
|
||||
async _onRoll(event, target) {
|
||||
const rollType = $(event.currentTarget).data("roll-type")
|
||||
let item
|
||||
let li
|
||||
switch (rollType) {
|
||||
case "damage":
|
||||
li = $(event.currentTarget).parents(".item");
|
||||
item = this.actor.items.get(li.data("item-id"));
|
||||
break
|
||||
default:
|
||||
throw new Error(`Unknown roll type ${rollType}`)
|
||||
}
|
||||
await this.document.system.roll(rollType, item)
|
||||
}
|
||||
|
||||
|
||||
async _onDrop(event) {
|
||||
if (!this.isEditable || !this.isEditMode) return
|
||||
const data = TextEditor.getDragEventData(event)
|
||||
|
||||
// Handle different data types
|
||||
switch (data.type) {
|
||||
case "Item":
|
||||
const item = await fromUuid(data.uuid)
|
||||
return super._onDropItem(item)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -18,4 +18,10 @@ export default class HellbornWeaponSheet extends HellbornItemSheet {
|
||||
template: "systems/fvtt-hellborn/templates/weapon.hbs",
|
||||
},
|
||||
}
|
||||
|
||||
async _prepareContext() {
|
||||
const context = await super._prepareContext()
|
||||
context.enrichedDescription = await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.document.system.description, { async: true })
|
||||
return context
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,6 +59,7 @@ export const PERK_ROLES = {
|
||||
"sentinel": { id: "sentinel", label: "Sentinel" },
|
||||
"slayer": { id: "slayer", label: "Slayer" },
|
||||
"wretch": { id: "wretch", label: "Wretch" },
|
||||
"other": { id: "other", label: "Other" },
|
||||
}
|
||||
|
||||
export const MALEFICA_DOMAINS = {
|
||||
@@ -69,6 +70,7 @@ export const MALEFICA_DOMAINS = {
|
||||
"speculo": { id: "speculo", label: "Speculo" },
|
||||
"vinculum": { id: "vinculum", label: "Vinculum" },
|
||||
"vita": { id: "vita", label: "Vita" },
|
||||
"other": { id: "other", label: "Other" },
|
||||
}
|
||||
|
||||
export const PERK_LEVELS = {
|
||||
@@ -90,6 +92,20 @@ export const WEAPON_TYPES = {
|
||||
"ranged": { id: "ranged", label: "Ranged" },
|
||||
}
|
||||
|
||||
export const AMMO_TYPES = {
|
||||
"blessed": { id: "blessed", label: "Blessed" },
|
||||
"hollow-points": { id: "hollow-points", label: "Hollow" },
|
||||
"incendiary": { id: "incendiary", label: "Incendiary" },
|
||||
"poisoned": { id: "poisoned", label: "Poisoned" },
|
||||
"rubber": { id: "rubber", label: "Rubber" },
|
||||
"tesla": { id: "tesla", label: "Tesla" },
|
||||
}
|
||||
|
||||
export const ENEMY_TYPES = {
|
||||
"mook": { id: "mook", label: "Mook" },
|
||||
"elite": { id: "elite", label: "Elite" },
|
||||
"legendary": { id: "legendary", label: "Legendary" }
|
||||
}
|
||||
|
||||
/**
|
||||
* Include all constant definitions within the SYSTEM global export
|
||||
@@ -98,12 +114,14 @@ export const WEAPON_TYPES = {
|
||||
export const SYSTEM = {
|
||||
id: SYSTEM_ID,
|
||||
AILMENTS,
|
||||
ENEMY_TYPES,
|
||||
STATS,
|
||||
PERK_ROLES,
|
||||
PERK_LEVELS,
|
||||
MALEFICA_LEVELS,
|
||||
MALEFICA_DOMAINS,
|
||||
WEAPON_TYPES,
|
||||
AMMO_TYPES,
|
||||
DIFFICULTY_CHOICES,
|
||||
CHOICE_ADVANTAGES_DISADVANTAGES,
|
||||
ASCII
|
||||
|
||||
@@ -84,29 +84,30 @@ export default class HellbornRoll extends Roll {
|
||||
static async prompt(options = {}) {
|
||||
let formula = `3D6 + 0D6KH - 0D6KH + ${options?.rollItem?.value}`
|
||||
|
||||
let actor = game.actors.get(options.actorId)
|
||||
switch (options.rollType) {
|
||||
case "stat":
|
||||
break
|
||||
case "damage":
|
||||
{
|
||||
let formula = options.rollItem.system.damage
|
||||
if (options.rollItem?.system?.damageStat && options.rollItem.system.damageStat !== "none" && options.rollItem.system.damageStat !== "") {
|
||||
let statKey = options.rollItem.system?.damageStat.toLowerCase()
|
||||
let statValue = actor.system.stats[statKey].value
|
||||
formula = `${formula} + ${statValue}`
|
||||
}
|
||||
let damageRoll = new Roll(formula)
|
||||
await damageRoll.evaluate()
|
||||
await damageRoll.toMessage({
|
||||
flavor: `${options.rollItem.name} - Damage Roll`
|
||||
flavor: `<div class="flavor-text-damage"><h2>${options.rollItem.name}</h2>
|
||||
<BR><span class="chat-damage-type"><span>${options.rollItem.system.damageType}</span></span></div>`,
|
||||
});
|
||||
return
|
||||
}
|
||||
case "weapon":
|
||||
{
|
||||
let actor = game.actors.get(options.actorId)
|
||||
options.weapon = foundry.utils.duplicate(options.rollItem)
|
||||
let statKey = "skin"
|
||||
if (options.weapon.system.weaponType === "melee") {
|
||||
if ( options.weapon.system.properties.toLowerCase().match("heavy") || options.weapon.system.properties.toLowerCase().match("oversized")) {
|
||||
statKey = "flesh"
|
||||
}
|
||||
}
|
||||
let statKey = options.weapon.system.stat.toLowerCase()
|
||||
options.rollItem = actor.system.stats[statKey]
|
||||
}
|
||||
break
|
||||
@@ -135,11 +136,10 @@ export default class HellbornRoll extends Roll {
|
||||
fullFormula: formula,
|
||||
rollModes,
|
||||
fieldRollMode,
|
||||
difficultyChoices: SYSTEM.DIFFICULTY_CHOICES,
|
||||
choiceAdvantages: SYSTEM.CHOICE_ADVANTAGES_DISADVANTAGES,
|
||||
choiceDisadvantages: SYSTEM.CHOICE_ADVANTAGES_DISADVANTAGES,
|
||||
hasTarget: options.hasTarget,
|
||||
difficulty: "unknown",
|
||||
difficulty: "0",
|
||||
nbAdvantages: "0",
|
||||
nbDisadvantages: "0",
|
||||
}
|
||||
@@ -200,7 +200,17 @@ export default class HellbornRoll extends Roll {
|
||||
|
||||
options.nbAdvantages = Number(options.nbAdvantages)
|
||||
options.nbDisadvantages = Number(options.nbDisadvantages)
|
||||
let diceFormula = `3D6 + ${options.nbAdvantages}D6kh - ${options.nbDisadvantages}D6kh + ${options.rollItem.value}`
|
||||
let dice = 3;
|
||||
let keep = ""
|
||||
if ( options.nbAdvantages > 0 || options.nbDisadvantages > 0) {
|
||||
dice = 4;
|
||||
if ( options.nbAdvantages > options.nbDisadvantages) {
|
||||
keep = "kh3"
|
||||
} else {
|
||||
keep = "kl3"
|
||||
}
|
||||
}
|
||||
let diceFormula = `${dice}D6${keep} + ${options.rollItem.value}`
|
||||
const roll = new this(diceFormula, options.data, rollData)
|
||||
await roll.evaluate()
|
||||
console.log("Roll", rollData, roll)
|
||||
@@ -220,22 +230,30 @@ export default class HellbornRoll extends Roll {
|
||||
} else if (this.total >= options.difficulty) {
|
||||
resultType = "success"
|
||||
}
|
||||
|
||||
// Compute the result quality
|
||||
this.options.satanicSuccess = false
|
||||
this.options.fiendishFailure = false
|
||||
this.options.rollData = foundry.utils.duplicate(rollData)
|
||||
if (resultType === "success") {
|
||||
let nb6 = roll.terms[0].results.filter(r => r.result === 6).length
|
||||
nb6 += roll.terms[3].total === 6 ? 1 : 0
|
||||
this.options.satanicSuccess = nb6 >= 3
|
||||
|
||||
// Check if all results are equal
|
||||
let workResults = foundry.utils.duplicate(roll.terms[0].results)
|
||||
// Get the most common result of the roll
|
||||
let commonResult = workResults.reduce((acc, r) => {
|
||||
acc[r.result] = (acc[r.result] || 0) + 1
|
||||
return acc
|
||||
}, {})
|
||||
commonResult = Object.entries(commonResult).reduce((a, b) => (a[1] > b[1]) ? a : b)[0]
|
||||
let nbEqual = workResults.filter(r => Number(r.result) === Number(commonResult)).length
|
||||
|
||||
if (commonResult >= 4 && nbEqual >= 3) {
|
||||
this.options.satanicSuccess = true
|
||||
if (this.options.satanicSuccess) {
|
||||
resultType = "success"
|
||||
}
|
||||
}
|
||||
if (resultType === "failure") {
|
||||
let nb1 = roll.terms[0].results.filter(r => r.result === 1).length
|
||||
nb1 += roll.terms[5].total === 1 ? 1 : 0
|
||||
this.options.fiendishFailure = nb1 >= 3
|
||||
if (commonResult <= 3 && nbEqual >= 3) {
|
||||
this.options.fiendishFailure = true
|
||||
if (this.options.fiendishFailure) {
|
||||
resultType = "failure"
|
||||
}
|
||||
@@ -243,6 +261,7 @@ export default class HellbornRoll extends Roll {
|
||||
this.options.resultType = resultType
|
||||
this.options.isSuccess = resultType === "success"
|
||||
this.options.isFailure = resultType === "failure"
|
||||
this.options.results = roll.terms[0].results
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
export { default as HellbornCreature } from "./creature.mjs"
|
||||
export { default as HellbornVehicle } from "./vehicle.mjs"
|
||||
export { default as HellbornEnemy } from "./enemy.mjs"
|
||||
export { default as HellbornCharacter } from "./character.mjs"
|
||||
export { default as HellbornEquipment } from "./equipment.mjs"
|
||||
export { default as HellbornRitual } from "./ritual.mjs"
|
||||
|
||||
@@ -59,7 +59,25 @@ export default class HellbornActor extends foundry.abstract.TypeDataModel {
|
||||
schema.limboes = new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||
schema.ammo = new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||
|
||||
const ammoField = (label) => {
|
||||
const schema = {
|
||||
label: new fields.StringField({ required: true, initial: label }),
|
||||
value: new fields.StringField({ required: true, initial: "" }),
|
||||
}
|
||||
return new fields.SchemaField(schema, { label })
|
||||
}
|
||||
schema.ammoArray = new fields.SchemaField(
|
||||
Object.values(SYSTEM.AMMO_TYPES).reduce((obj, ammo) => {
|
||||
obj[ammo.id] = ammoField(ammo.label)
|
||||
return obj
|
||||
}, {}),
|
||||
)
|
||||
|
||||
schema.mortality = new fields.SchemaField({
|
||||
/* Enabled: Array of 5 boolean field */
|
||||
enabled: new fields.ArrayField(new fields.BooleanField(),
|
||||
{ required: true, initial: [false, false, false, false, false], min:5, max:5 }),
|
||||
|
||||
current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
})
|
||||
@@ -94,16 +112,16 @@ export default class HellbornActor extends foundry.abstract.TypeDataModel {
|
||||
})
|
||||
|
||||
schema.biodata = new fields.SchemaField({
|
||||
age: new fields.NumberField({ ...requiredInteger, initial: 15, min: 6 }),
|
||||
age: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
gender: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
height: new fields.NumberField({ ...requiredInteger, initial: 170, min: 50 }),
|
||||
height: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
eyes: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
birthplace: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
hair: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
home: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
weight: new fields.NumberField({ ...requiredInteger, initial: 70, min: 1 }),
|
||||
apparentAge: new fields.NumberField({ ...requiredInteger, initial: 20, min: 1 }),
|
||||
chronologicalAge: new fields.NumberField({ ...requiredInteger, initial: 20, min: 1 }),
|
||||
weight: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
apparentAge: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
chronologicalAge: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
dod: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
soul: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
aliases: new fields.StringField({ required: true, nullable: false, initial: "" })
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
import { SYSTEM } from "../config/system.mjs"
|
||||
import HellbornRoll from "../documents/roll.mjs"
|
||||
|
||||
export default class HellbornCreature extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields
|
||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||
const schema = {}
|
||||
|
||||
|
||||
schema.terrain = new fields.StringField({ required: true, nullable: false, initial: "cave", choices: SYSTEM.CREATURE_TERRAIN_TYPES })
|
||||
schema.niche = new fields.StringField({ required: true, nullable: false, initial: "prey", choices: SYSTEM.CREATURE_NICHES })
|
||||
schema.size = new fields.StringField({ required: true, nullable: false, initial: "small", choices: SYSTEM.CREATURE_SIZES })
|
||||
|
||||
schema.numberAppearing = new fields.StringField({ required: true, initial: "1d6" })
|
||||
schema.health = new fields.SchemaField({
|
||||
staminaValue: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||
staminaMax: new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 }),
|
||||
})
|
||||
schema.damage = new fields.StringField({ required: true, initial: "1d6" })
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
||||
|
||||
return schema
|
||||
}
|
||||
|
||||
/** @override */
|
||||
static LOCALIZATION_PREFIXES = ["HELLBORN.Creature"]
|
||||
|
||||
isEncumbered() {
|
||||
return false
|
||||
}
|
||||
|
||||
async roll(rollType, rollItem) {
|
||||
let opponentTarget
|
||||
const hasTarget = opponentTarget !== undefined
|
||||
|
||||
let roll = await HellbornRoll.prompt({
|
||||
rollType,
|
||||
rollItem,
|
||||
actorId: this.parent.id,
|
||||
actorName: this.parent.name,
|
||||
actorImage: this.parent.img,
|
||||
traits: this.parent.items.filter(i => i.type === "creature-trait" && i.system.isAdvantage),
|
||||
abilities: this.parent.items.filter(i => i.type === "creature-ability" && i.system.isAdvantage),
|
||||
isEncumbered: this.isEncumbered(),
|
||||
hasTarget,
|
||||
target: opponentTarget
|
||||
})
|
||||
if (!roll) return null
|
||||
|
||||
await roll.toMessage({}, { rollMode: roll.options.rollMode })
|
||||
}
|
||||
|
||||
}
|
||||
103
module/models/enemy.mjs
Normal file
103
module/models/enemy.mjs
Normal file
@@ -0,0 +1,103 @@
|
||||
import { SYSTEM } from "../config/system.mjs"
|
||||
import HellbornRoll from "../documents/roll.mjs"
|
||||
|
||||
export default class HellbornEnemy extends foundry.abstract.TypeDataModel {
|
||||
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields
|
||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||
const schema = {}
|
||||
|
||||
schema.enemyType = new fields.StringField({
|
||||
required: true,
|
||||
initial: "mook",
|
||||
choices: SYSTEM.ENEMY_TYPES
|
||||
})
|
||||
|
||||
const statField = (label) => {
|
||||
const schema = {
|
||||
label: new fields.StringField({ required: true, initial: label }),
|
||||
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
|
||||
}
|
||||
return new fields.SchemaField(schema, { label })
|
||||
}
|
||||
|
||||
schema.stats = new fields.SchemaField(
|
||||
Object.values(SYSTEM.STATS).reduce((obj, stat) => {
|
||||
obj[stat.id] = statField(stat.label)
|
||||
return obj
|
||||
}, {}),
|
||||
)
|
||||
schema.flavorText = new fields.StringField({ required: true, initial: "", textSearch: true })
|
||||
|
||||
schema.trauma = new fields.SchemaField({
|
||||
current: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||
max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||
})
|
||||
|
||||
schema.darkness = new fields.SchemaField({
|
||||
current: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||
max: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||
value: new fields.NumberField({ ...requiredInteger, initial: 1, min: 0 }),
|
||||
})
|
||||
|
||||
// Ailments
|
||||
const ailmentField = (label) => {
|
||||
const schema = {
|
||||
enabled: new fields.BooleanField({ required: true, initial: false }),
|
||||
label: new fields.StringField({ required: true, initial: label })
|
||||
}
|
||||
return new fields.SchemaField(schema, { label })
|
||||
}
|
||||
schema.ailments = new fields.SchemaField(
|
||||
Object.values(SYSTEM.AILMENTS).reduce((obj, ailment) => {
|
||||
obj[ailment.id] = ailmentField(ailment.label)
|
||||
return obj
|
||||
}, {}),
|
||||
)
|
||||
|
||||
schema.defense = new fields.SchemaField({
|
||||
base: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
bonus: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
total: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
resistance: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
maleficDR: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
resilience: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
})
|
||||
|
||||
schema.movement = new fields.SchemaField({
|
||||
base: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
reduce: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
})
|
||||
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
||||
|
||||
return schema
|
||||
}
|
||||
|
||||
/** @override */
|
||||
static LOCALIZATION_PREFIXES = ["HELLBORN.Enemy"]
|
||||
|
||||
async roll(rollType, rollItem) {
|
||||
let opponentTarget
|
||||
const hasTarget = opponentTarget !== undefined
|
||||
|
||||
let roll = await HellbornRoll.prompt({
|
||||
rollType,
|
||||
rollItem,
|
||||
actorId: this.parent.id,
|
||||
actorName: this.parent.name,
|
||||
actorImage: this.parent.img,
|
||||
traits: this.parent.items.filter(i => i.type === "trait"),
|
||||
hasTarget,
|
||||
target: opponentTarget
|
||||
})
|
||||
if (!roll) return null
|
||||
|
||||
await roll.toMessage({}, { rollMode: roll.options.rollMode })
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,6 +8,7 @@ export default class HellbornEquipment extends foundry.abstract.TypeDataModel {
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
|
||||
schema.quantity = new fields.NumberField({ required: true, initial: 1, min: 0, integer: true })
|
||||
schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
||||
|
||||
return schema
|
||||
|
||||
@@ -11,6 +11,14 @@ export default class HellbornMalefica extends foundry.abstract.TypeDataModel {
|
||||
schema.domain = new fields.StringField({ required: true, nullable: false, choices: SYSTEM.MALEFICA_DOMAINS, initial: "adfectus" })
|
||||
schema.level = new fields.StringField({ required: true, nullable: false, choices: SYSTEM.MALEFICA_LEVELS, initial: "1" })
|
||||
schema.time = new fields.StringField({ required: true, initial : "" })
|
||||
|
||||
schema.choiceMaintainDuration = new fields.StringField({ required: true, initial : "maintain", choices: {"maintain": "Maintain", "duration": "Duration"} })
|
||||
schema.duration = new fields.StringField({ required: true, initial : "" })
|
||||
schema.maintain = new fields.StringField({ required: true, initial : "" })
|
||||
|
||||
schema.hasDamage = new fields.BooleanField({ required: true, initial: false })
|
||||
schema.damage = new fields.StringField({ required: false, initial : "" })
|
||||
schema.damageType = new fields.StringField({ required: false, initial : "" })
|
||||
schema.range = new fields.StringField({ required: true, initial : "" })
|
||||
schema.target = new fields.StringField({ required: true, initial : "" })
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ export default class HellbornTarot extends foundry.abstract.TypeDataModel {
|
||||
schema.bonus = new fields.StringField({ required: true, nullable: false, initial: "" });
|
||||
schema.penalty = new fields.StringField({ required: true, nullable: false, initial: "" });
|
||||
|
||||
schema.orientation = new fields.StringField({ required: true, initial: "Upright", choices: {"Upright": {label: "Upright"}, "Downright": {label: "Downright"}} });
|
||||
schema.orientation = new fields.StringField({ required: true, initial: "Upright", choices: {"Upright": {label: "Upright"}, "Downright": {label: "Reversed"}} });
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.positiveEffect = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.negativeEffect = new fields.HTMLField({ required: true, textSearch: true })
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
import { SYSTEM } from "../config/system.mjs"
|
||||
import HellbornRoll from "../documents/roll.mjs"
|
||||
|
||||
export default class HellbornVehicle extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
const fields = foundry.data.fields
|
||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||
const schema = {}
|
||||
|
||||
schema.agility = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
schema.armor = new fields.StringField({ required: true, initial: "" })
|
||||
schema.cargo = new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
|
||||
schema.crew = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 })
|
||||
schema.force = new fields.NumberField({ ...requiredInteger, initial: 1, min: 1 })
|
||||
schema.range = new fields.StringField({ required: true, initial: "1d6" })
|
||||
schema.speed = new fields.StringField({ required: true, initial: "1d6" })
|
||||
schema.techAge = new fields.StringField({ required: true, initial: "1d6" })
|
||||
schema.tonnage = new fields.NumberField({ required: true, initial: 1, min: 0 })
|
||||
schema.damages = new fields.StringField({ required: true, initial: "" })
|
||||
|
||||
schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.notes = new fields.HTMLField({ required: true, textSearch: true })
|
||||
|
||||
return schema
|
||||
}
|
||||
|
||||
/** @override */
|
||||
static LOCALIZATION_PREFIXES = ["HELLBORN.Vehicle"]
|
||||
|
||||
isEncumbered() {
|
||||
return false
|
||||
}
|
||||
|
||||
async roll(rollType, rollItem) {
|
||||
let opponentTarget
|
||||
const hasTarget = opponentTarget !== undefined
|
||||
|
||||
let roll = await HellbornRoll.prompt({
|
||||
rollType,
|
||||
rollItem,
|
||||
actorId: this.parent.id,
|
||||
actorName: this.parent.name,
|
||||
actorImage: this.parent.img,
|
||||
isEncumbered: this.isEncumbered(),
|
||||
hasTarget,
|
||||
target: opponentTarget
|
||||
})
|
||||
if (!roll) return null
|
||||
|
||||
await roll.toMessage({}, { rollMode: roll.options.rollMode })
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,12 +7,16 @@ export default class HellbornWeapon extends foundry.abstract.TypeDataModel {
|
||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||
|
||||
schema.description = new fields.HTMLField({ required: true, textSearch: true })
|
||||
schema.stat = new fields.StringField({ required: true, initial: "skin", choices: {"skin": "Skin", "flesh": "Flesh" }})
|
||||
|
||||
schema.weaponType = new fields.StringField({ required: true, initial: "melee", choices: SYSTEM.WEAPON_TYPES })
|
||||
schema.subType = new fields.StringField({ required: false, initial: "pistols", choices: SYSTEM.RANGED_SUBTYPES })
|
||||
schema.properties = new fields.StringField({required: true, initial: ""})
|
||||
|
||||
schema.damage = new fields.StringField({required: true, initial: "1d6"})
|
||||
schema.damageStat = new fields.StringField({ required: true, initial: "none", choices: {"none": "None", "skin": "Skin", "flesh": "Flesh", "heart": "Heart", "mind": "Mind", "soul": "Soul" }})
|
||||
schema.damageType = new fields.StringField({ required: false, initial : "Physical" })
|
||||
|
||||
schema.ammo = new fields.StringField({ required: false, initial: "" })
|
||||
schema.range = new fields.StringField({ required: false, initial: "" })
|
||||
schema.cost = new fields.NumberField({ required: true, initial: 0, min: 0 })
|
||||
@@ -23,4 +27,14 @@ export default class HellbornWeapon extends foundry.abstract.TypeDataModel {
|
||||
/** @override */
|
||||
static LOCALIZATION_PREFIXES = ["HELLBORN.Weapon"]
|
||||
|
||||
prepareDerivedData() {
|
||||
super.prepareDerivedData();
|
||||
let actor = this.parent?.actor;
|
||||
if (actor) {
|
||||
this.damageFormula = this.damage + (this.damageStat !== "none" ? `+${actor.system.stats[this.damageStat].value}` : "");
|
||||
} else {
|
||||
this.damageFormula = this.damage;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -172,16 +172,16 @@ export default class HellbornUtils {
|
||||
if (level=== "highpowers") return "High";
|
||||
if (level === "mastery") return "Mastery";
|
||||
level = parseInt(level);
|
||||
if (level === 0) return "I";
|
||||
if (level === 1) return "II";
|
||||
if (level === 2) return "III";
|
||||
if (level === 3) return "IV";
|
||||
if (level === 4) return "V";
|
||||
if (level === 5) return "VI";
|
||||
if (level === 6) return "VII";
|
||||
if (level === 7) return "VIII";
|
||||
if (level === 8) return "IX";
|
||||
if (level === 9) return "X";
|
||||
if (level === 0) return "0";
|
||||
if (level === 1) return "I";
|
||||
if (level === 2) return "II";
|
||||
if (level === 3) return "III";
|
||||
if (level === 4) return "IV";
|
||||
if (level === 5) return "V";
|
||||
if (level === 6) return "VI";
|
||||
if (level === 7) return "VII";
|
||||
if (level === 8) return "VIII";
|
||||
if (level === 9) return "IX";
|
||||
return level;
|
||||
})
|
||||
// Handle v12 removal of this helper
|
||||
@@ -193,21 +193,4 @@ export default class HellbornUtils {
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
static setupCSSRootVariables() {
|
||||
const era = game.settings.get("fvtt-cthulhu-eternal", "settings-era")
|
||||
|
||||
let eraCSS = SYSTEM.ERA_CSS[era];
|
||||
if (!eraCSS) eraCSS = SYSTEM.ERA_CSS["jazz"];
|
||||
|
||||
document.documentElement.style.setProperty('--font-size-standard', eraCSS.baseFontSize);
|
||||
document.documentElement.style.setProperty('--font-size-title', eraCSS.titleFontSize);
|
||||
document.documentElement.style.setProperty('--font-size-result', eraCSS.titleFontSize);
|
||||
document.documentElement.style.setProperty('--font-primary', eraCSS.primaryFont);
|
||||
document.documentElement.style.setProperty('--font-secondary', eraCSS.secondaryFont);
|
||||
document.documentElement.style.setProperty('--font-title', eraCSS.titleFont);
|
||||
document.documentElement.style.setProperty('--img-icon-color-filter', eraCSS.imgFilter);
|
||||
document.documentElement.style.setProperty('--background-image-base', `linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)), url("../assets/ui/${era}_background_main.webp")`);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
|
||||
fieldset {
|
||||
margin-top: 8px;
|
||||
background-color: var(--color-light-1);
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
}
|
||||
|
||||
.character-main {
|
||||
background-color: var(--color-light-1);
|
||||
/*background-color: var(--color-light-1);*/
|
||||
display: flex;
|
||||
|
||||
.character-pc {
|
||||
@@ -65,22 +65,35 @@
|
||||
gap: 5px;
|
||||
|
||||
.character-definition {
|
||||
.character-definition-pronouns {
|
||||
input {
|
||||
min-width: 21.2rem;
|
||||
max-width: 21.2rem;
|
||||
}
|
||||
}
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.splitted {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 4px;
|
||||
}
|
||||
label {
|
||||
max-width: 4rem;
|
||||
max-width: 5rem;
|
||||
min-width: 5rem;
|
||||
}
|
||||
input {
|
||||
min-width: 16rem;
|
||||
max-width: 16rem;
|
||||
text-align: left;
|
||||
min-width: 9rem;
|
||||
max-width: 9rem;
|
||||
margin-bottom: auto;
|
||||
}
|
||||
.trait {
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
min-width: 7rem;
|
||||
max-width: 7rem;
|
||||
margin-right: 1rem;
|
||||
margin-bottom: auto;
|
||||
}
|
||||
@@ -108,7 +121,7 @@
|
||||
}
|
||||
|
||||
.character-stats {
|
||||
background-color: var(--color-light-1);
|
||||
/*background-color: var(--color-light-1);*/
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
@@ -148,7 +161,7 @@
|
||||
}
|
||||
|
||||
.tab.character-status .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
/*background-color: var(--color-light-1);*/
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
@@ -176,6 +189,17 @@
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
.characteristics-label {
|
||||
color: grey;
|
||||
font-size: small;
|
||||
}
|
||||
label {
|
||||
min-width: 4rem;
|
||||
max-width: 4rem;
|
||||
}
|
||||
.spaced-left {
|
||||
margin-left: 0.8rem;
|
||||
}
|
||||
input {
|
||||
min-width: 2.5rem;
|
||||
max-width: 2.5rem;
|
||||
@@ -250,7 +274,7 @@
|
||||
}
|
||||
|
||||
.tab.character-maleficas .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
/*background-color: var(--color-light-1);*/
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
@@ -268,24 +292,28 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
min-width: 20rem;
|
||||
max-width: 20rem;
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 3.2rem;
|
||||
max-width: 3.2rem;
|
||||
}
|
||||
.domain {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
min-width: 4rem;
|
||||
max-width: 4rem;
|
||||
}
|
||||
.level {
|
||||
min-width: 3rem;
|
||||
max-width: 3rem;
|
||||
min-width: 2rem;
|
||||
max-width: 2rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
@@ -311,8 +339,8 @@
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.ingredients {
|
||||
min-width: 26rem;
|
||||
max-width: 26rem;
|
||||
min-width: 24rem;
|
||||
max-width: 24rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 12rem;
|
||||
@@ -340,7 +368,7 @@
|
||||
}
|
||||
|
||||
.tab.character-equipment .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
/*background-color: var(--color-light-1);*/
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
@@ -353,16 +381,26 @@
|
||||
.limboes {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
.limboes-line {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
}
|
||||
.form-group {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.ammo-quantity {
|
||||
text-align: left;
|
||||
max-width: 3rem;
|
||||
min-width: 3rem;
|
||||
}
|
||||
input {
|
||||
text-align: left;
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
}
|
||||
@@ -389,20 +427,28 @@
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.properties {
|
||||
min-width: 21rem;
|
||||
max-width: 21rem;
|
||||
min-width: 16.3rem;
|
||||
max-width: 16.3rem;
|
||||
}
|
||||
.range {
|
||||
min-width: 4.5rem;
|
||||
max-width: 4.5rem;
|
||||
}
|
||||
.ammo {
|
||||
min-width: 4.5rem;
|
||||
max-width: 4.5rem;
|
||||
}
|
||||
.type {
|
||||
min-width: 3rem;
|
||||
max-width: 3rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 4rem;
|
||||
max-width: 4rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
@@ -472,8 +518,12 @@
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.quantity {
|
||||
min-width: 2rem;
|
||||
max-width: 2rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
@@ -492,7 +542,7 @@
|
||||
}
|
||||
|
||||
.tab.character-biography .main-div {
|
||||
background-color: var(--color-light-1);
|
||||
/*background-color: var(--color-light-1);*/
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
@@ -541,6 +591,29 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.aliases {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
margin-bottom: 4px;
|
||||
margin-left: 4px;
|
||||
.form-group {
|
||||
label {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
input {
|
||||
text-align: left;
|
||||
min-width: 41rem;
|
||||
max-width: 41rem;
|
||||
}
|
||||
}
|
||||
.biodata {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
@@ -565,11 +638,8 @@
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
}
|
||||
input .tarot {
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
}
|
||||
input {
|
||||
text-align: left;
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
}
|
||||
|
||||
@@ -1,700 +0,0 @@
|
||||
.creature-content {
|
||||
.sheet-common();
|
||||
.creature-sheet-common();
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
.sheet-tabs {
|
||||
background-color: var(--color-light-1);
|
||||
}
|
||||
|
||||
.creature-main {
|
||||
background-color: var(--color-light-1);
|
||||
display: flex;
|
||||
|
||||
.creature-pc {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
flex: 1;
|
||||
|
||||
.creature-left {
|
||||
min-width: 180px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.creature-left-image {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding-bottom: 8px;
|
||||
.creature-img {
|
||||
height: 140px;
|
||||
width: auto;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
.creature-hp {
|
||||
gap: 2px;
|
||||
align-items: center;
|
||||
input {
|
||||
flex: none;
|
||||
width: 2.5rem;
|
||||
margin-left: 2px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.hp-separator {
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
.creature-dv,
|
||||
.creature-dmax {
|
||||
.form-fields {
|
||||
flex: none;
|
||||
}
|
||||
}
|
||||
.creature-dmax-edit {
|
||||
input {
|
||||
display: flex;
|
||||
width: 60px;
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0 5px 0 5px;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.creature-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
|
||||
.creature-spec {
|
||||
label {
|
||||
max-width: 8rem;
|
||||
}
|
||||
select {
|
||||
max-width: 10rem;
|
||||
}
|
||||
input {
|
||||
max-width: 6rem;
|
||||
}
|
||||
.dice-2d6 {
|
||||
max-width: 1.5rem;
|
||||
}
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.rollable {
|
||||
}
|
||||
}
|
||||
|
||||
.creature-name {
|
||||
display: flex;
|
||||
input {
|
||||
font-family: var(--font-title);
|
||||
font-size: var(--font-size-title);
|
||||
width: 400px;
|
||||
}
|
||||
}
|
||||
label {
|
||||
min-width: 120px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.creature-pc-play {
|
||||
min-width: 500px;
|
||||
}
|
||||
|
||||
.creature-pc-edit {
|
||||
min-width: 500px;
|
||||
}
|
||||
|
||||
.creature-skills {
|
||||
background-color: var(--color-light-1);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
flex: 1;
|
||||
|
||||
.creature-skill {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.icon-skill {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.rollable {
|
||||
min-width: 4.5rem;
|
||||
max-width: 4.5rem;
|
||||
}
|
||||
.char-text {
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
.d100 {
|
||||
flex: 0;
|
||||
max-width: 0.6rem;
|
||||
}
|
||||
.form-group {
|
||||
flex: 0;
|
||||
padding-left: 5px;
|
||||
.form-fields {
|
||||
font-size: 1.1rem;
|
||||
flex: none;
|
||||
width: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.creature-skill-play {
|
||||
min-width: 225px;
|
||||
}
|
||||
|
||||
.creature-skill-edit {
|
||||
min-width: 225px;
|
||||
}
|
||||
}
|
||||
|
||||
.creature-biography {
|
||||
background-color: var(--color-light-1);
|
||||
prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
prose-mirror.active {
|
||||
min-height: 150px;
|
||||
}
|
||||
.field-label {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.rank {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 8px;
|
||||
label {
|
||||
min-width: 6rem;
|
||||
}
|
||||
input {
|
||||
max-width: 4rem;
|
||||
}
|
||||
}
|
||||
|
||||
.biodata {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 8px;
|
||||
label {
|
||||
min-width: 12rem;
|
||||
}
|
||||
}
|
||||
|
||||
.resources {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 8px;
|
||||
label {
|
||||
min-width: 8rem;
|
||||
}
|
||||
}
|
||||
|
||||
.features,
|
||||
.biodata {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 8px;
|
||||
label {
|
||||
min-width: 3rem;
|
||||
}
|
||||
.feature {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tab.creature-skills {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
.skills {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
.skill {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
min-width: 12.3rem;
|
||||
max-width: 12.3rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.score {
|
||||
min-width: 1.2rem;
|
||||
max-width: 1.2rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tab.creature-status {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.bonds {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.bond {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.type {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.level {
|
||||
min-width: 2rem;
|
||||
max-width: 2rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.motivations {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.motivation {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mentaldisorders {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.mentaldisorder {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
}
|
||||
.cured {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.injuries {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.injury {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 16rem;
|
||||
max-width: 16rem;
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tab.creature-traits {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.traits {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.trait {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.abilities {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.ability {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.psionics {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.psionic {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.tab.creature-equipment {
|
||||
background-color: var(--color-light-1);
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
.encumbrance {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 4px;
|
||||
input {
|
||||
max-width: 4rem;
|
||||
}
|
||||
.encumbered {
|
||||
color: red;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.implants {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.implant {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.weapons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.weapon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.armors {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 4px;
|
||||
.armor {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.protection {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.equipments {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
.equipment {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
prose-mirror.active {
|
||||
min-height: 150px;
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
fieldset {
|
||||
margin-top: 8px;
|
||||
background-color: var(--color-light-1);
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -25,7 +24,6 @@
|
||||
}
|
||||
|
||||
.header {
|
||||
background-color: var(--color-light-1);
|
||||
display: flex;
|
||||
img {
|
||||
width: 50px;
|
||||
|
||||
489
styles/enemy.less
Normal file
489
styles/enemy.less
Normal file
@@ -0,0 +1,489 @@
|
||||
.enemy-content {
|
||||
.sheet-common();
|
||||
.enemy-sheet-common();
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
.sheet-tabs {
|
||||
background-color: var(--color-light-1);
|
||||
}
|
||||
|
||||
.enemy-main {
|
||||
/*background-color: var(--color-light-1);*/
|
||||
display: flex;
|
||||
|
||||
.enemy-pc {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
flex: 1;
|
||||
|
||||
.enemy-left {
|
||||
min-width: 180px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.enemy-left-image {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding-bottom: 8px;
|
||||
.enemy-img {
|
||||
height: 140px;
|
||||
width: auto;
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
|
||||
.enemy-hp {
|
||||
gap: 2px;
|
||||
align-items: center;
|
||||
input {
|
||||
flex: none;
|
||||
width: 2.5rem;
|
||||
margin-left: 2px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.hp-separator {
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
|
||||
.enemy-dv,
|
||||
.enemy-dmax {
|
||||
.form-fields {
|
||||
flex: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.enemy-right {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
|
||||
.enemy-definition {
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.splitted {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 4px;
|
||||
}
|
||||
label {
|
||||
max-width: 5rem;
|
||||
min-width: 5rem;
|
||||
}
|
||||
input {
|
||||
text-align: left;
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
margin-bottom: auto;
|
||||
}
|
||||
.trait {
|
||||
min-width: 7rem;
|
||||
max-width: 7rem;
|
||||
margin-right: 1rem;
|
||||
margin-bottom: auto;
|
||||
}
|
||||
}
|
||||
.enemy-name {
|
||||
display: flex;
|
||||
input {
|
||||
font-family: var(--font-title);
|
||||
font-size: var(--font-size-title);
|
||||
width: 400px;
|
||||
}
|
||||
}
|
||||
label {
|
||||
min-width: 120px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.enemy-pc-play {
|
||||
min-width: 500px;
|
||||
}
|
||||
|
||||
.enemy-pc-edit {
|
||||
min-width: 500px;
|
||||
}
|
||||
|
||||
.enemy-stats {
|
||||
/*background-color: var(--color-light-1);*/
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
flex: 1;
|
||||
|
||||
.enemy-stat {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.icon-stat {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.rollable {
|
||||
min-width: 3.5rem;
|
||||
max-width: 3.5rem;
|
||||
}
|
||||
input {
|
||||
min-width: 2.5rem;
|
||||
max-width: 2.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.enemy-stats-play {
|
||||
min-width: 120px;
|
||||
}
|
||||
|
||||
.enemy-stats-edit {
|
||||
min-width: 120px;
|
||||
}
|
||||
}
|
||||
|
||||
.tab.enemy-traits .main-div {
|
||||
/*background-color: var(--color-light-1);*/
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
.enemy-column {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 4px;
|
||||
fieldset {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.mortality {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
label {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.counters {
|
||||
display: flex;
|
||||
direction: column;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
.characteristics-label {
|
||||
color: grey;
|
||||
font-size: small;
|
||||
label {
|
||||
min-width: 3.5rem;
|
||||
max-width: 3.5rem;
|
||||
}
|
||||
span {
|
||||
min-width: 3rem;
|
||||
max-width: 3rem;
|
||||
}
|
||||
}
|
||||
label {
|
||||
min-width: 4rem;
|
||||
max-width: 4rem;
|
||||
}
|
||||
.spaced-left {
|
||||
margin-left: 0.8rem;
|
||||
}
|
||||
input {
|
||||
min-width: 2.5rem;
|
||||
max-width: 2.5rem;
|
||||
}
|
||||
}
|
||||
.traits {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(1, 1fr);
|
||||
gap: 4px;
|
||||
.trait {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.equipments {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
.equipment {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ailments {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 4px;
|
||||
.ailment {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
label {
|
||||
min-width: 5rem;
|
||||
max-width: 5rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.maleficas {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(1, 1fr);
|
||||
gap: 4px;
|
||||
.malefica {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.domain {
|
||||
min-width: 4rem;
|
||||
max-width: 4rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 3.2rem;
|
||||
max-width: 3.2rem;
|
||||
}
|
||||
.level {
|
||||
min-width: 2rem;
|
||||
max-width: 2rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10em;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.weapons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(1, 1fr);
|
||||
gap: 4px;
|
||||
.weapon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
min-width: 13rem;
|
||||
max-width: 13rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.properties {
|
||||
min-width: 18rem;
|
||||
max-width: 18rem;
|
||||
}
|
||||
.range {
|
||||
min-width: 4rem;
|
||||
max-width: 4rem;
|
||||
}
|
||||
.ammo {
|
||||
min-width: 3rem;
|
||||
max-width: 3rem;
|
||||
}
|
||||
.type {
|
||||
min-width: 3rem;
|
||||
max-width: 3rem;
|
||||
}
|
||||
.damage {
|
||||
min-width: 4rem;
|
||||
max-width: 4rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tab.enemy-biography .main-div {
|
||||
/*background-color: var(--color-light-1);*/
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
.splitted-text {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 4px;
|
||||
fieldset {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.deals {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
.deal {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
min-width: 12rem;
|
||||
max-width: 12rem;
|
||||
.rollable:hover,
|
||||
.rollable:focus {
|
||||
text-shadow: 0 0 8px var(--color-shadow-primary);
|
||||
cursor: pointer;
|
||||
}
|
||||
.controls {
|
||||
font-size: 0.7rem;
|
||||
min-width: 1.8rem;
|
||||
max-width: 1.8rem;
|
||||
}
|
||||
.name {
|
||||
min-width: 10rem;
|
||||
max-width: 10rem;
|
||||
}
|
||||
.item-img {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin: 4px 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.biodata {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 4px;
|
||||
.experience {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
.form-group {
|
||||
label {
|
||||
min-width: 6rem;
|
||||
max-width: 6rem;
|
||||
}
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
gap: 4px;
|
||||
margin-left: 4px;
|
||||
min-width: 14rem;
|
||||
max-width: 14rem;
|
||||
}
|
||||
input {
|
||||
text-align: left;
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
}
|
||||
}
|
||||
|
||||
prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
prose-mirror.active {
|
||||
min-height: 150px;
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
fieldset {
|
||||
margin-top: 8px;
|
||||
background-color: var(--color-light-1);
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -22,7 +21,6 @@
|
||||
}
|
||||
|
||||
.header {
|
||||
background-color: var(--color-light-1);
|
||||
display: flex;
|
||||
img {
|
||||
width: 50px;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
@import "mixins.less";
|
||||
@import "character.less";
|
||||
@import "vehicle.less";
|
||||
@import "creature.less";
|
||||
@import "enemy.less";
|
||||
@import "weapon.less";
|
||||
@import "equipment.less";
|
||||
@import "armor.less";
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
:root {
|
||||
--font-size-standard: 0.9rem;
|
||||
--font-size-result: 1.4rem;
|
||||
--background-image-base: linear-gradient(rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0.8)),
|
||||
url("../assets/ui/sheet_background_01.webp");
|
||||
--background-image-base: url("../assets/ui/sheet_background_01.webp");
|
||||
--font-primary: "MinionProRegular";
|
||||
--font-secondary: "MinionProRegular";
|
||||
--font-title: "SupernaturalKnight";
|
||||
--logo-standard: url("../assets/ui/pentagram_logo.webp");
|
||||
--title-color: #f0443c;
|
||||
--background-box: ##e0dcdc;
|
||||
--background-box: #e0dcdc;
|
||||
--color-success: rgb(15, 122, 15);
|
||||
--color-failure: darkred;
|
||||
--color-warning: darkorange;
|
||||
@@ -16,6 +15,10 @@
|
||||
--color-critical-failure: rgb(141, 32, 231);
|
||||
}
|
||||
|
||||
body {
|
||||
--color-light-1: rgba(182, 178, 178, 0.6);
|
||||
--color-warm-1:#f0443c;
|
||||
}
|
||||
|
||||
#logo {
|
||||
content: var(--logo-standard);
|
||||
|
||||
@@ -4,12 +4,14 @@
|
||||
|
||||
fieldset {
|
||||
margin-top: 8px;
|
||||
background-color: var(--color-light-1);
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.form-group label {
|
||||
.form-fields input[type="checkbox"] {
|
||||
min-width: 2rem;
|
||||
max-width: 2rem;
|
||||
text-align: center;
|
||||
}
|
||||
.form-group input {
|
||||
min-width: 12rem;
|
||||
@@ -26,7 +28,6 @@
|
||||
}
|
||||
|
||||
.header {
|
||||
background-color: var(--color-light-1);
|
||||
display: flex;
|
||||
img {
|
||||
width: 50px;
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
.creature-sheet-common {
|
||||
.enemy-sheet-common {
|
||||
label {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1.0);
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
fieldset {
|
||||
margin-top: 8px;
|
||||
background-color: var(--color-light-1);
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -27,7 +26,6 @@
|
||||
}
|
||||
|
||||
.header {
|
||||
background-color: var(--color-light-1);
|
||||
display: flex;
|
||||
img {
|
||||
width: 50px;
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
fieldset {
|
||||
margin-top: 8px;
|
||||
background-color: var(--color-light-1);
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -25,7 +24,6 @@
|
||||
}
|
||||
|
||||
.header {
|
||||
background-color: var(--color-light-1);
|
||||
display: flex;
|
||||
img {
|
||||
width: 50px;
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
input,
|
||||
select {
|
||||
text-align: left;
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
border-color: var(--color-dark-6);
|
||||
color: var(--color-dark-2);
|
||||
@@ -53,6 +54,54 @@
|
||||
color: var(--color-dark-1);
|
||||
}
|
||||
|
||||
.item-to-chat {
|
||||
h2 {
|
||||
margin-top: 10px;
|
||||
margin-left: 10px;
|
||||
margin-bottom: 4px;
|
||||
font-family: var(--font-title);
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
color: var(--title-color);
|
||||
}
|
||||
ul {
|
||||
list-style-type: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
li {
|
||||
margin: 0 10px;
|
||||
font-family: var(--font-primary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.flavor-text-damage {
|
||||
font-family: var(--font-secondary);
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
color: var(--color-dark-2);
|
||||
margin-top: 5px;
|
||||
.chat-damage-type {
|
||||
font-weight: bold;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-bottom:0.5rem;
|
||||
}
|
||||
h2 {
|
||||
margin-top: 10px;
|
||||
margin-left: 10px;
|
||||
margin-bottom: 4px;
|
||||
font-family: var(--font-title);
|
||||
font-size: calc(var(--font-size-standard) * 1.2);
|
||||
color: var(--title-color);
|
||||
}
|
||||
}
|
||||
|
||||
&.dice-roll {
|
||||
flex-direction: column;
|
||||
|
||||
@@ -70,14 +119,25 @@
|
||||
border: 0px;
|
||||
}
|
||||
.intro-chat {
|
||||
color:var(--color-dark-1);
|
||||
color: var(--color-dark-1);
|
||||
border-radius: 20px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
h2 {
|
||||
margin-top: 10px;
|
||||
margin-left: 10px;
|
||||
margin-bottom: 4px;
|
||||
font-family: var(--font-title);
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
color: var(--title-color);
|
||||
}
|
||||
|
||||
.intro-img {
|
||||
padding: 5px;
|
||||
width: 80px;
|
||||
align-self: center;
|
||||
padding: 4px;
|
||||
max-width: 80px;
|
||||
min-width: 80px;
|
||||
align-self: top;
|
||||
text-align: center;
|
||||
}
|
||||
.intro-right {
|
||||
display: flex;
|
||||
@@ -91,10 +151,16 @@
|
||||
li {
|
||||
margin: 0 10px;
|
||||
font-family: var(--font-primary);
|
||||
font-size: calc(var(--font-size-standard) * 1.0);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
}
|
||||
.chat-roll-label {
|
||||
margin-right: 2rem;
|
||||
}
|
||||
.chat-results-spacing {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
.nudge-roll {
|
||||
font-size: calc(var(--font-size-standard) * 1.0);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
margin-left: 4rem;
|
||||
display: none;
|
||||
}
|
||||
@@ -132,6 +198,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.result {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
fieldset {
|
||||
margin-top: 8px;
|
||||
background-color: var(--color-light-1);
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -25,7 +24,6 @@
|
||||
}
|
||||
|
||||
.header {
|
||||
background-color: var(--color-light-1);
|
||||
display: flex;
|
||||
img {
|
||||
width: 50px;
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
|
||||
fieldset {
|
||||
margin-top: 8px;
|
||||
background-color: var(--color-light-1);
|
||||
legend {
|
||||
margin-top: 1rem;
|
||||
}
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -25,7 +27,6 @@
|
||||
}
|
||||
|
||||
.header {
|
||||
background-color: var(--color-light-1);
|
||||
display: flex;
|
||||
img {
|
||||
width: 50px;
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
.item-sheet-common();
|
||||
|
||||
.header {
|
||||
background-color: var(--color-light-1);
|
||||
display: flex;
|
||||
img {
|
||||
width: 50px;
|
||||
@@ -13,7 +12,6 @@
|
||||
|
||||
fieldset {
|
||||
margin-top: 8px;
|
||||
background-color: var(--color-light-1);
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@@ -34,8 +34,7 @@
|
||||
"documentTypes": {
|
||||
"Actor": {
|
||||
"character": { "htmlFields": ["backstory", "notes", "appearance", "scars", "likes", "dislikes", "fears", "vices", "goals", "ammbitions", "values", "bonds"] },
|
||||
"monster": { "htmlFields": ["description", "notes"] },
|
||||
"vehicle": { "htmlFields": ["description", "notes"] }
|
||||
"enemy": { "htmlFields": ["description", "notes"] }
|
||||
},
|
||||
"Item": {
|
||||
"perk": { "htmlFields": ["description"] },
|
||||
|
||||
@@ -4,53 +4,53 @@
|
||||
<fieldset class="biodata">
|
||||
<legend>{{localize "HELLBORN.Label.experience"}}</legend>
|
||||
<div class="experience">
|
||||
|
||||
{{formField systemFields.experience.fields.current value=system.experience.current type="number" rootId=partId
|
||||
disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.experience.fields.total value=system.experience.total type="number" rootId=partId
|
||||
disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.experience.fields.training value=system.experience.training type="number" rootId=partId
|
||||
disabled=isPlayMode}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="biodata">
|
||||
<fieldset >
|
||||
<legend>{{localize "HELLBORN.Label.biodata"}}</legend>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.gender value=system.biodata.gender rootId=partId disabled=isPlayMode}}
|
||||
<div class="aliases">
|
||||
{{formField systemFields.biodata.fields.aliases value=system.biodata.aliases rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.age value=system.biodata.age rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.height value=system.biodata.height rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.weight value=system.biodata.weight rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.eyes value=system.biodata.eyes rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.hair value=system.biodata.hair rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.home value=system.biodata.home rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.birthplace value=system.biodata.birthplace rootId=partId
|
||||
disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
<div class="form-group">
|
||||
<label>{{localize "HELLBORN.Label.tarot"}}</label>
|
||||
<input class="tarot" type="text" value="{{tarot.name}}" disabled >
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{tarot.id}}"
|
||||
data-item-uuid="{{tarot.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{tarot.id}}"
|
||||
data-item-uuid="{{tarot.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
<div class="biodata">
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.gender value=system.biodata.gender rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.age value=system.biodata.age rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.height value=system.biodata.height rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.weight value=system.biodata.weight rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.eyes value=system.biodata.eyes rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.hair value=system.biodata.hair rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.home value=system.biodata.home rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.birthplace value=system.biodata.birthplace rootId=partId
|
||||
disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="experience">
|
||||
{{formField systemFields.biodata.fields.dod value=system.biodata.dod rootId=partId
|
||||
disabled=isPlayMode}}
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
@@ -1,95 +1,115 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
<div class="main-div">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.weapons"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="weapons">
|
||||
{{#each weapons as |item|}}
|
||||
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.weapons"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="weapons">
|
||||
{{#each weapons as |item|}}
|
||||
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<i class="fa-regular fa-dice"></i>
|
||||
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<span class="type" data-tooltip="Type">{{upperFirst item.system.weaponType}}</span>
|
||||
<span class="properties" data-tooltip="Properties">{{upperFirst item.system.properties}}</span>
|
||||
|
||||
<a class="damage rollable" data-tooltip="Damage" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
||||
data-roll-value="{{item.system.damage}}">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<i class="fa-regular fa-dice"></i>
|
||||
{{item.system.damage}}</a>
|
||||
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<span class="type" data-tooltip="Type">{{upperFirst item.system.weaponType}}</span>
|
||||
<span class="properties" data-tooltip="Properties">{{upperFirst item.system.properties}}</span>
|
||||
<span class="range" data-tooltip="Range">{{upperFirst item.system.range}}</span>
|
||||
<span class="ammo" data-tooltip="Ammo">{{upperFirst item.system.ammo}}</span>
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
<a class="damage rollable" data-tooltip="Damage" data-item-id="{{item.id}}" data-action="roll"
|
||||
data-roll-type="damage" data-roll-value="{{item.system.damageFormula}}">
|
||||
<i class="fa-regular fa-dice"></i>
|
||||
{{item.system.damageFormula}}</a>
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.armors"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addArmor"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createArmor"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="armors">
|
||||
{{#each armors as |item|}}
|
||||
<div class="armor item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<span class="bonus" data-tooltip="Bonus">{{item.system.bonus}}</span>
|
||||
<span class="resilience" data-tooltip="Resilience">{{item.system.resilience}}</span>
|
||||
<span class="reduction" data-tooltip="Reduction">{{item.system.reduction}}</span>
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.armors"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addArmor"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createArmor"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="armors">
|
||||
{{#each armors as |item|}}
|
||||
<div class="armor item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<span class="bonus" data-tooltip="Bonus">{{item.system.bonus}}</span>
|
||||
<span class="resilience" data-tooltip="Resilience">{{item.system.resilience}}</span>
|
||||
<span class="reduction" data-tooltip="Reduction">{{item.system.reduction}}</span>
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.equipments"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="equipments">
|
||||
{{#each equipments as |item|}}
|
||||
{{!log 'armor' this}}
|
||||
<div class="equipment" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.equipments"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="equipments">
|
||||
{{#each equipments as |item|}}
|
||||
{{!log 'armor' this}}
|
||||
<div class="equipment" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<span class="quantity" data-tooltip="Quantity">{{item.system.quantity}}</span>
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="limboes">
|
||||
<legend>Limbos & Ammo</legend>
|
||||
{{formField systemFields.limboes value=system.limboes rootId=partId disabled=isPlayMode}}
|
||||
{{formField systemFields.ammo value=system.ammo rootId=partId disabled=isPlayMode}}
|
||||
</fieldset>
|
||||
<fieldset class="limboes">
|
||||
<legend>Limboes and Ammo</legend>
|
||||
<div class="limboes-line">
|
||||
<div class="ammo-item">
|
||||
<input type="text" class="limboes-name" value="{{system.limboes}}" name="system.limboes"/>
|
||||
<span class="limboes-quantity">Limboes</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="ammo-item">
|
||||
<input type="text" class="ammo" value="{{system.ammo}}" name="system.ammo"/>
|
||||
<span class="limboes-quantity">Ammo</span>
|
||||
</div>
|
||||
|
||||
{{#each system.ammoArray as |ammo key|}}
|
||||
<div class="ammo-item">
|
||||
<input type="text" class="ammo-quantity" value="{{ammo.value}}" min="0" name="system.ammoArray.{{key}}.value" />
|
||||
<span class="ammo-name">{{upperFirst ammo.label}}</span>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
@@ -19,43 +19,52 @@
|
||||
</div>
|
||||
|
||||
<fieldset class="character-definition">
|
||||
<div class="flexcol">
|
||||
<div class="flexcol character-definition-pronouns">
|
||||
{{formField systemFields.pronouns value=system.pronouns rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
{{formField systemFields.species value=system.species rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<div class="form-group">
|
||||
<label>Trait</label>
|
||||
<input class="trait" type="text" value="{{trait.name}}" disabled >
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{trait.id}}"
|
||||
data-item-uuid="{{trait.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{trait.id}}"
|
||||
data-item-uuid="{{trait.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
<div class="splitted">
|
||||
<div>
|
||||
<div class="flexcol">
|
||||
{{formField systemFields.species value=system.species rootId=partId disabled=isPlayMode}}
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<div class="form-group">
|
||||
<label>Trait</label>
|
||||
<input class="trait" type="text" value="{{trait.name}}" disabled >
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{trait.id}}"
|
||||
data-item-uuid="{{trait.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{trait.id}}"
|
||||
data-item-uuid="{{trait.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<div class="form-group">
|
||||
<label>Upright</label>
|
||||
<input class="trait" type="text" value="{{upright.name}}" disabled >
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{upright.id}}"
|
||||
data-item-uuid="{{upright.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{upright.id}}"
|
||||
data-item-uuid="{{upright.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
|
||||
<div>
|
||||
<div class="flexrow">
|
||||
<div class="form-group">
|
||||
<label><a data-action="toChat" data-item-uuid="{{upright.uuid}}">Upright</a></label>
|
||||
<input class="trait" type="text" value="{{upright.name}}" disabled >
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{upright.id}}"
|
||||
data-item-uuid="{{upright.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{upright.id}}"
|
||||
data-item-uuid="{{upright.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<div class="form-group">
|
||||
<label>Downright</label>
|
||||
<input class="trait" type="text" value="{{downright.name}}" disabled >
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{downright.id}}"
|
||||
data-item-uuid="{{downright.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{downright.id}}"
|
||||
data-item-uuid="{{downright.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
<div class="flexrow">
|
||||
<div class="form-group">
|
||||
<label><a data-action="toChat" data-item-uuid="{{downright.uuid}}">Reversed</a></label>
|
||||
<input class="trait" type="text" value="{{downright.name}}" disabled >
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{downright.id}}"
|
||||
data-item-uuid="{{downright.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{downright.id}}"
|
||||
data-item-uuid="{{downright.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -12,11 +12,19 @@
|
||||
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<!--<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />-->
|
||||
<div class="name" data-roll-type="malefica" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
<div class="name" data-action="toChat" data-item-uuid="{{item.uuid}}" data-roll-type="malefica" data-tooltip="{{{item.system.description}}}<br>Time:{{item.system.time}}<br>Duration:{{item.system.duration}}<br>Range:{{item.system.range}}<br>Target:{{item.system.target}}">
|
||||
<a>{{item.name}}</a>
|
||||
</div>
|
||||
<span class="domain" data-tooltip="Domain">{{upperFirst item.system.domain}}</span>
|
||||
<span class="level" data-tooltip="Level">{{getRomanLevel item.system.level}}</span>
|
||||
{{#if item.system.hasDamage}}
|
||||
<a class="damage rollable" data-tooltip="Damage" data-item-id="{{item.id}}" data-action="roll"
|
||||
data-roll-type="damage" data-roll-value="{{item.system.damage}}">
|
||||
<i class="fa-regular fa-dice"></i>
|
||||
{{item.system.damage}}</a>
|
||||
{{else}}
|
||||
<span class="damage" data-tooltip="Damage">-</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
@@ -40,8 +48,8 @@
|
||||
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<!--<img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />-->
|
||||
<div class="name" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
<div class="name" data-action="toChat" data-item-uuid="{{item.uuid}}" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||
<a>{{item.name}}</a>
|
||||
</div>
|
||||
<span class="ingredients" data-tooltip="Ingredients">{{upperFirst item.system.ingredients}}</span>
|
||||
<span class="difficulty" data-tooltip="Difficulty">{{upperFirst item.system.difficulty}}</span>
|
||||
|
||||
@@ -4,23 +4,36 @@
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.characteristics"}}</legend>
|
||||
<div class="counters">
|
||||
<label>Trauma : </label>{{formInput systemFields.trauma.fields.current value=system.trauma.current}} /
|
||||
{{formInput systemFields.trauma.fields.max value=system.trauma.max}}
|
||||
<label> Darkness : </label>{{formInput systemFields.darkness.fields.current value=system.darkness.current}} /
|
||||
{{formInput systemFields.darkness.fields.max value=system.darkness.max}}
|
||||
{{formInput systemFields.darkness.fields.value value=system.darkness.value}}
|
||||
<label> Defense : </label>{{formInput systemFields.defense.fields.base value=system.defense.base}}
|
||||
{{formInput systemFields.defense.fields.bonus value=system.defense.bonus }}
|
||||
{{formInput systemFields.defense.fields.total value=system.defense.total}}
|
||||
{{formInput systemFields.defense.fields.resistance value=system.defense.resistance}}
|
||||
<label> Movement : </label>{{formInput systemFields.movement.fields.base value=system.movement.base}}
|
||||
{{formInput systemFields.movement.fields.reduce value=system.defense.reduce }}
|
||||
<div class="flexcol">
|
||||
<div>
|
||||
<label>Trauma </label>{{formInput systemFields.trauma.fields.current value=system.trauma.current}} /
|
||||
{{formInput systemFields.trauma.fields.max value=system.trauma.max}}
|
||||
|
||||
<label class="spaced-left"> Darkness </label>{{formInput systemFields.darkness.fields.current value=system.darkness.current}} /
|
||||
{{formInput systemFields.darkness.fields.max value=system.darkness.max}}
|
||||
{{formInput systemFields.darkness.fields.value value=system.darkness.value}}
|
||||
<label class="spaced-left"> Defense </label>{{formInput systemFields.defense.fields.base value=system.defense.base}}
|
||||
{{formInput systemFields.defense.fields.bonus value=system.defense.bonus }}
|
||||
{{formInput systemFields.defense.fields.total value=system.defense.total}}
|
||||
{{formInput systemFields.defense.fields.resistance value=system.defense.resistance}}
|
||||
<label class="spaced-left"> Movement </label>{{formInput systemFields.movement.fields.base value=system.movement.base}}
|
||||
{{formInput systemFields.movement.fields.reduce value=system.defense.reduce }}
|
||||
</div>
|
||||
|
||||
<div class="flexrow characteristics-label">
|
||||
<label> </label><span>Curr.</span><span>Max</span>
|
||||
<label> </label><span>Curr.</span><span>Max</span><span>Mal.DR</span>
|
||||
<label> </label><span>Base</span><span>Armor</span><span>Total</span><span>Resi.</span>
|
||||
<label> </label><span>Base</span><span>Redu.</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.perks"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize " HELLBORN.Tooltip.addPerk"}}" data-tooltip-direction="UP"><i
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addPerk"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createPerk"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="perks">
|
||||
@@ -29,8 +42,8 @@
|
||||
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<!-- <img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />-->
|
||||
<div class="name" data-roll-type="perk" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
<div class="name" data-roll-type="perk" data-action="toChat" data-item-uuid="{{item.uuid}}" data-tooltip="{{{item.system.description}}}">
|
||||
<a>{{item.name}}</a>
|
||||
</div>
|
||||
<span class="flavor" data-tooltip="Flavor text">{{upperFirst item.system.flavorText}}</span>
|
||||
<span class="role" data-tooltip="Role">{{upperFirst item.system.role}}</span>
|
||||
@@ -51,7 +64,10 @@
|
||||
<legend>{{localize "HELLBORN.Label.ailments"}}</legend>
|
||||
<div class="mortality">
|
||||
<label>Mortality :</label>
|
||||
{{formInput systemFields.mortality.fields.current value=system.mortality.current rootId=partId disabled=isPlayMode classes="mortality"}}
|
||||
{{#each system.mortality.enabled as |mortality idx|}}
|
||||
<input class="mortality-checkbox" type="checkbox" data-action="updateCheckboxArray" data-index="{{@index}}"
|
||||
data-name="enabled" {{#if mortality}} checked {{/if}}>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
<div class="ailments">
|
||||
|
||||
20
templates/chat-malefica.hbs
Normal file
20
templates/chat-malefica.hbs
Normal file
@@ -0,0 +1,20 @@
|
||||
<div class="item-to-chat">
|
||||
<div class="intro-chat">
|
||||
<h2>{{name}}</h2>
|
||||
|
||||
<ul>
|
||||
<li><strong>Domain : </strong>{{upperFirst system.domain}}</li>
|
||||
<li><strong>Level : </strong>{{getRomanLevel system.level}}</li>
|
||||
<li><strong>Time : </strong>{{system.time}}</li>
|
||||
{{#if (eq system.choiceMaintainDuration "duration")}}
|
||||
<li><strong>Duration : </strong>{{system.duration}}</li>
|
||||
{{else}}
|
||||
<li><strong>Maintain : </strong>{{system.maintain}}</li>
|
||||
{{/if}}
|
||||
<li><strong>Range : </strong>{{system.range}}</li>
|
||||
<li><strong>Target : </strong>{{system.target}}</li>
|
||||
<li>{{{system.description}}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -1,58 +1,72 @@
|
||||
{{!log 'chat-message' this}}
|
||||
<div class="{{cssClass}}">
|
||||
<div class="intro-chat">
|
||||
<div class="intro-img">
|
||||
<img src="{{actingCharImg}}" data-tooltip="{{actingCharName}}" />
|
||||
{{actorName}}
|
||||
</div>
|
||||
<div class="intro-right">
|
||||
|
||||
{{#if (eq rollType "stat")}}
|
||||
<h2>{{localize "HELLBORN.Label.statRoll"}}</h2>
|
||||
{{/if}}
|
||||
{{#if weapon}}
|
||||
<h2>{{weapon.name}}</strong></h2>
|
||||
{{/if}}
|
||||
|
||||
<ul>
|
||||
|
||||
{{#if (eq rollType "stat")}}
|
||||
<li><strong>{{localize "HELLBORN.Label.statRoll"}}</strong></li>
|
||||
<li><strong>Properties :</strong> {{weapon.system.properties}}</li>
|
||||
<li>
|
||||
<span>
|
||||
<span class="chat-roll-label"><strong>{{localize rollItem.label}} : {{rollItem.value}}</strong></span>
|
||||
<span>{{localize "HELLBORN.Label.difficulty"}} : {{difficulty}}</span>
|
||||
</span>
|
||||
</li>
|
||||
|
||||
{{#if (gt nbAdvantages 0)}}
|
||||
<li>With Advantage !</li>
|
||||
{{/if}}
|
||||
{{#if (gt nbDisadvantages 0)}}
|
||||
<li>With Disadvantages ! </li>
|
||||
{{/if}}
|
||||
|
||||
<li class="chat-results-spacing">Results :
|
||||
{{#each results as |result|}}
|
||||
{{result.result}}
|
||||
{{/each}}
|
||||
</li>
|
||||
|
||||
{{#if isSuccess}}
|
||||
{{#if satanicSuccess}}
|
||||
<li class="chat-results-spacing result-satanic-success">
|
||||
{{localize "HELLBORN.Label.satanicSuccess"}}
|
||||
</li>
|
||||
{{else}}
|
||||
<li class="chat-results-spacing result-success">
|
||||
{{localize "HELLBORN.Label.success"}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
|
||||
{{#if weapon}}
|
||||
<li><strong>Weapon : {{weapon.name}}</strong></li>
|
||||
{{#if isFailure}}
|
||||
{{#if fiendishFailure}}
|
||||
<li class="chat-results-spacing result-fiendish-failure">
|
||||
{{localize "HELLBORN.Label.fiendishFailure"}}
|
||||
</li>
|
||||
{{else}}
|
||||
<li class="chat-results-spacing result-failure">
|
||||
{{localize "HELLBORN.Label.failure"}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
<li><strong>{{localize rollItem.label}} : {{rollItem.value}}</strong></li>
|
||||
|
||||
<li>{{localize "HELLBORN.Label.difficulty"}} : {{difficulty}}</li>
|
||||
|
||||
{{#if (eq resultType "unknown")}}
|
||||
<li class="result-unknown">
|
||||
{{localize "HELLBORN.Label.unknown"}}
|
||||
</li>
|
||||
{{else}}
|
||||
{{#if isSuccess}}
|
||||
{{#if satanicSuccess}}
|
||||
<li class="result-satanic-success">
|
||||
{{localize "HELLBORN.Label.satanicSuccess"}}
|
||||
</li>
|
||||
{{else}}
|
||||
<li class="result-success">
|
||||
{{localize "HELLBORN.Label.success"}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
|
||||
{{#if isFailure}}
|
||||
{{#if fiendishFailure}}
|
||||
<li class="result-fiendish-failure">
|
||||
{{localize "HELLBORN.Label.fiendishFailure"}}
|
||||
</li>
|
||||
{{else}}
|
||||
<li class="result-failure">
|
||||
{{localize "HELLBORN.Label.failure"}}
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if isCritical}}
|
||||
{{/if}}
|
||||
<li class="chat-results-spacing result-unknown">
|
||||
{{localize "HELLBORN.Label.unknown"}}
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
12
templates/chat-perk.hbs
Normal file
12
templates/chat-perk.hbs
Normal file
@@ -0,0 +1,12 @@
|
||||
<div class="item-to-chat">
|
||||
<div class="intro-chat">
|
||||
<h2>{{name}}</h2>
|
||||
<ul>
|
||||
<li><strong><i>{{system.flavorText}}</i></strong></li>
|
||||
<li><strong>Role : </strong>{{upperFirst system.role}}</li>
|
||||
<li><strong>Level : </strong>{{getRomanLevel system.level}}</li>
|
||||
<li>{{{system.description}}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
14
templates/chat-ritual.hbs
Normal file
14
templates/chat-ritual.hbs
Normal file
@@ -0,0 +1,14 @@
|
||||
<div class="item-to-chat">
|
||||
<div class="intro-chat">
|
||||
<h2>{{name}}</h2>
|
||||
<ul>
|
||||
<li><strong>Difficulty : </strong>{{system.difficulty}}</li>
|
||||
<li><strong>Threshold : </strong>{{system.threshold}}</li>
|
||||
<li><strong>Limit : </strong>{{system.limit}}</li>
|
||||
<li><strong>Ingredients : </strong>{{system.ingredients}}</li>
|
||||
<li><strong>N. Attempts : </strong>{{system.nbAttempts}}</li>
|
||||
<li>{{{system.description}}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
30
templates/chat-tarot.hbs
Normal file
30
templates/chat-tarot.hbs
Normal file
@@ -0,0 +1,30 @@
|
||||
<div class="item-to-chat">
|
||||
<div class="intro-chat">
|
||||
<h2>{{name}}</h2>
|
||||
<ul>
|
||||
{{#if (eq system.orientation "Upright")}}
|
||||
<li><strong>Orientation : </strong>Upright</li>
|
||||
{{else}}
|
||||
<li><strong>Orientation : </strong>Reversed</li>
|
||||
{{/if}}
|
||||
|
||||
<li><strong>Quote : </strong>{{system.quote}}</li>
|
||||
|
||||
{{#if (eq system.orientation "Upright")}}
|
||||
<li><strong>Upright XP Trigger : </strong>{{system.bonus}}</li>
|
||||
{{else}}
|
||||
<li><strong>Reversed XP Trigger : </strong>{{system.penalty}}</li>
|
||||
{{/if}}
|
||||
|
||||
<li><strong>Description : </strong>{{{system.description}}}</li>
|
||||
|
||||
{{#if (eq system.orientation "Upright")}}
|
||||
<li><strong>Positive Effect : </strong>{{{system.positiveEffect}}}</li>
|
||||
{{else}}
|
||||
<li><strong>Negative Effect : </strong>{{{system.negativeEffect}}}</li>
|
||||
{{/if}}
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
9
templates/chat-trait.hbs
Normal file
9
templates/chat-trait.hbs
Normal file
@@ -0,0 +1,9 @@
|
||||
<div class="item-to-chat">
|
||||
<div class="intro-chat">
|
||||
<h2>{{name}}</h2>
|
||||
<ul>
|
||||
<li>{{{system.description}}}</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -1,17 +0,0 @@
|
||||
<section>
|
||||
<div class="header">
|
||||
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
|
||||
{{formInput fields.name value=source.name}}
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
{{formField systemFields.isAdvantage value=system.isAdvantage}}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description"
|
||||
toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
</section>
|
||||
@@ -1,103 +0,0 @@
|
||||
<section class="creature-main creature-main-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
{{!log "creature-main" this}}
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.creature"}}</legend>
|
||||
<div class="creature-pc creature-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<div class="creature-left">
|
||||
<div class="creature-left-image">
|
||||
<img class="creature-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
||||
data-tooltip="{{actor.name}}" />
|
||||
</div>
|
||||
<fieldset class="creature-hp">
|
||||
<legend>{{localize "HELLBORN.Label.Stamina"}}</legend>
|
||||
<div class="flexrow">
|
||||
Curr. {{formField systemFields.health.fields.staminaValue value=system.health.staminaValue}}
|
||||
Max {{formField systemFields.health.fields.staminaMax value=system.health.staminaMax rootId=partId}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
<div class="creature-right">
|
||||
<div class="creature-name">
|
||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
||||
<a class="control" data-action="toggleSheet" data-tooltip="HELLBORN.ToggleSheet" data-tooltip-direction="UP">
|
||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<fieldset class="creature-spec">
|
||||
<legend>{{localize "HELLBORN.Label.Details"}}</legend>
|
||||
{{formField systemFields.terrain value=system.terrain rootId=partId disabled=isPlayMode localize=true}}
|
||||
{{formField systemFields.niche value=system.niche rootId=partId disabled=isPlayMode localize=true}}
|
||||
{{formField systemFields.size value=system.size rootId=partId disabled=isPlayMode localize=true}}
|
||||
<div class="flexrow rollable" data-roll-type="creature-number">
|
||||
<i class="fa-regular fa-dice dice-2d6"></i>
|
||||
{{formField systemFields.numberAppearing value=system.numberAppearing rootId=partId disabled=isPlayMode
|
||||
localize=true}}
|
||||
</div>
|
||||
<div class="flexrow rollable" data-roll-type="creature-damage">
|
||||
<i class="fa-regular fa-dice dice-2d6"></i>
|
||||
{{formField systemFields.damage value=system.damage rootId=partId disabled=isPlayMode localize=true}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="creature-skills creature-skills-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<legend>{{localize "HELLBORN.Label.skills"}}</legend>
|
||||
<div class="creature-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_combat.svg" class="icon-skill" />
|
||||
<label class="rollable" data-roll-type="skill" data-skill-id="combat">{{localize
|
||||
"HELLBORN.Label.combat"}}</label>
|
||||
{{formInput systemFields.skills.fields.combat.fields.value value=system.skills.combat.value rootId=partId
|
||||
disabled=isPlayMode type="number" }}
|
||||
</div>
|
||||
<div class="creature-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_knowledge.svg" class="icon-skill" />
|
||||
<label class="rollable" data-roll-type="skill" data-skill-id="knowledge">{{localize
|
||||
"HELLBORN.Label.knowledge"}}</label>
|
||||
{{formInput systemFields.skills.fields.knowledge.fields.value value=system.skills.knowledge.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
<div class="creature-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_social.svg" class="icon-skill" />
|
||||
<label class="rollable" data-roll-type="skill" data-skill-id="social">{{localize
|
||||
"HELLBORN.Label.social"}}</label>
|
||||
{{formInput systemFields.skills.fields.social.fields.value value=system.skills.social.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
<div class="creature-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_physical.svg" class="icon-skill" />
|
||||
<label class="rollable" data-roll-type="skill" data-skill-id="physical">{{localize
|
||||
"HELLBORN.Label.physical"}}</label>
|
||||
{{formInput systemFields.skills.fields.physical.fields.value value=system.skills.physical.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
<div class="creature-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_stealth.svg" class="icon-skill" />
|
||||
<label class="rollable" data-roll-type="skill" data-skill-id="stealth">{{localize
|
||||
"HELLBORN.Label.stealth"}}</label>
|
||||
{{formInput systemFields.skills.fields.stealth.fields.value value=system.skills.stealth.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
<div class="creature-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_vehicles.svg" class="icon-skill" />
|
||||
<label class="rollable" data-roll-type="skill" data-skill-id="vehicles">{{localize
|
||||
"HELLBORN.Label.vehicles"}}</label>
|
||||
{{formInput systemFields.skills.fields.vehicles.fields.value value=system.skills.vehicles.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
<div class="creature-skill">
|
||||
<img src="systems/fvtt-ftl-nomad/assets/icons/icon_technology.svg" class="icon-skill" />
|
||||
<label class="rollable" data-roll-type="skill" data-skill-id="technology">{{localize
|
||||
"HELLBORN.Label.technology"}}</label>
|
||||
{{formInput systemFields.skills.fields.technology.fields.value value=system.skills.technology.value
|
||||
rootId=partId disabled=isPlayMode type="number"}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
@@ -1,50 +0,0 @@
|
||||
<section class="tab creature-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.traits"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addTrait"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createTrait"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="traits">
|
||||
{{#each traits as |item|}}
|
||||
<div class="trait item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.abilities"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addAbility"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createAbility"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="abilities">
|
||||
{{#each abilities as |item|}}
|
||||
{{!log 'armor' this}}
|
||||
<div class="ability" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</section>
|
||||
58
templates/enemy-main.hbs
Normal file
58
templates/enemy-main.hbs
Normal file
@@ -0,0 +1,58 @@
|
||||
<section class="enemy-main enemy-main-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.character"}}</legend>
|
||||
<div class="enemy-pc enemy-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<div class="enemy-left">
|
||||
<div class="enemy-left-image">
|
||||
<img class="enemy-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
||||
data-tooltip="{{actor.name}}" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="enemy-right">
|
||||
<div class="enemy-name">
|
||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
||||
<a class="control" data-action="toggleSheet" data-tooltip="HELLBORN.ToggleSheet" data-tooltip-direction="UP">
|
||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<fieldset class="enemy-definition">
|
||||
{{formField systemFields.enemyType value=system.enemyType rootId=partId disabled=isPlayMode}}
|
||||
{{formField systemFields.flavorText value=system.flavorText rootId=partId disabled=isPlayMode}}
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="enemy-stats enemy-stats-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<legend>{{localize "HELLBORN.Label.stats"}}</legend>
|
||||
<div class="enemy-stat">
|
||||
<label class="rollable" data-roll-type="stat" data-stat-id="flesh"><i class="fa-regular fa-dice"></i>{{localize
|
||||
"HELLBORN.Label.flesh"}}</label>
|
||||
{{formInput systemFields.stats.fields.flesh.fields.value value=system.stats.flesh.value rootId=partId disabled=isPlayMode type="number" }}
|
||||
</div>
|
||||
<div class="enemy-stat">
|
||||
<label class="rollable" data-roll-type="stat" data-stat-id="skin"><i class="fa-regular fa-dice"></i>{{localize
|
||||
"HELLBORN.Label.skin"}}</label>
|
||||
{{formInput systemFields.stats.fields.skin.fields.value value=system.stats.skin.value rootId=partId disabled=isPlayMode type="number" }}
|
||||
</div>
|
||||
<div class="enemy-stat">
|
||||
<label class="rollable" data-roll-type="stat" data-stat-id="heart"><i class="fa-regular fa-dice"></i>{{localize
|
||||
"HELLBORN.Label.heart"}}</label>
|
||||
{{formInput systemFields.stats.fields.heart.fields.value value=system.stats.heart.value rootId=partId disabled=isPlayMode type="number" }}
|
||||
</div>
|
||||
<div class="enemy-stat">
|
||||
<label class="rollable" data-roll-type="stat" data-stat-id="mind"><i class="fa-regular fa-dice"></i>{{localize
|
||||
"HELLBORN.Label.mind"}}</label>
|
||||
{{formInput systemFields.stats.fields.mind.fields.value value=system.stats.mind.value rootId=partId disabled=isPlayMode type="number" }}
|
||||
</div>
|
||||
<div class="enemy-stat">
|
||||
<label class="rollable" data-roll-type="stat" data-stat-id="soul"><i class="fa-regular fa-dice"></i>{{localize
|
||||
"HELLBORN.Label.soul"}}</label>
|
||||
{{formInput systemFields.stats.fields.soul.fields.value value=system.stats.soul.value rootId=partId disabled=isPlayMode type="number" }}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</section>
|
||||
175
templates/enemy-trait.hbs
Normal file
175
templates/enemy-trait.hbs
Normal file
@@ -0,0 +1,175 @@
|
||||
<section class="tab enemy-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
<div class="main-div">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.characteristics"}}</legend>
|
||||
<div class="counters">
|
||||
<div class="flexcol">
|
||||
<div>
|
||||
<label>Trauma : </label>{{formInput systemFields.trauma.fields.current value=system.trauma.current}} /
|
||||
{{formInput systemFields.trauma.fields.max value=system.trauma.max}}
|
||||
|
||||
<label class="spaced-left"> Darkness </label>
|
||||
{{formInput systemFields.darkness.fields.current value=system.darkness.current}} /
|
||||
{{formInput systemFields.darkness.fields.max value=system.darkness.max}}
|
||||
{{formInput systemFields.darkness.fields.value value=system.darkness.value}}
|
||||
<label class="spaced-left"> Defense </label>
|
||||
{{formInput systemFields.defense.fields.base value=system.defense.base}}
|
||||
{{formInput systemFields.defense.fields.resilience value=system.defense.resilience}}
|
||||
<label class="spaced-left"> Movement </label>{{formInput systemFields.movement.fields.base value=system.movement.base}}
|
||||
</div>
|
||||
|
||||
<div class="flexrow characteristics-label">
|
||||
<label></label><span>Curr.</span><span>Max</span>
|
||||
<label></label><span> Curr.</span><span> Max</span><span> Mal.DR</span>
|
||||
<label></label><span> Total</span><span> Resi.</span>
|
||||
<label></label>
|
||||
<label></label>
|
||||
<label></label>
|
||||
<label></label>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.ailments"}}</legend>
|
||||
|
||||
<div class="ailments">
|
||||
{{#each system.ailments as |item id|}}
|
||||
<div class="ailment " data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="false">
|
||||
<label>{{item.label}}</label> <input type="checkbox" class="checkbox" name="system.ailments.{{id}}.enabled"
|
||||
{{#if item.enabled}} checked {{/if}}>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<div class="enemy-column">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.traits"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addTrait"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createTrait"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="traits">
|
||||
{{#each traits as |item|}}
|
||||
<div class="trait item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<!-- <img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />-->
|
||||
<div class="name" data-roll-type="trait" data-action="toChat" data-item-uuid="{{item.uuid}}" data-tooltip="{{{item.system.description}}}">
|
||||
<a>{{item.name}}</a>
|
||||
</div>
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.maleficas"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addMalefica"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createMalefica"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="maleficas">
|
||||
{{#each maleficas as |item|}}
|
||||
<div class="malefica item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<!-- <img src="systems/fvtt-cthulhu-eternal/assets/ui/d100.svg" class="d100" />-->
|
||||
<div class="name" data-roll-type="malefica" data-action="toChat" data-item-uuid="{{item.uuid}}" data-tooltip="{{{item.system.description}}}">
|
||||
<a>{{item.name}}</a>
|
||||
</div>
|
||||
<span class="domain" data-tooltip="Domain">{{upperFirst item.system.domain}}</span>
|
||||
<span class="level" data-tooltip="Level">{{getRomanLevel item.system.level}}</span>
|
||||
{{#if item.system.hasDamage}}
|
||||
<a class="damage rollable" data-tooltip="Damage" data-item-id="{{item.id}}" data-action="roll"
|
||||
data-roll-type="damage" data-roll-value="{{item.system.damage}}">
|
||||
<i class="fa-regular fa-dice"></i>
|
||||
{{item.system.damage}}</a>
|
||||
{{else}}
|
||||
<span class="damage" data-tooltip="Damage">-</span>
|
||||
{{/if}}
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.weapons"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="weapons">
|
||||
{{#each weapons as |item|}}
|
||||
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<i class="fa-regular fa-dice"></i>
|
||||
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<span class="type" data-tooltip="Type">{{upperFirst item.system.weaponType}}</span>
|
||||
<span class="properties" data-tooltip="Properties">{{upperFirst item.system.properties}}</span>
|
||||
<span class="range" data-tooltip="Range">{{upperFirst item.system.range}}</span>
|
||||
<span class="ammo" data-tooltip="Ammo">{{upperFirst item.system.ammo}}</span>
|
||||
|
||||
<a class="damage rollable" data-tooltip="Damage" data-item-id="{{item.id}}" data-action="roll"
|
||||
data-roll-type="damage" data-roll-value="{{item.system.damage}}">
|
||||
<i class="fa-regular fa-dice"></i>
|
||||
{{item.system.damage}}</a>
|
||||
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.equipments"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="equipments">
|
||||
{{#each equipments as |item|}}
|
||||
{{!log 'armor' this}}
|
||||
<div class="equipment" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</section>
|
||||
@@ -5,6 +5,7 @@
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
{{formField systemFields.quantity value=system.quantity}}
|
||||
{{formField systemFields.cost value=system.cost}}
|
||||
</fieldset>
|
||||
|
||||
|
||||
@@ -8,8 +8,21 @@
|
||||
{{formField systemFields.domain value=system.domain localize=true}}
|
||||
{{formField systemFields.level value=system.level localize=true}}
|
||||
{{formField systemFields.time value=system.time localize=true }}
|
||||
|
||||
{{formField systemFields.choiceMaintainDuration value=system.choiceMaintainDuration localize=true }}
|
||||
{{#if (eq system.choiceMaintainDuration "duration")}}
|
||||
{{formField systemFields.duration value=system.duration localize=true}}
|
||||
{{else}}
|
||||
{{formField systemFields.maintain value=system.maintain localize=true}}
|
||||
{{/if}}
|
||||
|
||||
{{formField systemFields.range value=system.range localize=true}}
|
||||
{{formField systemFields.target value=system.target localize=true}}
|
||||
{{formField systemFields.hasDamage value=system.hasDamage localize=true}}
|
||||
{{#if system.hasDamage}}
|
||||
{{formField systemFields.damage value=system.damage}}
|
||||
{{formField systemFields.damageType value=system.damageType}}
|
||||
{{/if}}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
|
||||
@@ -28,9 +28,7 @@
|
||||
|
||||
<fieldSet class="dialog-formula">
|
||||
<legend>Difficulty</legend>
|
||||
<select name="difficulty" class="roll-difficulty">
|
||||
{{selectOptions difficultyChoices selected=difficulty localize=true}}
|
||||
</select>
|
||||
<input name="difficulty" class="roll-difficulty" type="number" value="{{difficulty}}">
|
||||
</fieldSet>
|
||||
|
||||
<fieldSet class="dialog-formula">
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
<section class="tab vehicle-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.damages"}}</legend>
|
||||
<textarea class="form-control" rows="5" name="system.damages"
|
||||
data-tooltip="{{localize "HELLBORN.Tooltip.damages"}}">{{system.damages}}</textarea>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.notes"}}</legend>
|
||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
||||
</fieldset>
|
||||
|
||||
</section>
|
||||
@@ -1,54 +0,0 @@
|
||||
<section class="tab vehicle-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.weapons"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addWeapon"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createWeapon"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="weapons">
|
||||
{{#each weapons as |item|}}
|
||||
{{!log 'weapon' this}}
|
||||
<div class="weapon item" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name rollable" data-roll-type="weapon" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<a class="damage rollable" data-item-id="{{item.id}}" data-action="roll" data-roll-type="damage"
|
||||
data-roll-value="{{item.system.damage}}">{{localize "HELLBORN.Label.damageShort"}} :
|
||||
{{item.system.damage}}</a>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.equipment"}}{{#if isEditMode}}
|
||||
<a class="action" data-tooltip="{{localize "HELLBORN.Tooltip.addEquipment"}}" data-tooltip-direction="UP"><i
|
||||
class="fas fa-plus" data-action="createEquipment"></i></a>{{/if}}
|
||||
</legend>
|
||||
<div class="equipments">
|
||||
{{#each equipments as |item|}}
|
||||
{{!log 'armor' this}}
|
||||
<div class="equipment" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}">
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name" data-tooltip="{{{item.system.description}}}">
|
||||
{{item.name}}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<a data-tooltip="{{localize 'HELLBORN.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||
<a data-tooltip="{{localize 'HELLBORN.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</section>
|
||||
@@ -1,54 +0,0 @@
|
||||
<section class="vehicle-main vehicle-main-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.vehicle"}}</legend>
|
||||
<div class="vehicle-pc vehicle-pc-{{ifThen isPlayMode 'play' 'edit'}}">
|
||||
<div class="vehicle-left">
|
||||
<div class="vehicle-left-image">
|
||||
<img class="vehicle-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
|
||||
data-tooltip="{{actor.name}}" />
|
||||
</div>
|
||||
<fieldset>
|
||||
<legend>{{localize "HELLBORN.Label.Agility"}}</legend>
|
||||
<div class="flexrow">
|
||||
{{formField systemFields.agility value=system.agility localize=true}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="vehicle-right">
|
||||
<div class="vehicle-name">
|
||||
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
|
||||
<a class="control" data-action="toggleSheet" data-tooltip="HELLBORN.ToggleSheet"
|
||||
data-tooltip-direction="UP">
|
||||
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<fieldset class="capacity ">
|
||||
<legend>{{localize "HELLBORN.Label.capacity"}}</legend>
|
||||
<div class="flexrow">
|
||||
{{formField systemFields.armor value=system.armor localize=true}}
|
||||
{{formField systemFields.force value=system.force localize=true}}
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
{{formField systemFields.range value=system.range localize=true}}
|
||||
{{formField systemFields.speed value=system.speed localize=true}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset class="cargo">
|
||||
<legend>{{localize "HELLBORN.Label.cargo"}}</legend>
|
||||
<div class="flexrow">
|
||||
{{formField systemFields.crew value=system.crew localize=true}}
|
||||
{{formField systemFields.cargo value=system.cargo localize=true}}
|
||||
{{formField systemFields.tonnage value=system.tonnage localize=true}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</section>
|
||||
@@ -5,6 +5,7 @@
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
{{formField systemFields.stat value=system.stat localize=true}}
|
||||
{{formField systemFields.weaponType value=system.weaponType localize=true}}
|
||||
{{#if (eq system.weaponType "ranged")}}
|
||||
{{formField systemFields.subType value=system.subType localize=true}}
|
||||
@@ -14,6 +15,9 @@
|
||||
|
||||
{{formField systemFields.properties value=system.properties classes="long-input"}}
|
||||
{{formField systemFields.damage value=system.damage}}
|
||||
{{formField systemFields.damageStat value=system.damageStat localize=true}}
|
||||
|
||||
{{formField systemFields.damageType value=system.damageType}}
|
||||
|
||||
{{formField systemFields.cost value=system.cost}}
|
||||
</fieldset>
|
||||
|
||||
Reference in New Issue
Block a user