Compare commits
2 Commits
fvtt-dark-
...
main
Author | SHA1 | Date | |
---|---|---|---|
e92b2deacf | |||
dc4429f3e1 |
19
lang/en.json
19
lang/en.json
@ -1,3 +1,20 @@
|
|||||||
{
|
{
|
||||||
|
"TYPES": {
|
||||||
|
"Actor": {
|
||||||
|
"character": "Character"
|
||||||
|
},
|
||||||
|
"Item": {
|
||||||
|
"armor": "Armor",
|
||||||
|
"weapon": "Weapon",
|
||||||
|
"equipment": "Equipment",
|
||||||
|
"skill": "Skill",
|
||||||
|
"perk": "Perk",
|
||||||
|
"ability": "Ability",
|
||||||
|
"cumulativetask": "Cumulative Task",
|
||||||
|
"genetic": "Genetic",
|
||||||
|
"money": "Money",
|
||||||
|
"cyber": "Cyber",
|
||||||
|
"ammo": "Ammo"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -11,7 +11,7 @@ export class DarkStarsActorSheet extends ActorSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
classes: ["fvtt-dark-stars", "sheet", "actor"],
|
classes: ["fvtt-dark-stars", "sheet", "actor"],
|
||||||
template: "systems/fvtt-dark-stars/templates/actors/actor-sheet.hbs",
|
template: "systems/fvtt-dark-stars/templates/actors/actor-sheet.hbs",
|
||||||
width: 960,
|
width: 960,
|
||||||
@ -25,7 +25,7 @@ export class DarkStarsActorSheet extends ActorSheet {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async getData() {
|
async getData() {
|
||||||
const objectData = this.object.system
|
const objectData = this.object.system
|
||||||
let actorData = duplicate(objectData)
|
let actorData = foundry.utils.duplicate(objectData)
|
||||||
|
|
||||||
let formData = {
|
let formData = {
|
||||||
title: this.title,
|
title: this.title,
|
||||||
@ -39,21 +39,23 @@ export class DarkStarsActorSheet extends ActorSheet {
|
|||||||
limited: this.object.limited,
|
limited: this.object.limited,
|
||||||
skills: this.actor.getSkills( ),
|
skills: this.actor.getSkills( ),
|
||||||
perks: this.actor.getPerks( ),
|
perks: this.actor.getPerks( ),
|
||||||
weapons: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getWeapons()) ),
|
weapons: this.actor.checkAndPrepareEquipments( foundry.utils.duplicate(this.actor.getWeapons()) ),
|
||||||
ammos: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getAmmos()) ),
|
ammos: this.actor.checkAndPrepareEquipments( foundry.utils.duplicate(this.actor.getAmmos()) ),
|
||||||
spells: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getSpells()) ),
|
spells: this.actor.checkAndPrepareEquipments( foundry.utils.duplicate(this.actor.getSpells()) ),
|
||||||
powers: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getPowers()) ),
|
powers: this.actor.checkAndPrepareEquipments( foundry.utils.duplicate(this.actor.getPowers()) ),
|
||||||
armors: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getArmors())),
|
armors: this.actor.checkAndPrepareEquipments( foundry.utils.duplicate(this.actor.getArmors())),
|
||||||
shields: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getShields())),
|
shields: this.actor.checkAndPrepareEquipments( foundry.utils.duplicate(this.actor.getShields())),
|
||||||
equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsOnly()) ),
|
equipments: this.actor.checkAndPrepareEquipments(foundry.utils.duplicate(this.actor.getEquipmentsOnly()) ),
|
||||||
equippedWeapons: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquippedWeapons()) ),
|
equippedWeapons: this.actor.checkAndPrepareEquipments(foundry.utils.duplicate(this.actor.getEquippedWeapons()) ),
|
||||||
cybers: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getCybers()) ),
|
cybers: this.actor.checkAndPrepareEquipments(foundry.utils.duplicate(this.actor.getCybers()) ),
|
||||||
genetics: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getGenetics()) ),
|
genetics: this.actor.checkAndPrepareEquipments(foundry.utils.duplicate(this.actor.getGenetics()) ),
|
||||||
equippedArmor: this.actor.getEquippedArmor(),
|
equippedArmor: this.actor.getEquippedArmor(),
|
||||||
equippedShield: this.actor.getEquippedShield(),
|
equippedShield: this.actor.getEquippedShield(),
|
||||||
subActors: duplicate(this.actor.getSubActors()),
|
subActors: foundry.utils.duplicate(this.actor.getSubActors()),
|
||||||
encCapacity: this.actor.getEncumbranceCapacity(),
|
encCapacity: this.actor.getEncumbranceCapacity(),
|
||||||
conditions: this.actor.getConditions(),
|
conditions: this.actor.getConditions(),
|
||||||
|
extendedTests: this.actor.getExtendedTests(),
|
||||||
|
config: game.system.darkstars.config,
|
||||||
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
|
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
|
||||||
notes: await TextEditor.enrichHTML(this.object.system.biodata.notes, {async: true}),
|
notes: await TextEditor.enrichHTML(this.object.system.biodata.notes, {async: true}),
|
||||||
containersTree: this.actor.containersTree,
|
containersTree: this.actor.containersTree,
|
||||||
@ -145,6 +147,20 @@ export class DarkStarsActorSheet extends ActorSheet {
|
|||||||
const skillId = li.data("item-id")
|
const skillId = li.data("item-id")
|
||||||
this.actor.rollSkill(skillId)
|
this.actor.rollSkill(skillId)
|
||||||
});
|
});
|
||||||
|
html.find('.roll-attribute').click((event) => {
|
||||||
|
const attrKey = $(event.currentTarget).data("attr-key")
|
||||||
|
this.actor.rollAttribute(attrKey)
|
||||||
|
})
|
||||||
|
html.find('.start-extended-test').click((event) => {
|
||||||
|
const li = $(event.currentTarget).parents(".item")
|
||||||
|
const skillId = li.data("item-id")
|
||||||
|
this.actor.rollSkill(skillId, true)
|
||||||
|
})
|
||||||
|
html.find('.roll-extended-test').click((event) => {
|
||||||
|
const li = $(event.currentTarget).parents(".item")
|
||||||
|
const testId = li.data("item-id")
|
||||||
|
this.actor.continueExtendedTest(testId)
|
||||||
|
})
|
||||||
|
|
||||||
html.find('.roll-weapon').click((event) => {
|
html.find('.roll-weapon').click((event) => {
|
||||||
const li = $(event.currentTarget).parents(".item");
|
const li = $(event.currentTarget).parents(".item");
|
||||||
|
@ -43,8 +43,6 @@ export class DarkStarsActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (data.type == 'character') {
|
if (data.type == 'character') {
|
||||||
const skills = await DarkStarsUtility.loadCompendium("fvtt-dark-stars.skills");
|
|
||||||
data.items = skills.map(i => i.toObject())
|
|
||||||
}
|
}
|
||||||
if (data.type == 'npc') {
|
if (data.type == 'npc') {
|
||||||
}
|
}
|
||||||
@ -120,54 +118,59 @@ export class DarkStarsActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getEquippedWeapons() {
|
getEquippedWeapons() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'weapon' && item.system.equipped) || []);
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'weapon' && item.system.equipped) || []);
|
||||||
DarkStarsUtility.sortArrayObjectsByName(comp)
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getArmors() {
|
getArmors() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'armor') || []);
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'armor') || []);
|
||||||
DarkStarsUtility.sortArrayObjectsByName(comp)
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
getSpells() {
|
getSpells() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'spell') || []);
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'spell') || []);
|
||||||
DarkStarsUtility.sortArrayObjectsByName(comp)
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
getPowers() {
|
getPowers() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'psychic') || []);
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'psychic') || []);
|
||||||
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
|
return comp;
|
||||||
|
}
|
||||||
|
getExtendedTests() {
|
||||||
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'extendedtest') || []);
|
||||||
DarkStarsUtility.sortArrayObjectsByName(comp)
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
getEquippedArmor() {
|
getEquippedArmor() {
|
||||||
let comp = this.items.find(item => item.type == 'armor' && item.system.equipped)
|
let comp = this.items.find(item => item.type == 'armor' && item.system.equipped)
|
||||||
if (comp) {
|
if (comp) {
|
||||||
return duplicate(comp)
|
return foundry.utils.duplicate(comp)
|
||||||
}
|
}
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getCybers() {
|
getCybers() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'cyber') || []);
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'cyber') || []);
|
||||||
DarkStarsUtility.sortArrayObjectsByName(comp)
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
getGenetics() {
|
getGenetics() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'genetic') || []);
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'genetic') || []);
|
||||||
DarkStarsUtility.sortArrayObjectsByName(comp)
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getShields() {
|
getShields() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'shield') || []);
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'shield') || []);
|
||||||
DarkStarsUtility.sortArrayObjectsByName(comp)
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
getEquippedShield() {
|
getEquippedShield() {
|
||||||
let comp = this.items.find(item => item.type == 'shield' && item.system.equipped)
|
let comp = this.items.find(item => item.type == 'shield' && item.system.equipped)
|
||||||
if (comp) {
|
if (comp) {
|
||||||
return duplicate(comp)
|
return foundry.utils.duplicate(comp)
|
||||||
}
|
}
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
@ -177,7 +180,7 @@ export class DarkStarsActor extends Actor {
|
|||||||
if (item.type == "weapon" && item.system.needammo) {
|
if (item.type == "weapon" && item.system.needammo) {
|
||||||
let ammo = this.items.find(ammo => ammo.type == "ammo" && item.system.ammoid == ammo.id)
|
let ammo = this.items.find(ammo => ammo.type == "ammo" && item.system.ammoid == ammo.id)
|
||||||
if (ammo) {
|
if (ammo) {
|
||||||
item.ammo = duplicate(ammo)
|
item.ammo = foundry.utils.duplicate(ammo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -192,29 +195,34 @@ export class DarkStarsActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getConditions() {
|
getConditions() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'condition') || []);
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'condition') || []);
|
||||||
DarkStarsUtility.sortArrayObjectsByName(comp)
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getWeapons() {
|
getWeapons() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'weapon') || []);
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'weapon') || []);
|
||||||
DarkStarsUtility.sortArrayObjectsByName(comp)
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getAmmos() {
|
getAmmos() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'ammo') || []);
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'ammo') || []);
|
||||||
DarkStarsUtility.sortArrayObjectsByName(comp)
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
return comp;
|
return comp;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getItemById(id) {
|
getItemById(id, duplicate = true) {
|
||||||
let item = this.items.find(item => item.id == id);
|
let item = this.items.find(it => it.id == id)
|
||||||
if (item) {
|
if (item && duplicate) {
|
||||||
item = duplicate(item)
|
item = foundry.utils.duplicate(item)
|
||||||
}
|
}
|
||||||
return item;
|
return item
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
getItem(id) {
|
||||||
|
let item = this.items.get(id)
|
||||||
|
return item
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
setWeaponAmmo(weaponId, ammoId) {
|
setWeaponAmmo(weaponId, ammoId) {
|
||||||
@ -233,14 +241,14 @@ export class DarkStarsActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
updateSkill(skill) {
|
updateSkill(skill) {
|
||||||
skill.derivated = duplicate(this.system.derivated[skill.system.base])
|
skill.derivated = foundry.utils.duplicate(this.system.derivated[skill.system.base])
|
||||||
skill.total = skill.system.value + skill.derivated.value + skill.system.bonus
|
skill.total = skill.system.value + skill.derivated.value + skill.system.bonus
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getSkills() {
|
getSkills() {
|
||||||
this.computeDerivated()
|
this.computeDerivated()
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'skill') || [])
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'skill') || [])
|
||||||
for (let skill of comp) {
|
for (let skill of comp) {
|
||||||
this.updateSkill(skill)
|
this.updateSkill(skill)
|
||||||
}
|
}
|
||||||
@ -250,7 +258,7 @@ export class DarkStarsActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getPerks() {
|
getPerks() {
|
||||||
let comp = duplicate(this.items.filter(item => item.type == 'perk') || [])
|
let comp = foundry.utils.duplicate(this.items.filter(item => item.type == 'perk') || [])
|
||||||
DarkStarsUtility.sortArrayObjectsByName(comp)
|
DarkStarsUtility.sortArrayObjectsByName(comp)
|
||||||
return comp
|
return comp
|
||||||
}
|
}
|
||||||
@ -258,7 +266,7 @@ export class DarkStarsActor extends Actor {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async equipItem(itemId) {
|
async equipItem(itemId) {
|
||||||
let item = this.items.find(item => item.id == itemId)
|
let item = this.items.find(item => item.id == itemId)
|
||||||
if (item && item.system) {
|
if (item?.system) {
|
||||||
if (item.type == "armor") {
|
if (item.type == "armor") {
|
||||||
let armor = this.items.find(item => item.id != itemId && item.type == "armor" && item.system.equipped)
|
let armor = this.items.find(item => item.id != itemId && item.type == "armor" && item.system.equipped)
|
||||||
if (armor) {
|
if (armor) {
|
||||||
@ -295,7 +303,7 @@ export class DarkStarsActor extends Actor {
|
|||||||
}
|
}
|
||||||
/* ------------------------------------------- */
|
/* ------------------------------------------- */
|
||||||
getEquipmentsOnly() {
|
getEquipmentsOnly() {
|
||||||
return duplicate(this.items.filter(item => item.type == "equipment") || [])
|
return foundry.utils.duplicate(this.items.filter(item => item.type == "equipment") || [])
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ------------------------------------------- */
|
/* ------------------------------------------- */
|
||||||
@ -321,7 +329,7 @@ export class DarkStarsActor extends Actor {
|
|||||||
|
|
||||||
/* ------------------------------------------- */
|
/* ------------------------------------------- */
|
||||||
async buildContainerTree() {
|
async buildContainerTree() {
|
||||||
let equipments = duplicate(this.items.filter(item => item.type == "equipment") || [])
|
let equipments = foundry.utils.duplicate(this.items.filter(item => item.type == "equipment") || [])
|
||||||
for (let equip1 of equipments) {
|
for (let equip1 of equipments) {
|
||||||
if (equip1.system.iscontainer) {
|
if (equip1.system.iscontainer) {
|
||||||
equip1.system.contents = []
|
equip1.system.contents = []
|
||||||
@ -375,7 +383,7 @@ export class DarkStarsActor extends Actor {
|
|||||||
async incDecHP(formula) {
|
async incDecHP(formula) {
|
||||||
let dmgRoll = new Roll(formula + "[dark-starsorange]").roll({ async: false })
|
let dmgRoll = new Roll(formula + "[dark-starsorange]").roll({ async: false })
|
||||||
await DarkStarsUtility.showDiceSoNice(dmgRoll, game.settings.get("core", "rollMode"))
|
await DarkStarsUtility.showDiceSoNice(dmgRoll, game.settings.get("core", "rollMode"))
|
||||||
let hp = duplicate(this.system.secondary.hp)
|
let hp = foundry.utils.duplicate(this.system.secondary.hp)
|
||||||
hp.value = Number(hp.value) + Number(dmgRoll.total)
|
hp.value = Number(hp.value) + Number(dmgRoll.total)
|
||||||
this.update({ 'system.secondary.hp': hp })
|
this.update({ 'system.secondary.hp': hp })
|
||||||
return Number(dmgRoll.total)
|
return Number(dmgRoll.total)
|
||||||
@ -429,9 +437,10 @@ export class DarkStarsActor extends Actor {
|
|||||||
return this.items.find(i => i.type == "perk" && i.name.toLowerCase() === "last word")
|
return this.items.find(i => i.type == "perk" && i.name.toLowerCase() === "last word")
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getInitiativeScore() {
|
async getInitiativeScore() {
|
||||||
let initFormula = (this.system.derivated.si.value + this.system.derivated.si.bonus) + "d6"
|
let initFormula = (this.system.derivated.si.value + this.system.derivated.si.bonus) + "d6"
|
||||||
let initRoll = new Roll(initFormula).roll({ async: false })
|
let initRoll = await new Roll(initFormula).roll()
|
||||||
|
await DarkStarsUtility.showDiceSoNice(initRoll, game.settings.get("core", "rollMode"))
|
||||||
return initRoll.total
|
return initRoll.total
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -439,13 +448,13 @@ export class DarkStarsActor extends Actor {
|
|||||||
getSubActors() {
|
getSubActors() {
|
||||||
let subActors = [];
|
let subActors = [];
|
||||||
for (let id of this.system.subactors) {
|
for (let id of this.system.subactors) {
|
||||||
subActors.push(duplicate(game.actors.get(id)))
|
subActors.push(foundry.utils.duplicate(game.actors.get(id)))
|
||||||
}
|
}
|
||||||
return subActors;
|
return subActors;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async addSubActor(subActorId) {
|
async addSubActor(subActorId) {
|
||||||
let subActors = duplicate(this.system.subactors);
|
let subActors = foundry.utils.duplicate(this.system.subactors);
|
||||||
subActors.push(subActorId);
|
subActors.push(subActorId);
|
||||||
await this.update({ 'system.subactors': subActors });
|
await this.update({ 'system.subactors': subActors });
|
||||||
}
|
}
|
||||||
@ -464,7 +473,7 @@ export class DarkStarsActor extends Actor {
|
|||||||
getOneSkill(skillId) {
|
getOneSkill(skillId) {
|
||||||
let skill = this.items.find(item => item.type == 'skill' && item.id == skillId)
|
let skill = this.items.find(item => item.type == 'skill' && item.id == skillId)
|
||||||
if (skill) {
|
if (skill) {
|
||||||
skill = duplicate(skill);
|
skill = foundry.utils.duplicate(skill);
|
||||||
}
|
}
|
||||||
return skill;
|
return skill;
|
||||||
}
|
}
|
||||||
@ -560,7 +569,7 @@ export class DarkStarsActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
modifyRerolls( value) {
|
modifyRerolls( value) {
|
||||||
let rerolls = duplicate(this.system.various.rerolls)
|
let rerolls = foundry.utils.duplicate(this.system.various.rerolls)
|
||||||
rerolls.value += value
|
rerolls.value += value
|
||||||
this.update({ 'system.various.rerolls': rerolls })
|
this.update({ 'system.various.rerolls': rerolls })
|
||||||
}
|
}
|
||||||
@ -576,6 +585,8 @@ export class DarkStarsActor extends Actor {
|
|||||||
let rollData = DarkStarsUtility.getBasicRollData()
|
let rollData = DarkStarsUtility.getBasicRollData()
|
||||||
rollData.alias = this.name
|
rollData.alias = this.name
|
||||||
rollData.actorImg = this.img
|
rollData.actorImg = this.img
|
||||||
|
console.log("Prepare common roll data for actor", this)
|
||||||
|
rollData.tokenId = this.token?.id
|
||||||
rollData.actorId = this.id
|
rollData.actorId = this.id
|
||||||
rollData.img = this.img
|
rollData.img = this.img
|
||||||
rollData.armors = this.getArmors()
|
rollData.armors = this.getArmors()
|
||||||
@ -616,24 +627,51 @@ export class DarkStarsActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
rollAbility(abilityKey) {
|
rollAttribute(attrKey) {
|
||||||
let rollData = this.getCommonRollData(abilityKey)
|
let rollData = this.getCommonRollData()
|
||||||
rollData.mode = "ability"
|
rollData.attr = foundry.utils.duplicate(this.system.attributes[attrKey])
|
||||||
|
rollData.mode = "attribute"
|
||||||
|
rollData.title = "Attribute " + rollData.attr.label
|
||||||
|
this.startRoll(rollData)
|
||||||
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
continueExtendedTest(testId) {
|
||||||
|
let test = this.items.get(testId)
|
||||||
|
if (test) {
|
||||||
|
let skill = this.items.find(it => it.type == "skill" && it.name.toLowerCase() == test.system.skill.toLowerCase())
|
||||||
|
if (skill) {
|
||||||
|
skill = foundry.utils.duplicate(skill)
|
||||||
|
this.updateSkill(skill)
|
||||||
|
let rollData = this.getCommonRollData()
|
||||||
|
rollData.mode = "extendedtest"
|
||||||
|
rollData.isExtended = true
|
||||||
|
rollData.extendedTest = test
|
||||||
|
rollData.title = "Extended test " + skill.name
|
||||||
|
rollData.skill = skill
|
||||||
|
rollData.img = skill.img
|
||||||
|
rollData.taskId = test.id
|
||||||
if (rollData.target) {
|
if (rollData.target) {
|
||||||
ui.notifications.warn("You are targetting a token with a skill : please use a Weapon instead.")
|
ui.notifications.warn("You are targetting a token with a skill : please use a Weapon instead.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
DarkStarsUtility.rollDarkStars(rollData)
|
this.startRoll(rollData)
|
||||||
|
} else {
|
||||||
|
console.log("Unable to find the relevant skill for extended test " + test.system.skill)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
console.log("Unable to find the extended test")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
rollSkill(skillId) {
|
async rollSkill(skillId, isExtended = false, taskId = undefined) {
|
||||||
let skill = this.items.get(skillId)
|
let skill = this.items.get(skillId)
|
||||||
if (skill) {
|
if (skill) {
|
||||||
skill = duplicate(skill)
|
skill = foundry.utils.duplicate(skill)
|
||||||
this.updateSkill(skill)
|
this.updateSkill(skill)
|
||||||
let rollData = this.getCommonRollData()
|
let rollData = this.getCommonRollData()
|
||||||
rollData.mode = "skill"
|
rollData.mode = "skill"
|
||||||
|
rollData.isExtended = isExtended
|
||||||
rollData.title = "Skill " + skill.name
|
rollData.title = "Skill " + skill.name
|
||||||
rollData.skill = skill
|
rollData.skill = skill
|
||||||
rollData.img = skill.img
|
rollData.img = skill.img
|
||||||
@ -641,6 +679,17 @@ export class DarkStarsActor extends Actor {
|
|||||||
ui.notifications.warn("You are targetting a token with a skill : please use a Weapon instead.")
|
ui.notifications.warn("You are targetting a token with a skill : please use a Weapon instead.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if (isExtended) {
|
||||||
|
rollData.title = "Extended Test " + skill.name
|
||||||
|
if (!taskId) {
|
||||||
|
let extendedTest = await this.createEmbeddedDocuments("Item", [{name: "Extended test " + skill.name, type: "extendedtest",
|
||||||
|
'system.skill': skill.name}])
|
||||||
|
//console.log("Task", cumulativeTask)
|
||||||
|
rollData.taskId = extendedTest[0].id
|
||||||
|
}else {
|
||||||
|
rollData.taskId = extendedTest[0].id
|
||||||
|
}
|
||||||
|
}
|
||||||
this.startRoll(rollData)
|
this.startRoll(rollData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -649,10 +698,10 @@ export class DarkStarsActor extends Actor {
|
|||||||
rollWeapon(weaponId) {
|
rollWeapon(weaponId) {
|
||||||
let weapon = this.items.get(weaponId)
|
let weapon = this.items.get(weaponId)
|
||||||
if (weapon) {
|
if (weapon) {
|
||||||
weapon = duplicate(weapon)
|
weapon = foundry.utils.duplicate(weapon)
|
||||||
let skill = this.items.find(item => item.name.toLowerCase() == weapon.system.skill.toLowerCase())
|
let skill = this.items.find(item => item.name.toLowerCase() == weapon.system.skill.toLowerCase())
|
||||||
if (skill) {
|
if (skill) {
|
||||||
skill = duplicate(skill)
|
skill = foundry.utils.duplicate(skill)
|
||||||
this.updateSkill(skill)
|
this.updateSkill(skill)
|
||||||
let rollData = this.getCommonRollData()
|
let rollData = this.getCommonRollData()
|
||||||
rollData.mode = "weapon"
|
rollData.mode = "weapon"
|
||||||
|
@ -21,7 +21,7 @@ export class DarkStarsCombat extends Combat {
|
|||||||
for (let cId of ids) {
|
for (let cId of ids) {
|
||||||
const c = this.combatants.get(cId);
|
const c = this.combatants.get(cId);
|
||||||
let id = c._id || c.id;
|
let id = c._id || c.id;
|
||||||
let initScore = c.actor ? c.actor.getInitiativeScore(this.id, id) : -1;
|
let initScore = c.actor ? await c.actor.getInitiativeScore(this.id, id) : -1;
|
||||||
await this.updateEmbeddedDocuments("Combatant", [{ _id: id, initiative: initScore }]);
|
await this.updateEmbeddedDocuments("Combatant", [{ _id: id, initiative: initScore }]);
|
||||||
setTimeout(() => this.processOtherTurns(c, initScore), 400)
|
setTimeout(() => this.processOtherTurns(c, initScore), 400)
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,72 @@
|
|||||||
|
|
||||||
export const DARKSTARS_CONFIG = {
|
export const DARKSTARS_CONFIG = {
|
||||||
|
|
||||||
|
sizeOptions: {
|
||||||
|
"1": "Tiny",
|
||||||
|
"2": "Small",
|
||||||
|
"3": "Medium",
|
||||||
|
"4": "Large",
|
||||||
|
"5": "Huge",
|
||||||
|
"6": "Gargantuan"
|
||||||
|
},
|
||||||
|
classNPC: {
|
||||||
|
"none": "None",
|
||||||
|
"chaplain": "Chaplain",
|
||||||
|
"magus": "Magus",
|
||||||
|
"martial": "Martial",
|
||||||
|
"skalawag": "Skalawag",
|
||||||
|
"warden": "Warden"
|
||||||
|
},
|
||||||
|
synergyBonus: {
|
||||||
|
"0": "0",
|
||||||
|
"5": "+5%",
|
||||||
|
"+6": "+6%",
|
||||||
|
"+7": "+7%",
|
||||||
|
"+8": "+8%",
|
||||||
|
"+9": "+9%",
|
||||||
|
"+10": "+10%"
|
||||||
|
},
|
||||||
|
attributeModifier: [
|
||||||
|
{value: "0", label: "None"},
|
||||||
|
{value: "-1", label: "Difficult (-1)"},
|
||||||
|
{value: "-3", label: "Hard (-3)"},
|
||||||
|
{value: "-6", label: "Very Hard (-6)"},
|
||||||
|
{value: "-9", label: "Impossible (-9)"}
|
||||||
|
],
|
||||||
|
weaponAiming: {
|
||||||
|
"none": "None",
|
||||||
|
" arm": "Arm (-50)",
|
||||||
|
"head": "Head (-50)",
|
||||||
|
"torso": "Torso(-30)",
|
||||||
|
"leg": "Leg (-30)",
|
||||||
|
"hand": "Hand/Weapon (-70)"
|
||||||
|
},
|
||||||
|
rollModifiers: [
|
||||||
|
{ "value": "-80", "label": "-80%" },
|
||||||
|
{ "value": "-70", "label": "-70%" },
|
||||||
|
{ "value": "-60", "label": "-60%" },
|
||||||
|
{ "value": "-50", "label": "-50%" },
|
||||||
|
{ "value": "-40", "label": "-40%" },
|
||||||
|
{ "value": "-30", "label": "-30%" },
|
||||||
|
{ "value": "-20", "label": "-20%" },
|
||||||
|
{ "value": "-10", "label": "-10%" },
|
||||||
|
{ "value": "0", "label": "0%" },
|
||||||
|
{ "value": "+10", "label": "+10%" },
|
||||||
|
{ "value": "+20", "label": "+20%" },
|
||||||
|
{ "value": "+30", "label": "+30%" },
|
||||||
|
{ "value": "+40", "label": "+40%" }
|
||||||
|
],
|
||||||
|
abilityValues: {
|
||||||
|
"0": "0",
|
||||||
|
"1": "1",
|
||||||
|
"2": "2",
|
||||||
|
"3": "3",
|
||||||
|
"4": "4",
|
||||||
|
"5": "5",
|
||||||
|
"6": "6",
|
||||||
|
"7": "7",
|
||||||
|
"8": "8"
|
||||||
|
},
|
||||||
basebonus : {
|
basebonus : {
|
||||||
"csb": "CSB",
|
"csb": "CSB",
|
||||||
"ssb": "SSB",
|
"ssb": "SSB",
|
||||||
|
@ -9,7 +9,7 @@ export class DarkStarsItemSheet extends ItemSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
classes: ["fvtt-dark-stars", "sheet", "item"],
|
classes: ["fvtt-dark-stars", "sheet", "item"],
|
||||||
template: "systems/fvtt-dark-stars/templates/items/item-sheet.hbs",
|
template: "systems/fvtt-dark-stars/templates/items/item-sheet.hbs",
|
||||||
dragDrop: [{ dragSelector: null, dropSelector: null }],
|
dragDrop: [{ dragSelector: null, dropSelector: null }],
|
||||||
@ -49,7 +49,7 @@ export class DarkStarsItemSheet extends ItemSheet {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async getData() {
|
async getData() {
|
||||||
|
|
||||||
let objectData = duplicate(this.object.system)
|
let objectData = foundry.utils.duplicate(this.object.system)
|
||||||
|
|
||||||
let formData = {
|
let formData = {
|
||||||
title: this.title,
|
title: this.title,
|
||||||
@ -87,7 +87,7 @@ export class DarkStarsItemSheet extends ItemSheet {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
postItem() {
|
postItem() {
|
||||||
let chatData = duplicate(DarkStarsUtility.data(this.item));
|
let chatData = foundry.utils.duplicate(DarkStarsUtility.data(this.item));
|
||||||
if (this.actor) {
|
if (this.actor) {
|
||||||
chatData.actor = { id: this.actor.id };
|
chatData.actor = { id: this.actor.id };
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ export class DarkStarsNPCSheet extends ActorSheet {
|
|||||||
/** @override */
|
/** @override */
|
||||||
static get defaultOptions() {
|
static get defaultOptions() {
|
||||||
|
|
||||||
return mergeObject(super.defaultOptions, {
|
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||||
classes: ["dark-stars-rpg", "sheet", "actor"],
|
classes: ["dark-stars-rpg", "sheet", "actor"],
|
||||||
template: "systems/fvtt-dark-stars/templates/npc-sheet.hbs",
|
template: "systems/fvtt-dark-stars/templates/npc-sheet.hbs",
|
||||||
width: 640,
|
width: 640,
|
||||||
@ -25,7 +25,7 @@ export class DarkStarsNPCSheet extends ActorSheet {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async getData() {
|
async getData() {
|
||||||
const objectData = this.object.system
|
const objectData = this.object.system
|
||||||
let actorData = duplicate(objectData)
|
let actorData = foundry.utils.duplicate(objectData)
|
||||||
|
|
||||||
let formData = {
|
let formData = {
|
||||||
title: this.title,
|
title: this.title,
|
||||||
@ -38,21 +38,22 @@ export class DarkStarsNPCSheet extends ActorSheet {
|
|||||||
data: actorData,
|
data: actorData,
|
||||||
limited: this.object.limited,
|
limited: this.object.limited,
|
||||||
skills: this.actor.getSkills( ),
|
skills: this.actor.getSkills( ),
|
||||||
weapons: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getWeapons()) ),
|
weapons: this.actor.checkAndPrepareEquipments( foundry.utils.duplicate(this.actor.getWeapons()) ),
|
||||||
armors: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getArmors())),
|
armors: this.actor.checkAndPrepareEquipments( foundry.utils.duplicate(this.actor.getArmors())),
|
||||||
shields: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getShields())),
|
shields: this.actor.checkAndPrepareEquipments( foundry.utils.duplicate(this.actor.getShields())),
|
||||||
spells: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getLore())),
|
spells: this.actor.checkAndPrepareEquipments( foundry.utils.duplicate(this.actor.getLore())),
|
||||||
equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsOnly()) ),
|
equipments: this.actor.checkAndPrepareEquipments(foundry.utils.duplicate(this.actor.getEquipmentsOnly()) ),
|
||||||
equippedWeapons: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquippedWeapons()) ),
|
equippedWeapons: this.actor.checkAndPrepareEquipments(foundry.utils.duplicate(this.actor.getEquippedWeapons()) ),
|
||||||
equippedArmor: this.actor.getEquippedArmor(),
|
equippedArmor: this.actor.getEquippedArmor(),
|
||||||
equippedShield: this.actor.getEquippedShield(),
|
equippedShield: this.actor.getEquippedShield(),
|
||||||
feats: duplicate(this.actor.getFeats()),
|
feats: foundry.utils.duplicate(this.actor.getFeats()),
|
||||||
subActors: duplicate(this.actor.getSubActors()),
|
subActors: foundry.utils.duplicate(this.actor.getSubActors()),
|
||||||
race: duplicate(this.actor.getRace()),
|
race: foundry.utils.duplicate(this.actor.getRace()),
|
||||||
moneys: duplicate(this.actor.getMoneys()),
|
moneys: foundry.utils.duplicate(this.actor.getMoneys()),
|
||||||
encCapacity: this.actor.getEncumbranceCapacity(),
|
encCapacity: this.actor.getEncumbranceCapacity(),
|
||||||
saveRolls: this.actor.getSaveRoll(),
|
saveRolls: this.actor.getSaveRoll(),
|
||||||
conditions: this.actor.getConditions(),
|
conditions: this.actor.getConditions(),
|
||||||
|
config: game.system.darkstars.config,
|
||||||
containersTree: this.actor.containersTree,
|
containersTree: this.actor.containersTree,
|
||||||
encCurrent: this.actor.encCurrent,
|
encCurrent: this.actor.encCurrent,
|
||||||
options: this.options,
|
options: this.options,
|
||||||
|
@ -67,8 +67,14 @@ export class DarkStarsRollDialog extends Dialog {
|
|||||||
html.find('#weapon-aiming').change((event) => {
|
html.find('#weapon-aiming').change((event) => {
|
||||||
this.rollData.weaponAiming = String(event.currentTarget.value)
|
this.rollData.weaponAiming = String(event.currentTarget.value)
|
||||||
})
|
})
|
||||||
|
html.find('#synergy-bonus').change((event) => {
|
||||||
|
this.rollData.synergyBonus = Number(event.currentTarget.value)
|
||||||
|
})
|
||||||
|
html.find('#extra-time').change((event) => {
|
||||||
|
this.rollData.extraTime = event.currentTarget.checked
|
||||||
|
})
|
||||||
|
html.find('#attribute-modifier').change((event) => {
|
||||||
|
this.rollData.attributeModifier = Number(event.currentTarget.value)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,9 +11,7 @@ export class DarkStarsUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async init() {
|
static async init() {
|
||||||
Hooks.on('renderChatLog', (log, html, data) => DarkStarsUtility.chatListeners(html));
|
Hooks.on('renderChatLog', (log, html, data) => DarkStarsUtility.chatListeners(html));
|
||||||
/*Hooks.on("dropCanvasData", (canvas, data) => {
|
Hooks.on('renderChatMessage', (message, html, data) => DarkStarsUtility.chatMessageHandler(message, html, data))
|
||||||
DarkStarsUtility.dropItemOnToken(canvas, data)
|
|
||||||
});*/
|
|
||||||
|
|
||||||
DarkStarsCommands.init();
|
DarkStarsCommands.init();
|
||||||
|
|
||||||
@ -43,13 +41,28 @@ export class DarkStarsUtility {
|
|||||||
return __locationNames[key]
|
return __locationNames[key]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
this.gameSettings()
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
static gameSettings() {
|
static async processOpposed(rollData) {
|
||||||
|
if (this.currentOpposition) {
|
||||||
|
let opposed = {
|
||||||
|
winner: this.currentOpposition,
|
||||||
|
looser: rollData,
|
||||||
|
isOpposed : true
|
||||||
|
}
|
||||||
|
if (rollData.degrees > this.currentOpposition.degrees ) {
|
||||||
|
opposed.winner = rollData
|
||||||
|
opposed.looser = this.currentOpposition
|
||||||
|
}
|
||||||
|
let msg = await this.createChatWithRollMode(rollData.alias, {
|
||||||
|
content: await renderTemplate(`systems/fvtt-dark-stars/templates/chat/chat-opposition-result.hbs`, opposed)
|
||||||
|
})
|
||||||
|
await msg.setFlag("world", "darkstars-roll-data", opposed)
|
||||||
|
} else {
|
||||||
|
this.currentOpposition = rollData
|
||||||
|
ui.notifications.info("Opposed rolls started with " + rollData.alias );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
@ -60,7 +73,7 @@ export class DarkStarsUtility {
|
|||||||
|
|
||||||
/*-------------------------------------------- */
|
/*-------------------------------------------- */
|
||||||
static getSkills() {
|
static getSkills() {
|
||||||
return duplicate(this.skills)
|
return foundry.utils.duplicate(this.skills)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -96,6 +109,13 @@ export class DarkStarsUtility {
|
|||||||
rollData.roll = undefined
|
rollData.roll = undefined
|
||||||
this.rollDarkStars(rollData)
|
this.rollDarkStars(rollData)
|
||||||
})
|
})
|
||||||
|
html.on("click", '.chat-roll-opposed', event => {
|
||||||
|
let messageId = this.findChatMessageId(event.currentTarget)
|
||||||
|
let message = game.messages.get(messageId)
|
||||||
|
let rollData = message.getFlag("world", "darkstars-roll-data")
|
||||||
|
this.processOpposed(rollData)
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -103,10 +123,8 @@ export class DarkStarsUtility {
|
|||||||
|
|
||||||
const templatePaths = [
|
const templatePaths = [
|
||||||
'systems/fvtt-dark-stars/templates/partials/editor-notes-gm.hbs',
|
'systems/fvtt-dark-stars/templates/partials/editor-notes-gm.hbs',
|
||||||
'systems/fvtt-dark-stars/templates/partials/partial-roll-select.hbs',
|
|
||||||
'systems/fvtt-dark-stars/templates/partials/partial-actor-ability-block.hbs',
|
'systems/fvtt-dark-stars/templates/partials/partial-actor-ability-block.hbs',
|
||||||
'systems/fvtt-dark-stars/templates/partials/partial-actor-status.hbs',
|
'systems/fvtt-dark-stars/templates/partials/partial-actor-status.hbs',
|
||||||
'systems/fvtt-dark-stars/templates/partials/partial-options-abilities.hbs',
|
|
||||||
'systems/fvtt-dark-stars/templates/partials/partial-item-nav.hbs',
|
'systems/fvtt-dark-stars/templates/partials/partial-item-nav.hbs',
|
||||||
'systems/fvtt-dark-stars/templates/partials/partial-item-description.hbs',
|
'systems/fvtt-dark-stars/templates/partials/partial-item-description.hbs',
|
||||||
'systems/fvtt-dark-stars/templates/partials/partial-actor-equipment.hbs'
|
'systems/fvtt-dark-stars/templates/partials/partial-actor-equipment.hbs'
|
||||||
@ -275,12 +293,41 @@ export class DarkStarsUtility {
|
|||||||
static async rollDarkStars(rollData) {
|
static async rollDarkStars(rollData) {
|
||||||
|
|
||||||
let actor = game.actors.get(rollData.actorId)
|
let actor = game.actors.get(rollData.actorId)
|
||||||
|
if (rollData.tokenId) {
|
||||||
|
actor = game.canvas.tokens.get(rollData.tokenId).actor
|
||||||
|
}
|
||||||
|
|
||||||
|
// Specific attribute
|
||||||
|
if (rollData.attr) {
|
||||||
|
rollData.isSuccess = false
|
||||||
|
rollData.isFailure = false
|
||||||
|
rollData.targetNumber = Math.max( rollData.attr.value + rollData.attributeModifier, 0)
|
||||||
|
let myRoll = await new Roll("1d10").roll()
|
||||||
|
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||||
|
if (myRoll.total <= rollData.targetNumber) {
|
||||||
|
rollData.isSuccess = true
|
||||||
|
rollData.isFailure = false
|
||||||
|
}
|
||||||
|
rollData.roll = foundry.utils.duplicate(myRoll)
|
||||||
|
rollData.diceResult = myRoll.total
|
||||||
|
let msg = await this.createChatWithRollMode(rollData.alias, {
|
||||||
|
content: await renderTemplate(`systems/fvtt-dark-stars/templates/chat/chat-attribute-result.hbs`, rollData)
|
||||||
|
})
|
||||||
|
msg.setFlag("world", "darkstars-roll-data", rollData)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// ability/save/size => 0
|
// ability/save/size => 0
|
||||||
rollData.percentValue = 0
|
rollData.percentValue = 0
|
||||||
if (rollData.skill) {
|
if (rollData.skill) {
|
||||||
rollData.percentValue = rollData.skill.total
|
rollData.percentValue = rollData.skill.total
|
||||||
}
|
}
|
||||||
|
if (rollData.synergyBonus) {
|
||||||
|
rollData.percentValue += rollData.synergyBonus
|
||||||
|
}
|
||||||
|
if (rollData.extraTime) {
|
||||||
|
rollData.percentValue += 30
|
||||||
|
}
|
||||||
rollData.percentValue += rollData.bonusMalus
|
rollData.percentValue += rollData.bonusMalus
|
||||||
rollData.diceFormula = "1d100"
|
rollData.diceFormula = "1d100"
|
||||||
|
|
||||||
@ -293,20 +340,21 @@ export class DarkStarsUtility {
|
|||||||
rollData.locationMalus = this.getAimingMalus(rollData.weaponAiming)
|
rollData.locationMalus = this.getAimingMalus(rollData.weaponAiming)
|
||||||
rollData.percentValue += rollData.locationMalus
|
rollData.percentValue += rollData.locationMalus
|
||||||
}
|
}
|
||||||
|
rollData.percentValue = Math.max(rollData.percentValue, 0)
|
||||||
|
|
||||||
// Performs roll
|
// Performs roll
|
||||||
console.log("Roll formula", rollData.diceFormula)
|
|
||||||
let myRoll = rollData.roll
|
let myRoll = rollData.roll
|
||||||
if (!myRoll) { // New rolls only of no rerolls
|
if (!myRoll) { // New rolls only of no rerolls
|
||||||
myRoll = new Roll(rollData.diceFormula).roll({ async: false })
|
myRoll = await new Roll(rollData.diceFormula).roll()
|
||||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||||
}
|
}
|
||||||
rollData.roll = duplicate(myRoll)
|
rollData.roll = foundry.utils.duplicate(myRoll)
|
||||||
rollData.diceResult = myRoll.total
|
rollData.diceResult = myRoll.total
|
||||||
rollData.isCriticalSuccess = rollData.diceResult <= rollData.skill.derivated.value
|
rollData.isCriticalSuccess = rollData.diceResult <= rollData.skill.derivated.value
|
||||||
rollData.isCriticalFailure = rollData.diceResult == 100
|
rollData.isCriticalFailure = rollData.diceResult == 100
|
||||||
rollData.isSuccess = rollData.diceResult == 1 || rollData.diceResult <= rollData.percentValue
|
rollData.isSuccess = rollData.diceResult == 1 || rollData.diceResult <= rollData.percentValue
|
||||||
rollData.isFailure = rollData.diceResult == 100 || rollData.diceResult > rollData.percentValue
|
rollData.isFailure = rollData.diceResult == 100 || rollData.diceResult > rollData.percentValue
|
||||||
rollData.degrees = Math.floor(rollData.percentValue / 10) - Math.floor(rollData.diceResult / 10)
|
rollData.degrees = Math.floor((rollData.percentValue - rollData.diceResult) / 10)
|
||||||
rollData.damageMultiplier = rollData.isCriticalSuccess ? 2 : 1
|
rollData.damageMultiplier = rollData.isCriticalSuccess ? 2 : 1
|
||||||
|
|
||||||
if (rollData.reroll) {
|
if (rollData.reroll) {
|
||||||
@ -323,6 +371,20 @@ export class DarkStarsUtility {
|
|||||||
rollData.locationMultiplier = this.locationMultiplier(rollData.weaponAiming)
|
rollData.locationMultiplier = this.locationMultiplier(rollData.weaponAiming)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Task management
|
||||||
|
if (rollData.taskId) {
|
||||||
|
let task = actor.getItem(rollData.taskId)
|
||||||
|
console.log(" Task", task, rollData.taskId)
|
||||||
|
if (task) {
|
||||||
|
let newCumulated = rollData.degrees + task.system.cumulated
|
||||||
|
let nbrolls = task.system.nbrolls + 1
|
||||||
|
task.update({ 'system.cumulated': newCumulated, 'system.nbrolls': nbrolls })
|
||||||
|
rollData.taskName = task.name
|
||||||
|
rollData.taskCumulated = newCumulated
|
||||||
|
rollData.taskNbrolls = nbrolls
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let msg = await this.createChatWithRollMode(rollData.alias, {
|
let msg = await this.createChatWithRollMode(rollData.alias, {
|
||||||
content: await renderTemplate(`systems/fvtt-dark-stars/templates/chat/chat-generic-result.hbs`, rollData)
|
content: await renderTemplate(`systems/fvtt-dark-stars/templates/chat/chat-generic-result.hbs`, rollData)
|
||||||
})
|
})
|
||||||
@ -350,6 +412,19 @@ export class DarkStarsUtility {
|
|||||||
static getUsers(filter) {
|
static getUsers(filter) {
|
||||||
return game.users.filter(filter).map(user => user.id);
|
return game.users.filter(filter).map(user => user.id);
|
||||||
}
|
}
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
static async chatMessageHandler(message, html, data) {
|
||||||
|
const chatCard = html.find('.gm-actions')
|
||||||
|
if (chatCard.length > 0) {
|
||||||
|
// If the user is the message author or the actor owner, proceed
|
||||||
|
const actor = game.actors.get(data.message.speaker.actor)
|
||||||
|
if (actor?.isOwner) return
|
||||||
|
else if (game.user.isGM || data.author.id === game.user.id) return
|
||||||
|
const divButtons = chatCard.find('.gm-actions')
|
||||||
|
divButtons.hide()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getWhisperRecipients(rollMode, name) {
|
static getWhisperRecipients(rollMode, name) {
|
||||||
switch (rollMode) {
|
switch (rollMode) {
|
||||||
@ -367,7 +442,7 @@ export class DarkStarsUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static blindMessageToGM(chatOptions) {
|
static blindMessageToGM(chatOptions) {
|
||||||
let chatGM = duplicate(chatOptions);
|
let chatGM = foundry.utils.duplicate(chatOptions);
|
||||||
chatGM.whisper = this.getUsers(user => user.isGM);
|
chatGM.whisper = this.getUsers(user => user.isGM);
|
||||||
chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content;
|
chatGM.content = "Blinde message of " + game.user.name + "<br>" + chatOptions.content;
|
||||||
console.log("blindMessageToGM", chatGM);
|
console.log("blindMessageToGM", chatGM);
|
||||||
@ -428,11 +503,15 @@ export class DarkStarsUtility {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getBasicRollData() {
|
static getBasicRollData() {
|
||||||
let rollData = {
|
let rollData = {
|
||||||
rollId: randomID(16),
|
rollId: foundry.utils.randomID(16),
|
||||||
rollMode: game.settings.get("core", "rollMode"),
|
rollMode: game.settings.get("core", "rollMode"),
|
||||||
bonusMalus: 0,
|
bonusMalus: 0,
|
||||||
isAboveEffectiveRange: false,
|
isAboveEffectiveRange: false,
|
||||||
weaponAiming: "none"
|
weaponAiming: "none",
|
||||||
|
synergyBonus: 0,
|
||||||
|
extraTime: false,
|
||||||
|
attributeModifier: 0,
|
||||||
|
config: game.system.darkstars.config,
|
||||||
}
|
}
|
||||||
DarkStarsUtility.updateWithTarget(rollData)
|
DarkStarsUtility.updateWithTarget(rollData)
|
||||||
return rollData
|
return rollData
|
||||||
|
@ -1 +1 @@
|
|||||||
MANIFEST-000164
|
MANIFEST-000208
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2024/02/26-14:13:38.988782 7f13374006c0 Recovering log #162
|
2024/06/12-11:13:40.413261 7f3f0d6006c0 Recovering log #206
|
||||||
2024/02/26-14:13:38.999307 7f13374006c0 Delete type=3 #160
|
2024/06/12-11:13:40.424230 7f3f0d6006c0 Delete type=3 #204
|
||||||
2024/02/26-14:13:38.999433 7f13374006c0 Delete type=0 #162
|
2024/06/12-11:13:40.424287 7f3f0d6006c0 Delete type=0 #206
|
||||||
2024/02/26-14:20:24.273426 7f132fe006c0 Level-0 table #167: started
|
2024/06/12-11:16:23.489560 7f3f060006c0 Level-0 table #211: started
|
||||||
2024/02/26-14:20:24.273466 7f132fe006c0 Level-0 table #167: 0 bytes OK
|
2024/06/12-11:16:23.489605 7f3f060006c0 Level-0 table #211: 0 bytes OK
|
||||||
2024/02/26-14:20:24.280039 7f132fe006c0 Delete type=0 #165
|
2024/06/12-11:16:23.520840 7f3f060006c0 Delete type=0 #209
|
||||||
2024/02/26-14:20:24.287744 7f132fe006c0 Manual compaction at level-0 from '!folders!MA6uFJMVebGeayIk' @ 72057594037927935 : 1 .. '!items!zhjdppKgrON7wJn7' @ 0 : 0; will stop at (end)
|
2024/06/12-11:16:23.590686 7f3f060006c0 Manual compaction at level-0 from '!folders!MA6uFJMVebGeayIk' @ 72057594037927935 : 1 .. '!items!zhjdppKgrON7wJn7' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2024/02/25-13:25:19.760043 7f0428e006c0 Recovering log #158
|
2024/06/12-11:13:16.247740 7f3f0ea006c0 Recovering log #202
|
||||||
2024/02/25-13:25:19.770300 7f0428e006c0 Delete type=3 #156
|
2024/06/12-11:13:16.258091 7f3f0ea006c0 Delete type=3 #200
|
||||||
2024/02/25-13:25:19.770349 7f0428e006c0 Delete type=0 #158
|
2024/06/12-11:13:16.258153 7f3f0ea006c0 Delete type=0 #202
|
||||||
2024/02/25-15:40:12.540906 7f0421a006c0 Level-0 table #163: started
|
2024/06/12-11:13:34.719686 7f3f060006c0 Level-0 table #207: started
|
||||||
2024/02/25-15:40:12.541352 7f0421a006c0 Level-0 table #163: 0 bytes OK
|
2024/06/12-11:13:34.719708 7f3f060006c0 Level-0 table #207: 0 bytes OK
|
||||||
2024/02/25-15:40:12.547853 7f0421a006c0 Delete type=0 #161
|
2024/06/12-11:13:34.726803 7f3f060006c0 Delete type=0 #205
|
||||||
2024/02/25-15:40:12.555529 7f0421a006c0 Manual compaction at level-0 from '!folders!MA6uFJMVebGeayIk' @ 72057594037927935 : 1 .. '!items!zhjdppKgrON7wJn7' @ 0 : 0; will stop at (end)
|
2024/06/12-11:13:34.733250 7f3f060006c0 Manual compaction at level-0 from '!folders!MA6uFJMVebGeayIk' @ 72057594037927935 : 1 .. '!items!zhjdppKgrON7wJn7' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000157
|
MANIFEST-000201
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2024/02/26-14:13:39.006215 7f133ce006c0 Recovering log #155
|
2024/06/12-11:13:40.426654 7f3f0ea006c0 Recovering log #199
|
||||||
2024/02/26-14:13:39.017058 7f133ce006c0 Delete type=3 #153
|
2024/06/12-11:13:40.437435 7f3f0ea006c0 Delete type=3 #197
|
||||||
2024/02/26-14:13:39.017184 7f133ce006c0 Delete type=0 #155
|
2024/06/12-11:13:40.437506 7f3f0ea006c0 Delete type=0 #199
|
||||||
2024/02/26-14:20:24.266061 7f132fe006c0 Level-0 table #160: started
|
2024/06/12-11:16:23.521086 7f3f060006c0 Level-0 table #204: started
|
||||||
2024/02/26-14:20:24.266133 7f132fe006c0 Level-0 table #160: 0 bytes OK
|
2024/06/12-11:16:23.521151 7f3f060006c0 Level-0 table #204: 0 bytes OK
|
||||||
2024/02/26-14:20:24.273275 7f132fe006c0 Delete type=0 #158
|
2024/06/12-11:16:23.553911 7f3f060006c0 Delete type=0 #202
|
||||||
2024/02/26-14:20:24.287729 7f132fe006c0 Manual compaction at level-0 from '!folders!47aGmBuk1mHtbFFU' @ 72057594037927935 : 1 .. '!items!zwMpjsE84sk26eej' @ 0 : 0; will stop at (end)
|
2024/06/12-11:16:23.590700 7f3f060006c0 Manual compaction at level-0 from '!folders!47aGmBuk1mHtbFFU' @ 72057594037927935 : 1 .. '!items!zwMpjsE84sk26eej' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2024/02/25-13:25:19.773014 7f04234006c0 Recovering log #151
|
2024/06/12-11:13:16.262812 7f3f0d6006c0 Recovering log #195
|
||||||
2024/02/25-13:25:19.782933 7f04234006c0 Delete type=3 #149
|
2024/06/12-11:13:16.272606 7f3f0d6006c0 Delete type=3 #193
|
||||||
2024/02/25-13:25:19.782991 7f04234006c0 Delete type=0 #151
|
2024/06/12-11:13:16.272662 7f3f0d6006c0 Delete type=0 #195
|
||||||
2024/02/25-15:40:12.548028 7f0421a006c0 Level-0 table #156: started
|
2024/06/12-11:13:34.727044 7f3f060006c0 Level-0 table #200: started
|
||||||
2024/02/25-15:40:12.548061 7f0421a006c0 Level-0 table #156: 0 bytes OK
|
2024/06/12-11:13:34.727098 7f3f060006c0 Level-0 table #200: 0 bytes OK
|
||||||
2024/02/25-15:40:12.555343 7f0421a006c0 Delete type=0 #154
|
2024/06/12-11:13:34.733076 7f3f060006c0 Delete type=0 #198
|
||||||
2024/02/25-15:40:12.555542 7f0421a006c0 Manual compaction at level-0 from '!folders!47aGmBuk1mHtbFFU' @ 72057594037927935 : 1 .. '!items!zwMpjsE84sk26eej' @ 0 : 0; will stop at (end)
|
2024/06/12-11:13:34.733265 7f3f060006c0 Manual compaction at level-0 from '!folders!47aGmBuk1mHtbFFU' @ 72057594037927935 : 1 .. '!items!zwMpjsE84sk26eej' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000210
|
MANIFEST-000254
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2024/02/26-14:13:38.913763 7f13374006c0 Recovering log #208
|
2024/06/12-11:13:40.356313 7f3f0d6006c0 Recovering log #252
|
||||||
2024/02/26-14:13:38.925039 7f13374006c0 Delete type=3 #206
|
2024/06/12-11:13:40.366003 7f3f0d6006c0 Delete type=3 #250
|
||||||
2024/02/26-14:13:38.925223 7f13374006c0 Delete type=0 #208
|
2024/06/12-11:13:40.366126 7f3f0d6006c0 Delete type=0 #252
|
||||||
2024/02/26-14:20:24.237608 7f132fe006c0 Level-0 table #213: started
|
2024/06/12-11:16:23.317811 7f3f060006c0 Level-0 table #257: started
|
||||||
2024/02/26-14:20:24.237681 7f132fe006c0 Level-0 table #213: 0 bytes OK
|
2024/06/12-11:16:23.317841 7f3f060006c0 Level-0 table #257: 0 bytes OK
|
||||||
2024/02/26-14:20:24.244690 7f132fe006c0 Delete type=0 #211
|
2024/06/12-11:16:23.355645 7f3f060006c0 Delete type=0 #255
|
||||||
2024/02/26-14:20:24.259041 7f132fe006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2024/06/12-11:16:23.460439 7f3f060006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2024/02/25-13:25:19.703338 7f0428e006c0 Recovering log #204
|
2024/06/12-11:13:16.189039 7f3f0ea006c0 Recovering log #248
|
||||||
2024/02/25-13:25:19.713635 7f0428e006c0 Delete type=3 #202
|
2024/06/12-11:13:16.200829 7f3f0ea006c0 Delete type=3 #246
|
||||||
2024/02/25-13:25:19.713706 7f0428e006c0 Delete type=0 #204
|
2024/06/12-11:13:16.200927 7f3f0ea006c0 Delete type=0 #248
|
||||||
2024/02/25-15:40:12.512691 7f0421a006c0 Level-0 table #209: started
|
2024/06/12-11:13:34.657802 7f3f060006c0 Level-0 table #253: started
|
||||||
2024/02/25-15:40:12.512744 7f0421a006c0 Level-0 table #209: 0 bytes OK
|
2024/06/12-11:13:34.657837 7f3f060006c0 Level-0 table #253: 0 bytes OK
|
||||||
2024/02/25-15:40:12.519870 7f0421a006c0 Delete type=0 #207
|
2024/06/12-11:13:34.663971 7f3f060006c0 Delete type=0 #251
|
||||||
2024/02/25-15:40:12.526721 7f0421a006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2024/06/12-11:13:34.681143 7f3f060006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/conditions/MANIFEST-000254
Normal file
BIN
packs/conditions/MANIFEST-000254
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000210
|
MANIFEST-000254
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2024/02/26-14:13:38.930692 7f133ce006c0 Recovering log #208
|
2024/06/12-11:13:40.368093 7f3f0ea006c0 Recovering log #252
|
||||||
2024/02/26-14:13:38.941919 7f133ce006c0 Delete type=3 #206
|
2024/06/12-11:13:40.379978 7f3f0ea006c0 Delete type=3 #250
|
||||||
2024/02/26-14:13:38.942031 7f133ce006c0 Delete type=0 #208
|
2024/06/12-11:13:40.380078 7f3f0ea006c0 Delete type=0 #252
|
||||||
2024/02/26-14:20:24.244869 7f132fe006c0 Level-0 table #213: started
|
2024/06/12-11:16:23.408873 7f3f060006c0 Level-0 table #257: started
|
||||||
2024/02/26-14:20:24.244926 7f132fe006c0 Level-0 table #213: 0 bytes OK
|
2024/06/12-11:16:23.408929 7f3f060006c0 Level-0 table #257: 0 bytes OK
|
||||||
2024/02/26-14:20:24.251440 7f132fe006c0 Delete type=0 #211
|
2024/06/12-11:16:23.460072 7f3f060006c0 Delete type=0 #255
|
||||||
2024/02/26-14:20:24.259056 7f132fe006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2024/06/12-11:16:23.460493 7f3f060006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2024/02/25-13:25:19.716119 7f04234006c0 Recovering log #204
|
2024/06/12-11:13:16.204139 7f3f0d6006c0 Recovering log #248
|
||||||
2024/02/25-13:25:19.727169 7f04234006c0 Delete type=3 #202
|
2024/06/12-11:13:16.215399 7f3f0d6006c0 Delete type=3 #246
|
||||||
2024/02/25-13:25:19.727244 7f04234006c0 Delete type=0 #204
|
2024/06/12-11:13:16.215490 7f3f0d6006c0 Delete type=0 #248
|
||||||
2024/02/25-15:40:12.520043 7f0421a006c0 Level-0 table #209: started
|
2024/06/12-11:13:34.692534 7f3f060006c0 Level-0 table #253: started
|
||||||
2024/02/25-15:40:12.520077 7f0421a006c0 Level-0 table #209: 0 bytes OK
|
2024/06/12-11:13:34.692577 7f3f060006c0 Level-0 table #253: 0 bytes OK
|
||||||
2024/02/25-15:40:12.526536 7f0421a006c0 Delete type=0 #207
|
2024/06/12-11:13:34.698872 7f3f060006c0 Delete type=0 #251
|
||||||
2024/02/25-15:40:12.533719 7f0421a006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
2024/06/12-11:13:34.713306 7f3f060006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/currency/MANIFEST-000254
Normal file
BIN
packs/currency/MANIFEST-000254
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000022
|
MANIFEST-000066
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2024/02/26-14:13:38.966465 7f13374006c0 Recovering log #20
|
2024/06/12-11:13:40.398008 7f3f0d6006c0 Recovering log #64
|
||||||
2024/02/26-14:13:38.977463 7f13374006c0 Delete type=3 #18
|
2024/06/12-11:13:40.408278 7f3f0d6006c0 Delete type=3 #62
|
||||||
2024/02/26-14:13:38.977548 7f13374006c0 Delete type=0 #20
|
2024/06/12-11:13:40.408353 7f3f0d6006c0 Delete type=0 #64
|
||||||
2024/02/26-14:20:24.259303 7f132fe006c0 Level-0 table #25: started
|
2024/06/12-11:16:23.554104 7f3f060006c0 Level-0 table #69: started
|
||||||
2024/02/26-14:20:24.259357 7f132fe006c0 Level-0 table #25: 0 bytes OK
|
2024/06/12-11:16:23.554144 7f3f060006c0 Level-0 table #69: 0 bytes OK
|
||||||
2024/02/26-14:20:24.265823 7f132fe006c0 Delete type=0 #23
|
2024/06/12-11:16:23.590465 7f3f060006c0 Delete type=0 #67
|
||||||
2024/02/26-14:20:24.287708 7f132fe006c0 Manual compaction at level-0 from '!folders!La3YsNYFddQnmsba' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
2024/06/12-11:16:23.590737 7f3f060006c0 Manual compaction at level-0 from '!folders!La3YsNYFddQnmsba' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
||||||
2024/02/26-14:20:24.287792 7f132fe006c0 Manual compaction at level-1 from '!folders!La3YsNYFddQnmsba' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
2024/06/12-11:16:23.590756 7f3f060006c0 Manual compaction at level-1 from '!folders!La3YsNYFddQnmsba' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2024/02/25-13:25:19.744621 7f0428e006c0 Recovering log #16
|
2024/06/12-11:13:16.233304 7f3f0ea006c0 Recovering log #60
|
||||||
2024/02/25-13:25:19.754834 7f0428e006c0 Delete type=3 #14
|
2024/06/12-11:13:16.243341 7f3f0ea006c0 Delete type=3 #58
|
||||||
2024/02/25-13:25:19.754885 7f0428e006c0 Delete type=0 #16
|
2024/06/12-11:13:16.243395 7f3f0ea006c0 Delete type=0 #60
|
||||||
2024/02/25-15:40:12.533736 7f0421a006c0 Level-0 table #21: started
|
2024/06/12-11:13:34.713340 7f3f060006c0 Level-0 table #65: started
|
||||||
2024/02/25-15:40:12.533778 7f0421a006c0 Level-0 table #21: 0 bytes OK
|
2024/06/12-11:13:34.713379 7f3f060006c0 Level-0 table #65: 0 bytes OK
|
||||||
2024/02/25-15:40:12.540676 7f0421a006c0 Delete type=0 #19
|
2024/06/12-11:13:34.719558 7f3f060006c0 Delete type=0 #63
|
||||||
2024/02/25-15:40:12.555489 7f0421a006c0 Manual compaction at level-0 from '!folders!La3YsNYFddQnmsba' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
2024/06/12-11:13:34.733213 7f3f060006c0 Manual compaction at level-0 from '!folders!La3YsNYFddQnmsba' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
||||||
2024/02/25-15:40:12.555554 7f0421a006c0 Manual compaction at level-1 from '!folders!La3YsNYFddQnmsba' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
2024/06/12-11:13:34.733290 7f3f060006c0 Manual compaction at level-1 from '!folders!La3YsNYFddQnmsba' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/darkstars-sf/MANIFEST-000066
Normal file
BIN
packs/darkstars-sf/MANIFEST-000066
Normal file
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000177
|
MANIFEST-000221
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2024/02/26-14:13:39.028984 7f13374006c0 Recovering log #175
|
2024/06/12-11:13:40.440639 7f3f0d6006c0 Recovering log #219
|
||||||
2024/02/26-14:13:39.040662 7f13374006c0 Delete type=3 #173
|
2024/06/12-11:13:40.450523 7f3f0d6006c0 Delete type=3 #217
|
||||||
2024/02/26-14:13:39.040750 7f13374006c0 Delete type=0 #175
|
2024/06/12-11:13:40.450593 7f3f0d6006c0 Delete type=0 #219
|
||||||
2024/02/26-14:20:24.280431 7f132fe006c0 Level-0 table #180: started
|
2024/06/12-11:16:23.645974 7f3f060006c0 Level-0 table #224: started
|
||||||
2024/02/26-14:20:24.280468 7f132fe006c0 Level-0 table #180: 0 bytes OK
|
2024/06/12-11:16:23.646004 7f3f060006c0 Level-0 table #224: 0 bytes OK
|
||||||
2024/02/26-14:20:24.287553 7f132fe006c0 Delete type=0 #178
|
2024/06/12-11:16:23.683161 7f3f060006c0 Delete type=0 #222
|
||||||
2024/02/26-14:20:24.287767 7f132fe006c0 Manual compaction at level-0 from '!folders!2iZtDz80npHPIwkS' @ 72057594037927935 : 1 .. '!items!zyFR9C1jBTeFzbxg' @ 0 : 0; will stop at (end)
|
2024/06/12-11:16:23.683408 7f3f060006c0 Manual compaction at level-0 from '!folders!2iZtDz80npHPIwkS' @ 72057594037927935 : 1 .. '!items!zyFR9C1jBTeFzbxg' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
2024/02/25-13:25:19.786914 7f0428e006c0 Recovering log #171
|
2024/06/12-11:13:16.276335 7f3f0ea006c0 Recovering log #215
|
||||||
2024/02/25-13:25:19.797512 7f0428e006c0 Delete type=3 #169
|
2024/06/12-11:13:16.287074 7f3f0ea006c0 Delete type=3 #213
|
||||||
2024/02/25-13:25:19.797578 7f0428e006c0 Delete type=0 #171
|
2024/06/12-11:13:16.287130 7f3f0ea006c0 Delete type=0 #215
|
||||||
2024/02/25-15:40:12.555728 7f0421a006c0 Level-0 table #176: started
|
2024/06/12-11:13:34.733411 7f3f060006c0 Level-0 table #220: started
|
||||||
2024/02/25-15:40:12.555778 7f0421a006c0 Level-0 table #176: 0 bytes OK
|
2024/06/12-11:13:34.733492 7f3f060006c0 Level-0 table #220: 0 bytes OK
|
||||||
2024/02/25-15:40:12.562473 7f0421a006c0 Delete type=0 #174
|
2024/06/12-11:13:34.741601 7f3f060006c0 Delete type=0 #218
|
||||||
2024/02/25-15:40:12.562645 7f0421a006c0 Manual compaction at level-0 from '!folders!2iZtDz80npHPIwkS' @ 72057594037927935 : 1 .. '!items!zyFR9C1jBTeFzbxg' @ 0 : 0; will stop at (end)
|
2024/06/12-11:13:34.741825 7f3f060006c0 Manual compaction at level-0 from '!folders!2iZtDz80npHPIwkS' @ 72057594037927935 : 1 .. '!items!zyFR9C1jBTeFzbxg' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000014
|
MANIFEST-000058
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2024/02/26-14:13:38.944643 7f13374006c0 Recovering log #12
|
2024/06/12-11:13:40.382275 7f3f0d6006c0 Recovering log #56
|
||||||
2024/02/26-14:13:38.955458 7f13374006c0 Delete type=3 #10
|
2024/06/12-11:13:40.392775 7f3f0d6006c0 Delete type=3 #54
|
||||||
2024/02/26-14:13:38.955573 7f13374006c0 Delete type=0 #12
|
2024/06/12-11:13:40.392833 7f3f0d6006c0 Delete type=0 #56
|
||||||
2024/02/26-14:20:24.251571 7f132fe006c0 Level-0 table #17: started
|
2024/06/12-11:16:23.460642 7f3f060006c0 Level-0 table #61: started
|
||||||
2024/02/26-14:20:24.251622 7f132fe006c0 Level-0 table #17: 0 bytes OK
|
2024/06/12-11:16:23.460722 7f3f060006c0 Level-0 table #61: 0 bytes OK
|
||||||
2024/02/26-14:20:24.258866 7f132fe006c0 Delete type=0 #15
|
2024/06/12-11:16:23.489273 7f3f060006c0 Delete type=0 #59
|
||||||
2024/02/26-14:20:24.259070 7f132fe006c0 Manual compaction at level-0 from '!folders!0XjcJyQMCVYU611t' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
2024/06/12-11:16:23.590665 7f3f060006c0 Manual compaction at level-0 from '!folders!0XjcJyQMCVYU611t' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
||||||
2024/02/26-14:20:24.259112 7f132fe006c0 Manual compaction at level-1 from '!folders!0XjcJyQMCVYU611t' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
2024/06/12-11:16:23.590714 7f3f060006c0 Manual compaction at level-1 from '!folders!0XjcJyQMCVYU611t' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2024/02/25-13:25:19.728626 7f0428e006c0 Recovering log #8
|
2024/06/12-11:13:16.217842 7f3f0ea006c0 Recovering log #52
|
||||||
2024/02/25-13:25:19.738166 7f0428e006c0 Delete type=3 #6
|
2024/06/12-11:13:16.227586 7f3f0ea006c0 Delete type=3 #50
|
||||||
2024/02/25-13:25:19.738216 7f0428e006c0 Delete type=0 #8
|
2024/06/12-11:13:16.227643 7f3f0ea006c0 Delete type=0 #52
|
||||||
2024/02/25-15:40:12.526734 7f0421a006c0 Level-0 table #13: started
|
2024/06/12-11:13:34.706400 7f3f060006c0 Level-0 table #57: started
|
||||||
2024/02/25-15:40:12.526774 7f0421a006c0 Level-0 table #13: 0 bytes OK
|
2024/06/12-11:13:34.706452 7f3f060006c0 Level-0 table #57: 0 bytes OK
|
||||||
2024/02/25-15:40:12.533260 7f0421a006c0 Delete type=0 #11
|
2024/06/12-11:13:34.713151 7f3f060006c0 Delete type=0 #55
|
||||||
2024/02/25-15:40:12.548013 7f0421a006c0 Manual compaction at level-0 from '!folders!0XjcJyQMCVYU611t' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
2024/06/12-11:13:34.719676 7f3f060006c0 Manual compaction at level-0 from '!folders!0XjcJyQMCVYU611t' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
||||||
2024/02/25-15:40:12.555515 7f0421a006c0 Manual compaction at level-1 from '!folders!0XjcJyQMCVYU611t' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
2024/06/12-11:13:34.733233 7f3f060006c0 Manual compaction at level-1 from '!folders!0XjcJyQMCVYU611t' @ 72057594037927935 : 1 .. '!items!zzDfuUJpQzzz262R' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
BIN
packs/sprawl/MANIFEST-000058
Normal file
BIN
packs/sprawl/MANIFEST-000058
Normal file
Binary file not shown.
0
packs/tables/000004.log
Normal file
0
packs/tables/000004.log
Normal file
BIN
packs/tables/000005.ldb
Normal file
BIN
packs/tables/000005.ldb
Normal file
Binary file not shown.
1
packs/tables/CURRENT
Normal file
1
packs/tables/CURRENT
Normal file
@ -0,0 +1 @@
|
|||||||
|
MANIFEST-000002
|
0
packs/tables/LOCK
Normal file
0
packs/tables/LOCK
Normal file
5
packs/tables/LOG
Normal file
5
packs/tables/LOG
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
2024/06/12-11:13:40.470344 7f3f0cc006c0 Delete type=3 #1
|
||||||
|
2024/06/12-11:16:23.590854 7f3f060006c0 Level-0 table #5: started
|
||||||
|
2024/06/12-11:16:23.609006 7f3f060006c0 Level-0 table #5: 2739 bytes OK
|
||||||
|
2024/06/12-11:16:23.645817 7f3f060006c0 Delete type=0 #3
|
||||||
|
2024/06/12-11:16:23.683365 7f3f060006c0 Manual compaction at level-0 from '!tables!8kvF6sVAF7iLt0Kg' @ 72057594037927935 : 1 .. '!tables.results!rnt5wvIIwHrTIs0y.wIvaW5jjuw7mp7s3' @ 0 : 0; will stop at (end)
|
BIN
packs/tables/MANIFEST-000002
Normal file
BIN
packs/tables/MANIFEST-000002
Normal file
Binary file not shown.
@ -33,6 +33,24 @@
|
|||||||
--debug-box-shadow-green: inset 0 0 2px green;
|
--debug-box-shadow-green: inset 0 0 2px green;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-thumb {
|
||||||
|
outline: none;
|
||||||
|
border-radius: 3px;
|
||||||
|
background: #999 !important;
|
||||||
|
border: 1px solid #333 !important;
|
||||||
|
border-color: #333 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
::-webkit-scrollbar-track {
|
||||||
|
box-shadow: 0 0 3px #756e08 inset !important;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
scrollbar-width: thin !important;
|
||||||
|
scrollbar-color: #756e08 #ccc !important;
|
||||||
|
}
|
||||||
|
|
||||||
/*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/
|
/*@import url("https://fonts.googleapis.com/css2?family=Martel:wght@400;800&family=Roboto:wght@300;400;500&display=swap");*/
|
||||||
/* Global styles & Font */
|
/* Global styles & Font */
|
||||||
.window-app {
|
.window-app {
|
||||||
@ -45,17 +63,33 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Fonts */
|
/* Fonts */
|
||||||
.sheet header.sheet-header h1 input, .window-app .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item {
|
.sheet header.sheet-header h1 input,
|
||||||
|
.window-app .window-header,
|
||||||
|
#actors .directory-list,
|
||||||
|
#navigation #scene-list .scene.nav-item {
|
||||||
font-size: 1.0rem;
|
font-size: 1.0rem;
|
||||||
color: rgba(228, 240, 240, 0.75);
|
color: rgba(228, 240, 240, 0.75);
|
||||||
background: rgba(66, 66, 64, 0.95);
|
background: rgba(66, 66, 64, 0.95);
|
||||||
} /* For title, sidebar character and scene */
|
}
|
||||||
|
|
||||||
|
/* For title, sidebar character and scene */
|
||||||
.sheet nav.sheet-tabs {
|
.sheet nav.sheet-tabs {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
color: rgba(228, 240, 240, 0.75);
|
color: rgba(228, 240, 240, 0.75);
|
||||||
background: rgba(66, 66, 64, 0.95);
|
background: rgba(66, 66, 64, 0.95);
|
||||||
} /* For nav and title */
|
}
|
||||||
.window-app input, .fvtt-dark-stars .item-form, .sheet header.sheet-header .flex-group-center.flex-compteurs, .sheet header.sheet-header .flex-group-center.flex-fatigue, select, button, .item-checkbox, #sidebar, #players, #navigation #nav-toggle {
|
|
||||||
|
/* For nav and title */
|
||||||
|
.window-app input,
|
||||||
|
.fvtt-dark-stars .item-form,
|
||||||
|
.sheet header.sheet-header .flex-group-center.flex-compteurs,
|
||||||
|
.sheet header.sheet-header .flex-group-center.flex-fatigue,
|
||||||
|
select,
|
||||||
|
button,
|
||||||
|
.item-checkbox,
|
||||||
|
#sidebar,
|
||||||
|
#players,
|
||||||
|
#navigation #nav-toggle {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
color: rgba(228, 240, 240, 0.75);
|
color: rgba(228, 240, 240, 0.75);
|
||||||
background: rgba(66, 66, 64, 0.95);
|
background: rgba(66, 66, 64, 0.95);
|
||||||
@ -64,47 +98,64 @@
|
|||||||
.window-header {
|
.window-header {
|
||||||
background: rgba(0, 0, 0, 0.75);
|
background: rgba(0, 0, 0, 0.75);
|
||||||
}
|
}
|
||||||
|
|
||||||
.dialog .window-content {
|
.dialog .window-content {
|
||||||
color: #ccdbe6;
|
color: #ccdbe6;
|
||||||
}
|
}
|
||||||
.dialog-content, .dialog-buttons, .form-fields {
|
|
||||||
|
.dialog-content,
|
||||||
|
.dialog-buttons,
|
||||||
|
.form-fields {
|
||||||
color: #ccdbe6;
|
color: #ccdbe6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content {
|
.window-app.sheet .window-content {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
color: #ccdbe6;
|
color: #ccdbe6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.strong-text {
|
.strong-text {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tabs .item.active, .blessures-list li ul li:first-child:hover, a:hover {
|
.tabs .item.active,
|
||||||
|
.blessures-list li ul li:first-child:hover,
|
||||||
|
a:hover {
|
||||||
text-shadow: 1px 0px 0px #ff6600;
|
text-shadow: 1px 0px 0px #ff6600;
|
||||||
}
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
background: rgba(228, 240, 240, 0.75);
|
background: rgba(228, 240, 240, 0.75);
|
||||||
color: rgba(66, 66, 64, 0.95);
|
color: rgba(66, 66, 64, 0.95);
|
||||||
}
|
}
|
||||||
|
|
||||||
select option {
|
select option {
|
||||||
background: rgba(228, 240, 240, 0.75);
|
background: rgba(228, 240, 240, 0.75);
|
||||||
color: rgba(66, 66, 64, 0.95);
|
color: rgba(66, 66, 64, 0.95);
|
||||||
}
|
}
|
||||||
|
|
||||||
.rollable:hover, .rollable:focus {
|
.rollable:hover,
|
||||||
|
.rollable:focus {
|
||||||
color: #000;
|
color: #000;
|
||||||
text-shadow: 0 0 10px red;
|
text-shadow: 0 0 10px red;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
input:disabled {
|
input:disabled {
|
||||||
color: #1c2058;
|
color: #1c2058;
|
||||||
}
|
}
|
||||||
|
|
||||||
select:disabled {
|
select:disabled {
|
||||||
color: #1c2058;
|
color: #1c2058;
|
||||||
}
|
}
|
||||||
table {border: 1px solid #7a7971;}
|
|
||||||
|
|
||||||
.grid, .grid-2col {
|
table {
|
||||||
|
border: 1px solid #7a7971;
|
||||||
|
}
|
||||||
|
|
||||||
|
.grid,
|
||||||
|
.grid-2col {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-column: span 2 / span 2;
|
grid-column: span 2 / span 2;
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
@ -258,6 +309,7 @@ table {border: 1px solid #7a7971;}
|
|||||||
border-width: 0;
|
border-width: 0;
|
||||||
border: 1px solid rgba(0, 0, 0, 0);
|
border: 1px solid rgba(0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.button-img:hover {
|
.button-img:hover {
|
||||||
color: rgba(255, 255, 128, 0.7);
|
color: rgba(255, 255, 128, 0.7);
|
||||||
border: 1px solid rgba(255, 128, 0, 0.8);
|
border: 1px solid rgba(255, 128, 0, 0.8);
|
||||||
@ -405,10 +457,15 @@ table {border: 1px solid #7a7971;}
|
|||||||
.window-app.sheet .window-content .sheet-header {
|
.window-app.sheet .window-content .sheet-header {
|
||||||
background: url("../images/ui/pc_sheet_bg.webp")
|
background: url("../images/ui/pc_sheet_bg.webp")
|
||||||
}
|
}
|
||||||
|
|
||||||
/* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/
|
/* background: #011d33 url("../images/ui/fond1.webp") repeat left top;*/
|
||||||
/*color: rgba(168, 139, 139, 0.5);*/
|
/*color: rgba(168, 139, 139, 0.5);*/
|
||||||
|
|
||||||
.window-app.sheet .window-content .sheet-header input[type="text"], .window-app.sheet .window-content .sheet-header input[type="number"], .window-app.sheet .window-content .sheet-header input[type="password"], .window-app.sheet .window-content .sheet-header input[type="date"], .window-app.sheet .window-content .sheet-header input[type="time"] {
|
.window-app.sheet .window-content .sheet-header input[type="text"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="number"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="password"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="date"],
|
||||||
|
.window-app.sheet .window-content .sheet-header input[type="time"] {
|
||||||
color: rgba(228, 240, 240, 0.75);
|
color: rgba(228, 240, 240, 0.75);
|
||||||
background: rgba(66, 66, 64, 0.95);
|
background: rgba(66, 66, 64, 0.95);
|
||||||
border: 1 none;
|
border: 1 none;
|
||||||
@ -416,7 +473,11 @@ table {border: 1px solid #7a7971;}
|
|||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .sheet-body input[type="text"], .window-app.sheet .window-content .sheet-body input[type="number"], .window-app.sheet .window-content .sheet-body input[type="password"], .window-app.sheet .window-content .sheet-body input[type="date"], .window-app.sheet .window-content .sheet-body input[type="time"] {
|
.window-app.sheet .window-content .sheet-body input[type="text"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="number"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="password"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="date"],
|
||||||
|
.window-app.sheet .window-content .sheet-body input[type="time"] {
|
||||||
color: rgba(228, 240, 240, 0.75);
|
color: rgba(228, 240, 240, 0.75);
|
||||||
background: rgba(66, 66, 64, 0.95);
|
background: rgba(66, 66, 64, 0.95);
|
||||||
border: 1 none;
|
border: 1 none;
|
||||||
@ -424,7 +485,8 @@ table {border: 1px solid #7a7971;}
|
|||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .sheet-body select, .window-app.sheet .window-content .sheet-header select {
|
.window-app.sheet .window-content .sheet-body select,
|
||||||
|
.window-app.sheet .window-content .sheet-header select {
|
||||||
color: rgba(228, 240, 240, 0.75);
|
color: rgba(228, 240, 240, 0.75);
|
||||||
background: rgba(66, 66, 64, 0.95);
|
background: rgba(66, 66, 64, 0.95);
|
||||||
border: 1 none;
|
border: 1 none;
|
||||||
@ -432,7 +494,8 @@ table {border: 1px solid #7a7971;}
|
|||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app .window-content, .window-app.sheet .window-content .sheet-body{
|
.window-app .window-content,
|
||||||
|
.window-app.sheet .window-content .sheet-body {
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
background: url("../images/ui/pc_sheet_bg.webp") repeat left top;
|
background: url("../images/ui/pc_sheet_bg.webp") repeat left top;
|
||||||
color: rgba(228, 240, 240, 0.75);
|
color: rgba(228, 240, 240, 0.75);
|
||||||
@ -441,7 +504,9 @@ table {border: 1px solid #7a7971;}
|
|||||||
|
|
||||||
/* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/
|
/* background: rgba(245,245,240,0.6) url("../images/ui/sheet_background.webp") left top;*/
|
||||||
|
|
||||||
section.sheet-body{padding: 0.25rem 0.5rem;}
|
section.sheet-body {
|
||||||
|
padding: 0.25rem 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.sheet header.sheet-header .profile-img {
|
.sheet header.sheet-header .profile-img {
|
||||||
object-fit: cover;
|
object-fit: cover;
|
||||||
@ -493,8 +558,13 @@ section.sheet-body:after {
|
|||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sheet header.sheet-header .flex-compteurs {text-align: right;}
|
.sheet header.sheet-header .flex-compteurs {
|
||||||
.sheet header.sheet-header .resource-content {width: 2rem;}
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sheet header.sheet-header .resource-content {
|
||||||
|
width: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.select-diff {
|
.select-diff {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@ -509,7 +579,8 @@ section.sheet-body:after {
|
|||||||
padding: 0.25rem;
|
padding: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.window-app.sheet .window-content .carac-value, .window-app.sheet .window-content .competence-xp {
|
.window-app.sheet .window-content .carac-value,
|
||||||
|
.window-app.sheet .window-content .competence-xp {
|
||||||
margin: 0.05rem;
|
margin: 0.05rem;
|
||||||
flex-basis: 3rem;
|
flex-basis: 3rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@ -520,15 +591,21 @@ section.sheet-body:after {
|
|||||||
|
|
||||||
/* ======================================== */
|
/* ======================================== */
|
||||||
|
|
||||||
h1, h2, h3, h4 {
|
h1,
|
||||||
|
h2,
|
||||||
|
h3,
|
||||||
|
h4 {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
ul, ol {
|
ul,
|
||||||
|
ol {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
ul, li {
|
|
||||||
|
ul,
|
||||||
|
li {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -536,6 +613,7 @@ ul, li {
|
|||||||
margin: 0.010rem;
|
margin: 0.010rem;
|
||||||
padding: 0.25rem;
|
padding: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-fields li {
|
.header-fields li {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
@ -544,9 +622,11 @@ ul, li {
|
|||||||
.alterne-list>.list-item:hover {
|
.alterne-list>.list-item:hover {
|
||||||
background: rgba(100, 100, 50, 0.25);
|
background: rgba(100, 100, 50, 0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
.alterne-list>.list-item:nth-child(even) {
|
.alterne-list>.list-item:nth-child(even) {
|
||||||
background: rgba(80, 60, 0, 0.10);
|
background: rgba(80, 60, 0, 0.10);
|
||||||
}
|
}
|
||||||
|
|
||||||
.alterne-list>.list-item:nth-child(odd) {
|
.alterne-list>.list-item:nth-child(odd) {
|
||||||
background: rgb(160, 130, 100, 0.05);
|
background: rgb(160, 130, 100, 0.05);
|
||||||
}
|
}
|
||||||
@ -568,39 +648,49 @@ ul, li {
|
|||||||
flex: 1 1 5rem;
|
flex: 1 1 5rem;
|
||||||
display: flex !important;
|
display: flex !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-shadow {
|
.list-item-shadow {
|
||||||
background: rgba(87, 60, 32, 0.35);
|
background: rgba(87, 60, 32, 0.35);
|
||||||
/*flex-grow: 0;*/
|
/*flex-grow: 0;*/
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-shadow2 {
|
.list-item-shadow2 {
|
||||||
background: rgba(87, 60, 32, 0.25);
|
background: rgba(87, 60, 32, 0.25);
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-display-show {
|
.item-display-show {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-display-hide {
|
.item-display-hide {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.conteneur-type {
|
.conteneur-type {
|
||||||
background: rgb(200, 10, 100, 0.25);
|
background: rgb(200, 10, 100, 0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-quantite {
|
.item-quantite {
|
||||||
margin-left: 0.5rem;
|
margin-left: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin1 {
|
.list-item-margin1 {
|
||||||
margin-left: 1rem;
|
margin-left: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin2 {
|
.list-item-margin2 {
|
||||||
margin-left: 2rem;
|
margin-left: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin3 {
|
.list-item-margin3 {
|
||||||
margin-left: 3rem;
|
margin-left: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.list-item-margin4 {
|
.list-item-margin4 {
|
||||||
margin-left: 4rem;
|
margin-left: 4rem;
|
||||||
}
|
}
|
||||||
@ -613,6 +703,7 @@ ul, li {
|
|||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.competence-column {
|
.competence-column {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-content: flex-start;
|
align-content: flex-start;
|
||||||
@ -620,12 +711,14 @@ ul, li {
|
|||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-basis: 1;
|
flex-basis: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.competence-header {
|
.competence-header {
|
||||||
align-content: flex-start;
|
align-content: flex-start;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.secondaire-label,
|
.secondaire-label,
|
||||||
.arme-label,
|
.arme-label,
|
||||||
.generic-label,
|
.generic-label,
|
||||||
@ -641,16 +734,20 @@ ul, li {
|
|||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-header-label {
|
.status-header-label {
|
||||||
margin-left: 2px;
|
margin-left: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.roll-dialog-label {
|
.roll-dialog-label {
|
||||||
margin: 4px 0;
|
margin: 4px 0;
|
||||||
min-width: 96px;
|
min-width: 96px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.short-label {
|
.short-label {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.keyword-label {
|
.keyword-label {
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
}
|
}
|
||||||
@ -675,6 +772,7 @@ ul, li {
|
|||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.sante-value,
|
.sante-value,
|
||||||
.competence-value {
|
.competence-value {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
@ -682,41 +780,49 @@ ul, li {
|
|||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
margin-left: 0.25rem;
|
margin-left: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.description-value {
|
.description-value {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-basis: 4rem;
|
flex-basis: 4rem;
|
||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
margin-left: 0.25rem;
|
margin-left: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.competence-xp {
|
.competence-xp {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-basis: 2rem;
|
flex-basis: 2rem;
|
||||||
margin-right: 0.25rem;
|
margin-right: 0.25rem;
|
||||||
margin-left: 0.25rem;
|
margin-left: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blessures-title {
|
.blessures-title {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.alchimie-title {
|
.alchimie-title {
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blessure-data {
|
.blessure-data {
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-content: flex-start;
|
align-content: flex-start;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blessures-soins {
|
.blessures-soins {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-basis: 32px;
|
flex-basis: 32px;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blessures-loc {
|
.blessures-loc {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-basis: 96px;
|
flex-basis: 96px;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pointsreve-value {
|
.pointsreve-value {
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
flex-basis: 64px;
|
flex-basis: 64px;
|
||||||
@ -739,6 +845,7 @@ ul, li {
|
|||||||
.padd-right {
|
.padd-right {
|
||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.padd-left {
|
.padd-left {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
@ -748,6 +855,7 @@ ul, li {
|
|||||||
flex-shrink: 1;
|
flex-shrink: 1;
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.npc-ability-label {
|
.npc-ability-label {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
}
|
}
|
||||||
@ -777,6 +885,7 @@ ul, li {
|
|||||||
flex: 0 !important;
|
flex: 0 !important;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tokenhudext.left {
|
.tokenhudext.left {
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@ -784,6 +893,7 @@ ul, li {
|
|||||||
top: 2.75rem;
|
top: 2.75rem;
|
||||||
right: 4rem;
|
right: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tokenhudext.right {
|
.tokenhudext.right {
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@ -791,6 +901,7 @@ ul, li {
|
|||||||
top: 2.75rem;
|
top: 2.75rem;
|
||||||
left: 4rem;
|
left: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.control-icon.tokenhudicon {
|
.control-icon.tokenhudicon {
|
||||||
width: fit-content;
|
width: fit-content;
|
||||||
height: fit-content;
|
height: fit-content;
|
||||||
@ -800,12 +911,15 @@ ul, li {
|
|||||||
line-height: 1rem;
|
line-height: 1rem;
|
||||||
margin: 0.25rem;
|
margin: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.control-icon.tokenhudicon.right {
|
.control-icon.tokenhudicon.right {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#token-hud .status-effects.active {
|
#token-hud .status-effects.active {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ======================================== */
|
/* ======================================== */
|
||||||
.item-checkbox {
|
.item-checkbox {
|
||||||
height: 25px;
|
height: 25px;
|
||||||
@ -841,7 +955,8 @@ ul, li {
|
|||||||
height: 470px !important;
|
height: 470px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
#sidebar-tabs > .collapsed, #chat-controls .chat-control-icon {
|
#sidebar-tabs>.collapsed,
|
||||||
|
#chat-controls .chat-control-icon {
|
||||||
color: rgba(220, 220, 220, 0.75);
|
color: rgba(220, 220, 220, 0.75);
|
||||||
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
|
text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75);
|
||||||
}
|
}
|
||||||
@ -856,6 +971,7 @@ ul, li {
|
|||||||
background: rgba(0, 0, 0, 0.05);
|
background: rgba(0, 0, 0, 0.05);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-message-header {
|
.chat-message-header {
|
||||||
background: rgba(220, 220, 210, 0.5);
|
background: rgba(220, 220, 210, 0.5);
|
||||||
font-size: 1.1rem;
|
font-size: 1.1rem;
|
||||||
@ -866,9 +982,11 @@ ul, li {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-message .message-header .flavor-text, .chat-message .message-header .whisper-to {
|
.chat-message .message-header .flavor-text,
|
||||||
|
.chat-message .message-header .whisper-to {
|
||||||
font-size: 0.9rem;
|
font-size: 0.9rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-actor-name {
|
.chat-actor-name {
|
||||||
padding: 4px;
|
padding: 4px;
|
||||||
}
|
}
|
||||||
@ -962,6 +1080,7 @@ ul, li {
|
|||||||
width: auto;
|
width: auto;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.small-ability-icon {
|
.small-ability-icon {
|
||||||
border: 0;
|
border: 0;
|
||||||
padding: 2px 2px 2px 2px;
|
padding: 2px 2px 2px 2px;
|
||||||
@ -970,6 +1089,7 @@ ul, li {
|
|||||||
width: auto;
|
width: auto;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.combat-icon {
|
.combat-icon {
|
||||||
border: 0;
|
border: 0;
|
||||||
padding: 2px 2px 2px 2px;
|
padding: 2px 2px 2px 2px;
|
||||||
@ -1004,7 +1124,8 @@ ul, li {
|
|||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
/* Control, Tool, hotbar & navigation */
|
/* Control, Tool, hotbar & navigation */
|
||||||
|
|
||||||
#controls .scene-control, #controls .control-tool {
|
#controls .scene-control,
|
||||||
|
#controls .control-tool {
|
||||||
box-shadow: 0 0 3px #000;
|
box-shadow: 0 0 3px #000;
|
||||||
margin: 0 0 8px;
|
margin: 0 0 8px;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
@ -1015,7 +1136,10 @@ ul, li {
|
|||||||
border-image-outset: 0px;
|
border-image-outset: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#controls .scene-control.active, #controls .control-tool.active, #controls .scene-control:hover, #controls .control-tool:hover {
|
#controls .scene-control.active,
|
||||||
|
#controls .control-tool.active,
|
||||||
|
#controls .scene-control:hover,
|
||||||
|
#controls .control-tool:hover {
|
||||||
background: rgba(72, 46, 28, 1);
|
background: rgba(72, 46, 28, 1);
|
||||||
background-origin: padding-box;
|
background-origin: padding-box;
|
||||||
border-image: url(img/ui/footer-button.png) 10 repeat;
|
border-image: url(img/ui/footer-button.png) 10 repeat;
|
||||||
@ -1061,7 +1185,8 @@ ul, li {
|
|||||||
border-image-outset: 0px;
|
border-image-outset: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#navigation #scene-list .scene.view, #navigation #scene-list .scene.context {
|
#navigation #scene-list .scene.view,
|
||||||
|
#navigation #scene-list .scene.context {
|
||||||
background: rgba(72, 46, 28, 1);
|
background: rgba(72, 46, 28, 1);
|
||||||
background-origin: padding-box;
|
background-origin: padding-box;
|
||||||
border-image: url(img/ui/footer-button.png) 10 repeat;
|
border-image: url(img/ui/footer-button.png) 10 repeat;
|
||||||
@ -1127,8 +1252,10 @@ ul, li {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.tooltip-nobottom {
|
.tooltip-nobottom {
|
||||||
border-bottom: unset; /* If you want dots under the hoverable text */
|
border-bottom: unset;
|
||||||
|
/* If you want dots under the hoverable text */
|
||||||
}
|
}
|
||||||
|
|
||||||
.tooltip .ttt-xp {
|
.tooltip .ttt-xp {
|
||||||
width: 250px;
|
width: 250px;
|
||||||
background: rgba(220, 220, 210, 0.95);
|
background: rgba(220, 220, 210, 0.95);
|
||||||
@ -1164,6 +1291,7 @@ ul, li {
|
|||||||
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
|
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
|
||||||
background-color: red;
|
background-color: red;
|
||||||
}
|
}
|
||||||
|
|
||||||
.chat-card-button:active {
|
.chat-card-button:active {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: 1px;
|
top: 1px;
|
||||||
@ -1238,14 +1366,14 @@ ul, li {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
#pause
|
#pause {
|
||||||
{
|
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
#pause > h3
|
|
||||||
{
|
#pause>h3 {
|
||||||
color: #CCC
|
color: #CCC
|
||||||
}
|
}
|
||||||
|
|
||||||
#pause>img {
|
#pause>img {
|
||||||
content: url(../images/ui/crucible_pause_logo.jpg);
|
content: url(../images/ui/crucible_pause_logo.jpg);
|
||||||
height: 160px;
|
height: 160px;
|
||||||
@ -1273,7 +1401,8 @@ ul, li {
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* =================== 1. ACTOR SHEET FONT STYLES =========== *//*
|
/* =================== 1. ACTOR SHEET FONT STYLES =========== */
|
||||||
|
/*
|
||||||
Agility AGI: #02a41d Also Used for Ranged Damage
|
Agility AGI: #02a41d Also Used for Ranged Damage
|
||||||
Mind MND: #a100fe
|
Mind MND: #a100fe
|
||||||
Social SOC: #fd7100
|
Social SOC: #fd7100
|
||||||
@ -1289,241 +1418,301 @@ Focus FOC: #ff0084
|
|||||||
background-color: black;
|
background-color: black;
|
||||||
background: black;
|
background: black;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-agi,
|
.color-class-agi,
|
||||||
.color-class-range {
|
.color-class-range {
|
||||||
background-color: #02a41d;
|
background-color: #02a41d;
|
||||||
background: #02a41d;
|
background: #02a41d;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-pool {
|
.color-class-pool {
|
||||||
background-color: #c5c3c3;
|
background-color: #c5c3c3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-mnd {
|
.color-class-mnd {
|
||||||
background-color: #a100fe;
|
background-color: #a100fe;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-soc {
|
.color-class-soc {
|
||||||
background-color: #fd7100;
|
background-color: #fd7100;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-str,
|
.color-class-str,
|
||||||
.color-class-meleedmg {
|
.color-class-meleedmg {
|
||||||
background-color: #5f3d00;
|
background-color: #5f3d00;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-phy,
|
.color-class-phy,
|
||||||
.color-class-dmgres {
|
.color-class-dmgres {
|
||||||
background-color: #990304;
|
background-color: #990304;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-mr {
|
.color-class-mr {
|
||||||
background-color: #050505;
|
background-color: #050505;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-com,
|
.color-class-com,
|
||||||
.color-class-melee {
|
.color-class-melee {
|
||||||
background-color: #0136ff;
|
background-color: #0136ff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-def,
|
.color-class-def,
|
||||||
.color-class-defence {
|
.color-class-defence {
|
||||||
background-color: #88826a;
|
background-color: #88826a;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-stl {
|
.color-class-stl {
|
||||||
background-color: #505050;
|
background-color: #505050;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-per,
|
.color-class-per,
|
||||||
.color-class-ranged {
|
.color-class-ranged {
|
||||||
background-color: #f9c801;
|
background-color: #f9c801;
|
||||||
}
|
}
|
||||||
|
|
||||||
.color-class-foc {
|
.color-class-foc {
|
||||||
background-color: #ff0084;
|
background-color: #ff0084;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-small-label {
|
.status-small-label {
|
||||||
font-size: 0.65rem;
|
font-size: 0.65rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.combat-button {
|
.combat-button {
|
||||||
min-height: 26px;
|
min-height: 26px;
|
||||||
max-height: 26px;
|
max-height: 26px;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-grow {
|
.no-grow {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 32px;
|
max-width: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-col-name {
|
.status-col-name {
|
||||||
max-width: 72px;
|
max-width: 72px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status-block {
|
.status-block {
|
||||||
max-width: 216px;
|
max-width: 216px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.momentum-block {
|
.momentum-block {
|
||||||
max-width: 128px;
|
max-width: 128px;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ability-item {
|
.ability-item {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
margin: 2px;
|
margin: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ability-block {
|
.ability-block {
|
||||||
min-width: 160px;
|
min-width: 160px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ability-margin {
|
.ability-margin {
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
margin-top: 5px;
|
margin-top: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.combat-margin {
|
.combat-margin {
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
margin-top: 3px;
|
margin-top: 3px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-ability-roll {
|
.item-ability-roll {
|
||||||
max-height: 42px;
|
max-height: 42px;
|
||||||
min-height: 36px;
|
min-height: 36px;
|
||||||
}
|
}
|
||||||
.item-ability-roll select, .item-ability-roll input {
|
|
||||||
|
.item-ability-roll select,
|
||||||
|
.item-ability-roll input {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
margin-right: 2px;
|
margin-right: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.roll-opposed-icon:hover {
|
||||||
|
color: darkgreen;
|
||||||
|
}
|
||||||
|
|
||||||
.table-momentum {
|
.table-momentum {
|
||||||
background: none;
|
background: none;
|
||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.img-no-border {
|
.img-no-border {
|
||||||
max-width: 48px;
|
max-width: 48px;
|
||||||
max-height: 48px;
|
max-height: 48px;
|
||||||
border: 0;
|
border: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.items-title-bg {
|
.items-title-bg {
|
||||||
margin-top: 6px;
|
margin-top: 6px;
|
||||||
background: black;
|
background: black;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.items-title-text {
|
.items-title-text {
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.lock-icon {
|
.lock-icon {
|
||||||
width: 16px;
|
width: 16px;
|
||||||
height: 16px;
|
height: 16px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-sheet-img {
|
.item-sheet-img {
|
||||||
width: 64px;
|
width: 64px;
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-img {
|
.item-name-img {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
max-width: 2rem;
|
max-width: 2rem;
|
||||||
min-width: 2rem;
|
min-width: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-header {
|
.item-name-label-header {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 12rem;
|
max-width: 12rem;
|
||||||
min-width: 12rem;
|
min-width: 12rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-header-long {
|
.item-name-label-header-long {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
max-width: 14rem;
|
max-width: 14rem;
|
||||||
min-width: 14rem;
|
min-width: 14rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-header-long2 {
|
.item-name-label-header-long2 {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
max-width: 24rem;
|
max-width: 24rem;
|
||||||
min-width: 24rem;
|
min-width: 24rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label {
|
.item-name-label {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
max-width: 10rem;
|
max-width: 10rem;
|
||||||
min-width: 10rem;
|
min-width: 10rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-long {
|
.item-name-label-long {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
max-width: 12rem;
|
max-width: 12rem;
|
||||||
min-width: 12rem;
|
min-width: 12rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-long2 {
|
.item-name-label-long2 {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
max-width: 22rem;
|
max-width: 22rem;
|
||||||
min-width: 22rem;
|
min-width: 22rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-name-label-level2 {
|
.item-name-label-level2 {
|
||||||
flex-grow: 2;
|
flex-grow: 2;
|
||||||
max-width: 9rem;
|
max-width: 9rem;
|
||||||
min-width: 9rem;
|
min-width: 9rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-field-label-short {
|
.item-field-label-short {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
max-width: 4rem;
|
max-width: 4rem;
|
||||||
min-width: 4rem;
|
min-width: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-field-label-medium {
|
.item-field-label-medium {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
max-width: 6rem;
|
max-width: 6rem;
|
||||||
min-width: 6rem;
|
min-width: 6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-field-label-long {
|
.item-field-label-long {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
max-width: 8rem;
|
max-width: 8rem;
|
||||||
min-width: 8rem;
|
min-width: 8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-field-label-vlong {
|
.item-field-label-vlong {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
max-width: 14rem;
|
max-width: 14rem;
|
||||||
min-width: 14rem;
|
min-width: 14rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-field-label-vlong2 {
|
.item-field-label-vlong2 {
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
max-width: 22rem;
|
max-width: 22rem;
|
||||||
min-width: 22rem;
|
min-width: 22rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-control-end {
|
.item-control-end {
|
||||||
align-self: flex-end;
|
align-self: flex-end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.alternate-list {
|
.alternate-list {
|
||||||
margin-top: 4px;
|
margin-top: 4px;
|
||||||
flex-wrap: nowrap;
|
flex-wrap: nowrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-filler {
|
.item-filler {
|
||||||
flex-grow: 6;
|
flex-grow: 6;
|
||||||
flex-shrink: 7;
|
flex-shrink: 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-controls-fixed {
|
.item-controls-fixed {
|
||||||
min-width: 2rem;
|
min-width: 2rem;
|
||||||
max-width: 2rem;
|
max-width: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.margin-left-4 {
|
.margin-left-4 {
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dice-pool-stack {
|
.dice-pool-stack {
|
||||||
flex: 1 1 5rem;
|
flex: 1 1 5rem;
|
||||||
display: flex !important;
|
display: flex !important;
|
||||||
flex-grow: 0;
|
flex-grow: 0;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dice-pool-label {
|
.dice-pool-label {
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dice-pool-div {
|
.dice-pool-div {
|
||||||
border-left: 4px;
|
border-left: 4px;
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
background-color: #403f3e40;
|
background-color: #403f3e40;
|
||||||
}
|
}
|
||||||
|
|
||||||
.stat-column-size {
|
.stat-column-size {
|
||||||
max-width: 12rem;
|
max-width: 12rem;
|
||||||
min-width: 12rem;
|
min-width: 12rem;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.derivated-column-size {
|
.derivated-column-size {
|
||||||
max-width: 14rem;
|
max-width: 14rem;
|
||||||
min-width: 14rem;
|
min-width: 14rem;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.hplocation-column {
|
.hplocation-column {
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dice-pool-image {
|
.dice-pool-image {
|
||||||
border: 0;
|
border: 0;
|
||||||
margin-left: 4px;
|
margin-left: 4px;
|
||||||
|
38
system.json
38
system.json
@ -9,8 +9,10 @@
|
|||||||
"esmodules": [
|
"esmodules": [
|
||||||
"modules/dark-stars-main.js"
|
"modules/dark-stars-main.js"
|
||||||
],
|
],
|
||||||
"gridDistance": 5,
|
"gid": {
|
||||||
"gridUnits": "m",
|
"distance": 5,
|
||||||
|
"units": "m"
|
||||||
|
},
|
||||||
"languages": [
|
"languages": [
|
||||||
{
|
{
|
||||||
"lang": "en",
|
"lang": "en",
|
||||||
@ -83,6 +85,15 @@
|
|||||||
"system": "fvtt-dark-stars",
|
"system": "fvtt-dark-stars",
|
||||||
"private": false,
|
"private": false,
|
||||||
"flags": {}
|
"flags": {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "RollTable",
|
||||||
|
"label": "Tables",
|
||||||
|
"name": "tables",
|
||||||
|
"path": "packs/tables",
|
||||||
|
"system": "fvtt-dark-stars",
|
||||||
|
"private": false,
|
||||||
|
"flags": {}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"primaryTokenAttribute": "secondary.hp",
|
"primaryTokenAttribute": "secondary.hp",
|
||||||
@ -91,15 +102,30 @@
|
|||||||
"styles": [
|
"styles": [
|
||||||
"styles/simple.css"
|
"styles/simple.css"
|
||||||
],
|
],
|
||||||
"version": "11.0.21",
|
"version": "12.0.0",
|
||||||
"compatibility": {
|
"compatibility": {
|
||||||
"minimum": "11",
|
"minimum": "11",
|
||||||
"verified": "11"
|
"verified": "12"
|
||||||
},
|
},
|
||||||
"title": "Dark Stars RPG",
|
"title": "Dark Stars RPG",
|
||||||
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-dark-stars/raw/branch/main/system.json",
|
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-dark-stars/raw/branch/main/system.json",
|
||||||
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-dark-stars/archive/fvtt-dark-stars-v11.0.21.zip",
|
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-dark-stars/archive/fvtt-dark-stars-v12.0.0.zip",
|
||||||
"url": "https://www.uberwald.me/gitea/uberwald/",
|
"url": "https://www.uberwald.me/gitea/uberwald/",
|
||||||
"background": "images/ui/dark_stars_welcome_page.webp",
|
"background": "images/ui/dark_stars_welcome_page.webp",
|
||||||
"id": "fvtt-dark-stars"
|
"id": "fvtt-dark-stars",
|
||||||
|
"flags": {
|
||||||
|
"hotReload": {
|
||||||
|
"extensions": [
|
||||||
|
"css",
|
||||||
|
"hbs",
|
||||||
|
"json"
|
||||||
|
],
|
||||||
|
"paths": [
|
||||||
|
"styles/",
|
||||||
|
"lang/",
|
||||||
|
"assets/",
|
||||||
|
"templates/"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -278,6 +278,7 @@
|
|||||||
"Item": {
|
"Item": {
|
||||||
"types": [
|
"types": [
|
||||||
"skill",
|
"skill",
|
||||||
|
"extendedtest",
|
||||||
"perk",
|
"perk",
|
||||||
"ability",
|
"ability",
|
||||||
"armor",
|
"armor",
|
||||||
@ -305,6 +306,12 @@
|
|||||||
"signs": 0,
|
"signs": 0,
|
||||||
"cherisheditems": 0
|
"cherisheditems": 0
|
||||||
},
|
},
|
||||||
|
"extendedtest": {
|
||||||
|
"cumulated": 0,
|
||||||
|
"nbrolls": 0,
|
||||||
|
"skill": "",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
"psychic": {
|
"psychic": {
|
||||||
"level": 0,
|
"level": 0,
|
||||||
"egocost": 0,
|
"egocost": 0,
|
||||||
|
@ -32,7 +32,10 @@
|
|||||||
<ul class="stat-list alternate-list item-list stat-column-size">
|
<ul class="stat-list alternate-list item-list stat-column-size">
|
||||||
{{#each system.attributes as |attr key|}}
|
{{#each system.attributes as |attr key|}}
|
||||||
<li class="item stat flexrow list-item list-item-shadow">
|
<li class="item stat flexrow list-item list-item-shadow">
|
||||||
|
<a class="roll-attribute" data-attr-key="{{key}}">
|
||||||
|
<i class="fa-solid fa-dice-d10"></i>
|
||||||
<label class="item-field-label-medium">{{attr.label}}</label>
|
<label class="item-field-label-medium">{{attr.label}}</label>
|
||||||
|
</a>
|
||||||
<input type="text" class="item-field-label-short padd-right" name="system.attributes.{{key}}.value" value="{{attr.value}}" data-dtype="Number"/>
|
<input type="text" class="item-field-label-short padd-right" name="system.attributes.{{key}}.value" value="{{attr.value}}" data-dtype="Number"/>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</li>
|
</li>
|
||||||
@ -99,21 +102,24 @@
|
|||||||
<span class="item-name-label-header-long2">
|
<span class="item-name-label-header-long2">
|
||||||
<h3><label class="items-title-text">Skills</label></h3>
|
<h3><label class="items-title-text">Skills</label></h3>
|
||||||
</span>
|
</span>
|
||||||
<span class="item-field-label-medium">
|
<span class="item-field-label-short">
|
||||||
<label class="short-label">Base</label>
|
<label class="short-label">Base</label>
|
||||||
</span>
|
</span>
|
||||||
<span class="item-field-label-long">
|
<span class="item-field-label-long">
|
||||||
<label class="short-label">Derivated</label>
|
<label class="short-label">Derivated</label>
|
||||||
</span>
|
</span>
|
||||||
<span class="item-field-label-medium">
|
<span class="item-field-label-short">
|
||||||
<label class="short-label">Bonus</label>
|
<label class="short-label">Bonus</label>
|
||||||
</span>
|
</span>
|
||||||
<span class="item-field-label-medium">
|
<span class="item-field-label-medium">
|
||||||
<label class="short-label">Total</label>
|
<label class="short-label">Total</label>
|
||||||
</span>
|
</span>
|
||||||
<span class="item-field-label-medium">
|
<span class="item-field-label-short">
|
||||||
<label class="short-label">Used?</label>
|
<label class="short-label">Used?</label>
|
||||||
</span>
|
</span>
|
||||||
|
<span class="item-field-label-short">
|
||||||
|
<label class="short-label">Cumul.</label>
|
||||||
|
</span>
|
||||||
<span class="item-field-label-medium">
|
<span class="item-field-label-medium">
|
||||||
<label class="short-label"> </label>
|
<label class="short-label"> </label>
|
||||||
</span>
|
</span>
|
||||||
@ -123,11 +129,47 @@
|
|||||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img" src="{{skill.img}}" />
|
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img" src="{{skill.img}}" />
|
||||||
</a>
|
</a>
|
||||||
<span class="item-field-label-vlong2"><i class="fa-solid fa-dice-d10"></i><a class="roll-skill">{{skill.name}}</a></span>
|
<span class="item-field-label-vlong2"><i class="fa-solid fa-dice-d10"></i><a class="roll-skill">{{skill.name}}</a></span>
|
||||||
<span class="item-field-label-medium">{{skill.system.value}}</span>
|
<span class="item-field-label-short">{{skill.system.value}}</span>
|
||||||
<span class="item-field-label-long">{{skill.derivated.label}} ({{skill.derivated.value}})</span>
|
<span class="item-field-label-long">{{skill.derivated.label}} ({{skill.derivated.value}})</span>
|
||||||
<span class="item-field-label-medium">{{skill.system.bonus}}</span>
|
<span class="item-field-label-short">{{skill.system.bonus}}</span>
|
||||||
<span class="item-field-label-medium">{{skill.total}}%</span>
|
<span class="item-field-label-medium">{{skill.total}}%</span>
|
||||||
<label class="attribute-value checkbox"><input type="checkbox" class="skill-used-id" {{checked skill.system.used}}/></label>
|
<label class="attribute-value checkbox"><input type="checkbox" class="skill-used-id" {{checked skill.system.used}}/></label>
|
||||||
|
<span class="item-field-label-short" data-tooltip="Start an Extended Test"><a class="start-extended-test"><i class="fa-solid fa-circle-plus"></i></a></span>
|
||||||
|
<div class="item-controls item-controls-fixed">
|
||||||
|
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul class="alternate-list item-list">
|
||||||
|
<li class="item flexrow list-item items-title-bg">
|
||||||
|
<span class="item-name-label-header-long2">
|
||||||
|
<h3><label class="items-title-text">Tasks</label></h3>
|
||||||
|
</span>
|
||||||
|
<span class="item-field-label-long">
|
||||||
|
<label class="short-label">Skill</label>
|
||||||
|
</span>
|
||||||
|
<span class="item-field-label-short">
|
||||||
|
<label class="short-label">Nb Rolls</label>
|
||||||
|
</span>
|
||||||
|
<span class="item-field-label-short">
|
||||||
|
<label class="short-label">Total</label>
|
||||||
|
</span>
|
||||||
|
<span class="item-field-label-medium">
|
||||||
|
<label class="short-label"> </label>
|
||||||
|
</span>
|
||||||
|
</li>
|
||||||
|
{{#each extendedTests as |test key|}}
|
||||||
|
<li class="item flexrow list-item list-item-shadow" data-item-id="{{test._id}}">
|
||||||
|
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img" src="{{test.img}}" />
|
||||||
|
</a>
|
||||||
|
<span class="item-field-label-vlong2"><i class="fa-solid fa-dice-d10"></i><a class="roll-extended-test">{{test.name}}</a></span>
|
||||||
|
<span class="item-field-label-long">{{test.system.skill}}</span>
|
||||||
|
<span class="item-field-label-short">{{test.system.nbrolls}}</span>
|
||||||
|
<span class="item-field-label-short">{{test.system.cumulated}}</span>
|
||||||
|
<div class="item-filler"> </div>
|
||||||
|
|
||||||
<div class="item-controls item-controls-fixed">
|
<div class="item-controls item-controls-fixed">
|
||||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
@ -270,12 +312,8 @@
|
|||||||
|
|
||||||
{{#if weapon.system.needammo}}
|
{{#if weapon.system.needammo}}
|
||||||
<select class="item-field-label-long edit-weapon-ammo" type="text" data-dtype="String">
|
<select class="item-field-label-long edit-weapon-ammo" type="text" data-dtype="String">
|
||||||
{{#select system.ammoid}}
|
|
||||||
<option value="">None</option>
|
<option value="">None</option>
|
||||||
{{#each @root.ammos as |ammo index|}}
|
{{selectOptions @root.ammos selected=system.ammoid valueAttr="_id" nameAttr="_id" labelAttr="name"}}
|
||||||
<option value="{{ammo._id}}">{{ammo.name}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
{{#if weapon.ammo}}
|
{{#if weapon.ammo}}
|
||||||
<span class="item-field-label-medium margin-left-4"><label>{{weapon.ammo.system.damage}}</label></span>
|
<span class="item-field-label-medium margin-left-4"><label>{{weapon.ammo.system.damage}}</label></span>
|
||||||
@ -440,12 +478,8 @@
|
|||||||
|
|
||||||
{{#if weapon.system.needammo}}
|
{{#if weapon.system.needammo}}
|
||||||
<select class="item-field-label-vlong edit-weapon-ammo" type="text" data-dtype="String">
|
<select class="item-field-label-vlong edit-weapon-ammo" type="text" data-dtype="String">
|
||||||
{{#select system.ammoid}}
|
|
||||||
<option value="">None</option>
|
<option value="">None</option>
|
||||||
{{#each @root.ammos as |ammo index|}}
|
{{selectOptions @root.ammos selected=system.ammoid valueAttr="_id" nameAttr="_id" labelAttr="name"}}
|
||||||
<option value="{{ammo._id}}">{{ammo.name}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
{{#if weapon.ammo}}
|
{{#if weapon.ammo}}
|
||||||
<span class="item-field-label-medium"><label>{{weapon.ammo.system.damage}}</label></span>
|
<span class="item-field-label-medium"><label>{{weapon.ammo.system.damage}}</label></span>
|
||||||
@ -712,14 +746,7 @@
|
|||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label">Size</label>
|
<label class="generic-label">Size</label>
|
||||||
<select class="competence-base flexrow" type="text" name="system.biodata.size" value="{{data.biodata.size}}" data-dtype="Number">
|
<select class="competence-base flexrow" type="text" name="system.biodata.size" value="{{data.biodata.size}}" data-dtype="Number">
|
||||||
{{#select data.biodata.size}}
|
{{selectOptions config.sizeOptions selected=data.biodata.size}}
|
||||||
<option value="1">Tiny</option>
|
|
||||||
<option value="2">Small</option>
|
|
||||||
<option value="3">Medium</option>
|
|
||||||
<option value="4">Large</option>
|
|
||||||
<option value="5">Huge</option>
|
|
||||||
<option value="6">Gargantuan</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
|
@ -23,14 +23,7 @@
|
|||||||
<h4 class="ability-text-white ability-margin">Class</h4>
|
<h4 class="ability-text-white ability-margin">Class</h4>
|
||||||
</span>
|
</span>
|
||||||
<select class="competence-base flexrow" type="text" name="system.biodata.class" value="{{data.biodata.class}}" data-dtype="String">
|
<select class="competence-base flexrow" type="text" name="system.biodata.class" value="{{data.biodata.class}}" data-dtype="String">
|
||||||
{{#select data.biodata.class}}
|
{{selectOptions @root.config.classNPC selected=data.biodata.class }}
|
||||||
<option value="none">None</option>
|
|
||||||
<option value="chaplain">Chaplain</option>
|
|
||||||
<option value="magus">Magus</option>
|
|
||||||
<option value="martial">Martial</option>
|
|
||||||
<option value="skalawag">Skalawag</option>
|
|
||||||
<option value="warden">Warden</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
@ -365,14 +358,7 @@
|
|||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
<label class="generic-label">Size</label>
|
<label class="generic-label">Size</label>
|
||||||
<select class="competence-base flexrow" type="text" name="system.biodata.size" value="{{data.biodata.size}}" data-dtype="Number">
|
<select class="competence-base flexrow" type="text" name="system.biodata.size" value="{{data.biodata.size}}" data-dtype="Number">
|
||||||
{{#select data.biodata.size}}
|
{{selectOptions config.sizeOptions selected=data.biodata.size}}
|
||||||
<option value="1">Tiny</option>
|
|
||||||
<option value="2">Small</option>
|
|
||||||
<option value="3">Medium</option>
|
|
||||||
<option value="4">Large</option>
|
|
||||||
<option value="5">Huge</option>
|
|
||||||
<option value="6">Gargantuan</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow item">
|
<li class="flexrow item">
|
||||||
|
@ -8,12 +8,24 @@
|
|||||||
|
|
||||||
<div class="flexcol">
|
<div class="flexcol">
|
||||||
|
|
||||||
|
{{#if attr}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<span class="roll-dialog-label">Attribute : </span>
|
||||||
|
<span class="roll-dialog-label">{{attr.label}} ( {{attr.value}} )</span>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<span class="roll-dialog-label">Modifier : </span>
|
||||||
|
<select class="status-small-label color-class-common" type="text" id="attribute-modifier" value="{{attributeModifier}}" data-dtype="String" >
|
||||||
|
{{selectOptions config.attributeModifier selected=attributeModifier valueAttr="value" nameAttr="value" labelAttr="label"}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if skill}}
|
{{#if skill}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">Skill : </span>
|
<span class="roll-dialog-label">Skill : </span>
|
||||||
<span class="roll-dialog-label">{{skill.name}} ( {{skill.total}}% )</span>
|
<span class="roll-dialog-label">{{skill.name}} ( {{skill.total}}% )</span>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if weapon}}
|
{{#if weapon}}
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
@ -27,38 +39,30 @@
|
|||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">Aiming : </span>
|
<span class="roll-dialog-label">Aiming : </span>
|
||||||
<select class="status-small-label color-class-common" type="text" id="weapon-aiming" value="{{weaponAiming}}" data-dtype="String" >
|
<select class="status-small-label color-class-common" type="text" id="weapon-aiming" value="{{weaponAiming}}" data-dtype="String" >
|
||||||
{{#select weaponAiming}}
|
{{selectOptions config.weaponAiming selected=weaponAiming}}
|
||||||
<option value="none">None</option>
|
|
||||||
<option value="arm">Arm (-50)</option>
|
|
||||||
<option value="head">Head (-50)</option>
|
|
||||||
<option value="torso">Torso(-30)</option>
|
|
||||||
<option value="leg">Leg (-30)</option>
|
|
||||||
<option value="hand">Hand/Weapon (-70)</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
{{else}}
|
||||||
|
<div class="flexrow">
|
||||||
|
<span class="roll-dialog-label">Synergy Bonus : </span>
|
||||||
|
<select class="status-small-label color-class-common" type="text" id="synergy-bonus" value="{{synergyBonus}}" data-dtype="N"umber >
|
||||||
|
{{selectOptions config.synergyBonus selected=synergyBonus}}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="flexrow">
|
||||||
|
<span class="roll-dialog-label">Extra time (+30%): </span>
|
||||||
|
<input type="checkbox" id="extra-time" name="extraTime" {{checked extraTime}}/></label>
|
||||||
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="roll-dialog-label">Bonus/Malus : </span>
|
<span class="roll-dialog-label">Bonus/Malus : </span>
|
||||||
<select class="status-small-label color-class-common" type="text" id="bonusMalus" value="{{bonusMalus}}" data-dtype="Number" >
|
<select class="status-small-label color-class-common" type="text" id="bonusMalus" value="{{bonusMalus}}" data-dtype="Number" >
|
||||||
{{#select bonusMalus}}
|
{{selectOptions config.rollModifiers selected=bonusMalus valueAttr="value" nameAttr="value" labelAttr="label"}}
|
||||||
<option value="-80">-80%</option>
|
|
||||||
<option value="-70">-70%</option>
|
|
||||||
<option value="-60">-60%</option>
|
|
||||||
<option value="-50">-50%</option>
|
|
||||||
<option value="-40">-40%</option>
|
|
||||||
<option value="-30">-30%</option>
|
|
||||||
<option value="-20">-20%</option>
|
|
||||||
<option value="-10">-10%</option>
|
|
||||||
<option value="0">0%</option>
|
|
||||||
<option value="+10">+10%</option>
|
|
||||||
<option value="+20">+20%</option>
|
|
||||||
<option value="+30">+30%</option>
|
|
||||||
<option value="+40">+40%</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</form>
|
</form>
|
@ -1,75 +0,0 @@
|
|||||||
<div class="chat-message-header">
|
|
||||||
{{#if actorImg}}
|
|
||||||
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
|
|
||||||
{{/if}}
|
|
||||||
<h4 class=chat-actor-name>{{alias}}</h4>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
{{#if img}}
|
|
||||||
<div >
|
|
||||||
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
<div class="flexcol">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
<ul>
|
|
||||||
<li><strong>Fight result !</strong></li>
|
|
||||||
{{#if successDetails.fumbleDetails}}
|
|
||||||
<li>Fumble ! : {{successDetails.fumbleDetails.data.text}} </li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
|
|
||||||
{{#if armorResult}}
|
|
||||||
<li>Armor initial result : {{armorResult.rawArmor}}</li>
|
|
||||||
{{#each armorResult.messages as |message idx|}}
|
|
||||||
<li>{{message}}</li>
|
|
||||||
{{/each}}
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if successDetails.hack_vs_shields}}
|
|
||||||
<li>Hack weapon : check shield !</li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if successDetails.entangle}}
|
|
||||||
<li>Entangle weapon : attacker can entangle !</li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if successDetails.knockback}}
|
|
||||||
<li>Knockback weapon : check knockback !</li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if successDetails.hack_armors}}
|
|
||||||
<li>Hack weapon : check armor damage !</li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if successDetails.penetrating_impale}}
|
|
||||||
<li>Penetrating weapon : apply the Impale condition !</li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if (or successDetails.critical_1 successDetails.critical_2)}}
|
|
||||||
<li>Critical {{#if successDetails.critical_1}} 1 {{else}} 2 {{/if}} : {{successDetails.criticalText}} </li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if successDetails.attackerHPLossValue}}
|
|
||||||
<li>Attacker has lost HP : {{successDetails.attackerHPLossValue}} HP </li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
{{#if successDetails.defenderHPLossValue}}
|
|
||||||
<li>Defender has lost HP : {{successDetails.defenderHPLossValue}} HP </li>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
<li>Success details : {{successDetails.result}} </li>
|
|
||||||
|
|
||||||
<li><strong>Final successes</strong> {{sumSuccess}} </li>
|
|
||||||
|
|
||||||
<!-- <button class="chat-card-button reroll-level-remaining" data-roll-id="{{rollId}}">Reroll</button> -->
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
30
templates/chat/chat-attribute-result.hbs
Normal file
30
templates/chat/chat-attribute-result.hbs
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<div class="chat-message-header">
|
||||||
|
{{#if actorImg}}
|
||||||
|
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
|
||||||
|
{{/if}}
|
||||||
|
<h4 class=chat-actor-name>{{alias}}</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<div class="flexcol">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<ul>
|
||||||
|
|
||||||
|
<li>Attribute : {{attr.label}} ({{attr.value}})</li>
|
||||||
|
<li>Modifier : {{attributeModifier}}</li>
|
||||||
|
<li>Target : {{targetNumber}}</li>
|
||||||
|
<li>Result : {{diceResult}}</li>
|
||||||
|
|
||||||
|
{{#if isSuccess}}
|
||||||
|
<li><strong>Success !</strong></li>
|
||||||
|
{{else}}
|
||||||
|
<li><strong>Failure ...</strong></li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
@ -30,18 +30,33 @@
|
|||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<li>Bonus/Malus: {{bonusMalus}}% </li>
|
<li>Bonus/Malus: {{bonusMalus}}% </li>
|
||||||
|
|
||||||
|
{{#if extraTime}}
|
||||||
|
<li>Extra time: +30%, time x 2</li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if synergyBonus}}
|
||||||
|
<li>Synergy Bonus: +{{synergyBonus}}% </li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
<li>Target Number: {{percentValue}}% </li>
|
<li>Target Number: {{percentValue}}% </li>
|
||||||
<li>Result: {{diceResult}} </li>
|
<li>Result: {{diceResult}} </li>
|
||||||
<li>Degrees: {{degrees}} </li>
|
<li>Degrees: {{degrees}} </li>
|
||||||
|
|
||||||
|
{{#if taskId}}
|
||||||
|
<li>Task : {{taskName}}</li>
|
||||||
|
<li>Nb rolls : {{taskNbrolls}} </li>
|
||||||
|
<li>Cumulated : {{taskCumulated}} </li>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{#if isCriticalSuccess}}
|
{{#if isCriticalSuccess}}
|
||||||
<li><strong>Critical Success !</strong></li>
|
<li><strong>Special Success !</strong></li>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#if isSuccess}}
|
{{#if isSuccess}}
|
||||||
<li><strong>Success !</strong></li>
|
<li><strong>Success !</strong></li>
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#if isCriticalFailure}}
|
{{#if isCriticalFailure}}
|
||||||
<li><strong>Critical Failure !</strong></li>
|
<li><strong>Mishap !</strong></li>
|
||||||
{{else}}
|
{{else}}
|
||||||
<li><strong>Failure ...</strong></li>
|
<li><strong>Failure ...</strong></li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
@ -66,9 +81,23 @@
|
|||||||
<li>Penetration : {{mul weapon.system.penetrationmin damageMultiplier}} - {{mul weapon.system.penetrationmax damageMultiplier}}</li>
|
<li>Penetration : {{mul weapon.system.penetrationmin damageMultiplier}} - {{mul weapon.system.penetrationmax damageMultiplier}}</li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
|
<li class="flex-group-left">
|
||||||
|
<a class="chat-roll-opposed gm-actions">
|
||||||
|
<span data-tooltip="Opposed" class="roll-opposed-icon fa-stack fa-1x">
|
||||||
|
<i class="fa-thin fa-square fa-stack-1x"></i>
|
||||||
|
<i class="fa-solid fa-arrow-right-arrow-left fa-stack-1x "></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
<span> </span>
|
||||||
{{#if (and (not isSuccess) rerolls)}}
|
{{#if (and (not isSuccess) rerolls)}}
|
||||||
<button class="chat-card-button chat-reroll">Reroll !</button>
|
<a class="chat-reroll">
|
||||||
|
<span data-tooltip="Reroll" class="roll-opposed-icon fa-stack fa-1x">
|
||||||
|
<i class="fa-thin fa-square fa-stack-1x"></i>
|
||||||
|
<i class="fa-solid fa-arrows-rotate fa-stack-1x"></i>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
<div class="chat-message-header">
|
|
||||||
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
|
|
||||||
<h4 class=chat-actor-name>{{defenderName}}</h4>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div >
|
|
||||||
{{defenderName}} wins the opposition against {{attackerName}} !
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
19
templates/chat/chat-opposition-result.hbs
Normal file
19
templates/chat/chat-opposition-result.hbs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<div class="chat-message-header">
|
||||||
|
|
||||||
|
<img class="actor-icon" src="{{winner.actorImg}}" alt="{{winner.alias}}" />
|
||||||
|
|
||||||
|
<span data-tooltip="Opposed" class="roll-opposed-icon fa-stack fa-1x">
|
||||||
|
<i class="fa-thin fa-square fa-stack-1x"></i>
|
||||||
|
<i class="fa-solid fa-arrow-right-arrow-left fa-stack-1x "></i>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
<img class="actor-icon" src="{{looser.actorImg}}" alt="{{looser.alias}}" />
|
||||||
|
<label class="chat-actor-name-opposition">{{winner.alias}} vs {{looser.alias}}</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
<div >
|
||||||
|
<label class="chat-result-success">{{winner.alias}} ({{winner.skill.name}}, {{winner.diceResult}}) wins opposition against {{looser.alias}} ({{looser.skill.name}}, {{looser.diceResult}})</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
|||||||
<div class="chat-message-header">
|
|
||||||
{{#if actorImg}}
|
|
||||||
<img class="actor-icon" src="{{actorImg}}" alt="{{alias}}" />
|
|
||||||
{{/if}}
|
|
||||||
<h4 class=chat-actor-name>{{alias}}</h4>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
{{#if img}}
|
|
||||||
<div>
|
|
||||||
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
<div class="flexcol">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
|
|
||||||
{{#if isRangedAttack}}
|
|
||||||
<div>{{defender.name}} is under Ranged attack. He must roll a Target Roll to defend himself.</div>
|
|
||||||
{{else}}
|
|
||||||
<div>{{defender.name}} is under Melee attack. He must roll a Defense Roll to defend himself.</div>
|
|
||||||
{{/if}}
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
{{#if isRangedAttack}}
|
|
||||||
<li>
|
|
||||||
<button class="chat-card-button roll-defense-ranged" data-roll-id="{{@root.rollId}}">Roll Target !</button>
|
|
||||||
</li>
|
|
||||||
{{else}}
|
|
||||||
<li>
|
|
||||||
{{#each defenderWeapons as |weapon idx|}}
|
|
||||||
<button class="chat-card-button roll-defense-melee" data-defense-weapon-id="{{weapon._id}}"
|
|
||||||
data-roll-id="{{@root.rollId}}">{{weapon.name}}</button>
|
|
||||||
{{/each}}
|
|
||||||
</li>
|
|
||||||
{{/if}}
|
|
||||||
</ul>
|
|
||||||
<!-- <button class="chat-card-button reroll-level-remaining" data-roll-id="{{rollId}}">Reroll</button> -->
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
@ -47,11 +47,7 @@
|
|||||||
|
|
||||||
<li class="flexrow"><label class="generic-label">Availability</label>
|
<li class="flexrow"><label class="generic-label">Availability</label>
|
||||||
<select class="competence-base flexrow" type="text" name="system.availability" value="{{system.availability}}" data-dtype="String">
|
<select class="competence-base flexrow" type="text" name="system.availability" value="{{system.availability}}" data-dtype="String">
|
||||||
{{#select system.availability}}
|
{{selectOptions config.availability selected=system.availability}}
|
||||||
{{#each config.availability as |name key|}}
|
|
||||||
<option value="{{key}}">{{name}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -19,11 +19,7 @@
|
|||||||
<label class="item-field-label-long">Cyber Type</label>
|
<label class="item-field-label-long">Cyber Type</label>
|
||||||
<select class="item-field-label-vlong" type="text" name="system.cybertype" value="{{system.cybertype}}"
|
<select class="item-field-label-vlong" type="text" name="system.cybertype" value="{{system.cybertype}}"
|
||||||
data-dtype="String">
|
data-dtype="String">
|
||||||
{{#select system.cybertype}}
|
{{selectOptions config.cyberTypes selected=system.cybertype}}
|
||||||
{{#each config.cyberTypes as |type key|}}
|
|
||||||
<option value="{{key}}">{{type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow"><label class="item-field-label-long">Upgrade</label>
|
<li class="flexrow"><label class="item-field-label-long">Upgrade</label>
|
||||||
|
33
templates/items/item-extendedtest-sheet.hbs
Normal file
33
templates/items/item-extendedtest-sheet.hbs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<form class="{{cssClass}}" autocomplete="off">
|
||||||
|
<header class="sheet-header">
|
||||||
|
<img class="item-sheet-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||||
|
<div class="header-fields">
|
||||||
|
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
{{> systems/fvtt-dark-stars/templates/partials/partial-item-nav.hbs}}
|
||||||
|
|
||||||
|
{{!-- Sheet Body --}}
|
||||||
|
<section class="sheet-body">
|
||||||
|
|
||||||
|
{{> systems/fvtt-dark-stars/templates/partials/partial-item-description.hbs}}
|
||||||
|
|
||||||
|
<div class="tab details" data-group="primary" data-tab="details">
|
||||||
|
<ul>
|
||||||
|
<li class="flexrow">
|
||||||
|
<label class="item-field-label-long">Skill</label>
|
||||||
|
<label class="item-field-label-long">{{system.skill}}</label>
|
||||||
|
</li>
|
||||||
|
<li class="flexrow">
|
||||||
|
<label class="item-field-label-long">Cumulated score</label>
|
||||||
|
<label class="item-field-label-long">{{system.cumulated}}</label>
|
||||||
|
</li>
|
||||||
|
<li class="flexrow">
|
||||||
|
<label class="item-field-label-long">Number of rolls</label>
|
||||||
|
<label class="item-field-label-long">{{system.nbrolls}}</label>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</form>
|
@ -19,11 +19,7 @@
|
|||||||
<label class="item-field-label-long">Genetic Type</label>
|
<label class="item-field-label-long">Genetic Type</label>
|
||||||
<select class="item-field-label-vlong" type="text" name="system.cybertype" value="{{system.cybertype}}"
|
<select class="item-field-label-vlong" type="text" name="system.cybertype" value="{{system.cybertype}}"
|
||||||
data-dtype="String">
|
data-dtype="String">
|
||||||
{{#select system.cybertype}}
|
{{selectOptions config.cyberTypes selected=system.cybertype}}
|
||||||
{{#each config.cyberTypes as |type key|}}
|
|
||||||
<option value="{{key}}">{{type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow"><label class="item-field-label-long">Upgrade</label>
|
<li class="flexrow"><label class="item-field-label-long">Upgrade</label>
|
||||||
|
@ -17,11 +17,7 @@
|
|||||||
|
|
||||||
<li class="flexrow"><label class="item-field-label-long">Perk Type</label>
|
<li class="flexrow"><label class="item-field-label-long">Perk Type</label>
|
||||||
<select class="item-field-label-vlong" type="text" name="system.perktype" value="{{system.perktype}}" data-dtype="String">
|
<select class="item-field-label-vlong" type="text" name="system.perktype" value="{{system.perktype}}" data-dtype="String">
|
||||||
{{#select system.perktype}}
|
{{selectOptions config.perktypes selected=system.perktype}}
|
||||||
{{#each config.perktypes as |type key|}}
|
|
||||||
<option value="{{key}}">{{type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -17,11 +17,7 @@
|
|||||||
|
|
||||||
<li class="flexrow"><label class="item-field-label-long">Perk Type</label>
|
<li class="flexrow"><label class="item-field-label-long">Perk Type</label>
|
||||||
<select class="item-field-label-vlong" type="text" name="system.perktype" value="{{system.perktype}}" data-dtype="String">
|
<select class="item-field-label-vlong" type="text" name="system.perktype" value="{{system.perktype}}" data-dtype="String">
|
||||||
{{#select system.perktype}}
|
{{selectOptions config.perktypes selected=system.perktype}}
|
||||||
{{#each config.perktypes as |type key|}}
|
|
||||||
<option value="{{key}}">{{type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -17,11 +17,7 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li class="flexrow"><label class="item-field-label-long">Base</label>
|
<li class="flexrow"><label class="item-field-label-long">Base</label>
|
||||||
<select class="item-field-label-long competence-base flexrow" type="text" name="system.base" value="{{system.base}}" data-dtype="String">
|
<select class="item-field-label-long competence-base flexrow" type="text" name="system.base" value="{{system.base}}" data-dtype="String">
|
||||||
{{#select system.base}}
|
{{selectOptions config.basebonus selected=system.base}}
|
||||||
{{#each config.basebonus as |name key|}}
|
|
||||||
<option value="{{key}}">{{name}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -19,11 +19,7 @@
|
|||||||
<label class="item-field-label-long">Magic Type</label>
|
<label class="item-field-label-long">Magic Type</label>
|
||||||
<select class="item-field-label-vlong" type="text" name="system.magictype" value="{{system.magictype}}"
|
<select class="item-field-label-vlong" type="text" name="system.magictype" value="{{system.magictype}}"
|
||||||
data-dtype="String">
|
data-dtype="String">
|
||||||
{{#select system.magictype}}
|
{{selectOptions config.magicTypes selected=system.magictype}}
|
||||||
{{#each config.magicTypes as |type key|}}
|
|
||||||
<option value="{{key}}">{{type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow"><label class="item-field-label-long">Experience</label>
|
<li class="flexrow"><label class="item-field-label-long">Experience</label>
|
||||||
|
@ -21,21 +21,13 @@
|
|||||||
|
|
||||||
<li class="flexrow"><label class="item-field-label-long">Weapon Type</label>
|
<li class="flexrow"><label class="item-field-label-long">Weapon Type</label>
|
||||||
<select class="item-field-label-vlong" type="text" name="system.weapontype" value="{{system.weapontype}}" data-dtype="String">
|
<select class="item-field-label-vlong" type="text" name="system.weapontype" value="{{system.weapontype}}" data-dtype="String">
|
||||||
{{#select system.weapontype}}
|
{{selectOptions config.weapontypes selected=system.weapontype}}
|
||||||
{{#each config.weapontypes as |type key|}}
|
|
||||||
<option value="{{key}}">{{type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flexrow"><label class="item-field-label-long">Associated skill</label>
|
<li class="flexrow"><label class="item-field-label-long">Associated skill</label>
|
||||||
<select class="item-field-label-vlong" type="text" name="system.skill" value="{{system.skill}}" data-dtype="String">
|
<select class="item-field-label-vlong" type="text" name="system.skill" value="{{system.skill}}" data-dtype="String">
|
||||||
{{#select system.skill}}
|
{{selectOptions skills selected=system.skill nameAttr="name" valueAttr="name" labelAttr="name"}}
|
||||||
{{#each skills as |skill idx|}}
|
|
||||||
<option value="{{skill.name}}">{{skill.name}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
@ -91,21 +83,13 @@
|
|||||||
|
|
||||||
<li class="flexrow"><label class="item-field-label-long">Effective Range</label>
|
<li class="flexrow"><label class="item-field-label-long">Effective Range</label>
|
||||||
<select class="item-field-label-long" type="text" name="system.effectiverange" value="{{system.effectiverange}}" data-dtype="Number">
|
<select class="item-field-label-long" type="text" name="system.effectiverange" value="{{system.effectiverange}}" data-dtype="Number">
|
||||||
{{#select system.effectiverange}}
|
{{selectOptions config.range selected=system.effectiverange}}
|
||||||
{{#each config.range as |type key|}}
|
|
||||||
<option value="{{key}}">{{type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="flexrow"><label class="item-field-label-long">Maximum Range</label>
|
<li class="flexrow"><label class="item-field-label-long">Maximum Range</label>
|
||||||
<select class="item-field-label-long" type="text" name="system.maxrange" value="{{system.maxrange}}" data-dtype="Number">
|
<select class="item-field-label-long" type="text" name="system.maxrange" value="{{system.maxrange}}" data-dtype="Number">
|
||||||
{{#select system.maxrange}}
|
{{selectOptions config.range selected=system.maxrange}}
|
||||||
{{#each config.range as |type key|}}
|
|
||||||
<option value="{{key}}">{{type}}</option>
|
|
||||||
{{/each}}
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -4,16 +4,6 @@
|
|||||||
</span>
|
</span>
|
||||||
<select class="status-small-label color-class-common" type="text" name="system.abilities.{{key}}.value" value="{{ability.value}}"
|
<select class="status-small-label color-class-common" type="text" name="system.abilities.{{key}}.value" value="{{ability.value}}"
|
||||||
data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}}>
|
data-dtype="Number" {{#unless @root.editScore}}disabled{{/unless}}>
|
||||||
{{#select ability.value}}
|
{{selectOptions @root.config.abilityValues selected=ability.value}}
|
||||||
<option value="0">0</option>
|
|
||||||
<option value="1">1</option>
|
|
||||||
<option value="2">2</option>
|
|
||||||
<option value="3">3</option>
|
|
||||||
<option value="4">4</option>
|
|
||||||
<option value="5">5</option>
|
|
||||||
<option value="6">6</option>
|
|
||||||
<option value="7">7</option>
|
|
||||||
<option value="8">8</option>
|
|
||||||
{{/select}}
|
|
||||||
</select>
|
</select>
|
||||||
</li>
|
</li>
|
@ -1,7 +0,0 @@
|
|||||||
<option value="agi">Agility</option>
|
|
||||||
<option value="str">Strength</option>
|
|
||||||
<option value="dex">Dexterity</option>
|
|
||||||
<option value="con">Constitution</option>
|
|
||||||
<option value="int">Intelligence</option>
|
|
||||||
<option value="wit">Wits</option>
|
|
||||||
<option value="cha">Charisma</option>
|
|
@ -1,14 +0,0 @@
|
|||||||
{{#if notapplicable}}
|
|
||||||
<option value="notapplicable">Not applicable</option>
|
|
||||||
{{/if}}
|
|
||||||
<option value="0">0</option>
|
|
||||||
<option value="1">d4</option>
|
|
||||||
<option value="2">d6</option>
|
|
||||||
<option value="3">d8</option>
|
|
||||||
<option value="4">d10</option>
|
|
||||||
<option value="5">d12</option>
|
|
||||||
<option value="6">d12 d4</option>
|
|
||||||
<option value="7">d12 d6</option>
|
|
||||||
<option value="8">d12 d8</option>
|
|
||||||
<option value="9">d12 d10</option>
|
|
||||||
<option value="10">d12 d12</option>
|
|
@ -1,15 +0,0 @@
|
|||||||
{{#if notapplicable}}
|
|
||||||
<option value="notapplicable">Not applicable</option>
|
|
||||||
{{/if}}
|
|
||||||
<option value="touch">Self Only</option>
|
|
||||||
<option value="touchself">Touch/Self</option>
|
|
||||||
<option value="tz">Threat Zone</option>
|
|
||||||
<option value="close">Close</option>
|
|
||||||
<option value="medium">Medium</option>
|
|
||||||
<option value="long">Long</option>
|
|
||||||
<option value="extreme">Extreme</option>
|
|
||||||
<option value="sight">Line of Sight</option>
|
|
||||||
<option value="tz_close">TZ/Close</option>
|
|
||||||
<option value="close_medium">Close/Medium</option>
|
|
||||||
<option value="medium_long">Medium/Long</option>
|
|
||||||
<option value="long_extreme">Long/Extreme</option>
|
|
@ -1,4 +0,0 @@
|
|||||||
|
|
||||||
<ul>
|
|
||||||
</ul>
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user