Compare commits
25 Commits
fvtt-hero-
...
fvtt-hero-
Author | SHA1 | Date | |
---|---|---|---|
9cefc6f816 | |||
11d7c7d1c0 | |||
3abf9a9f8f | |||
f5c0faffd3 | |||
3f0e0a41b8 | |||
20c49eb48c | |||
6275319164 | |||
19fb872824 | |||
002d6f4fbd | |||
43a3a2ccfa | |||
356f0fee5f | |||
58bcfc07a3 | |||
3dcb60e7a9 | |||
6c4812c7e4 | |||
099bb0d88c | |||
9a30275640 | |||
b798cde48d | |||
a943e6defa | |||
9099e812d5 | |||
6d6b7075df | |||
3762e6185b | |||
1e74d6f306 | |||
8f10b9825e | |||
297c94adb7 | |||
b535a86116 |
18
README.md
18
README.md
@ -1,2 +1,18 @@
|
||||
# fvtt-dark-stars
|
||||
This is the official Hero System 6th Edition game system for FoundryVTT, based on the TTRPG from Hero Games and developed by Legendsmiths, LLC. For more information about Legendsmiths and their work, visit https://legendsmiths.com/.
|
||||
|
||||
The Hero System game system is not usable standalone. To play this game you need a copy of the core rulebook.
|
||||
|
||||
Installation
|
||||
Manifest URL: https://github.com/Legendsmiths-LLC/
|
||||
|
||||
For manual installation, use the provided manifest URL in the "Install System" popup window while managing game systems.
|
||||
|
||||
Copyright (c) 2023 Legendsmiths, LLC
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
All content for the HERO System™® is DOJ, Inc.’s trademark for its roleplaying system. HERO System Copyright ©1984, 1989, 2002, 2009 by DOJ, Inc. d/b/a Hero Games. All rights reserved. Fantasy Hero ©2003, 2010 by DOJ, Inc. d/b/a Hero Games. All rights reserved. Star Hero ©2003, 2011 by DOJ, Inc. d/b/a Hero Games. All rights reserved. All DOJ trademarks and copyrights used with permission and under license with Legendsmiths , LLC. For further information about Hero Games and the HERO System, visit www.herogames.com. All HERO System™® content is not be included to copy, modify, merge, publish, distribute, sublicense, and/or sell with copies of the Software with the exception of the current licensee Legendsmiths, LLC.
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
BIN
images/ui/hero_foundry_cover.webp
Normal file
BIN
images/ui/hero_foundry_cover.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 202 KiB |
37
lang/en.json
37
lang/en.json
@ -1,18 +1,27 @@
|
||||
{
|
||||
"ACTOR": {
|
||||
"TypeCharacter": "Character"
|
||||
"TYPES": {
|
||||
"Actor": {
|
||||
"character": "Character",
|
||||
"minion": "Minion"
|
||||
},
|
||||
"Item": {
|
||||
"skill": "Skill",
|
||||
"perk": "Perk",
|
||||
"power": "Power",
|
||||
"talent": "Talent",
|
||||
"advantage": "Advantage",
|
||||
"martialart": "Martial art",
|
||||
"limitation": "Limitation",
|
||||
"complication": "Complication",
|
||||
"equipment": "Equipment",
|
||||
"currency": "Currency",
|
||||
"maneuver": "Maneuver"
|
||||
}
|
||||
},
|
||||
"ITEM": {
|
||||
"TypeSkill": "Skill",
|
||||
"TypePerk": "Perk",
|
||||
"TypePower": "Power",
|
||||
"TypeTalent": "Talent",
|
||||
"TypeAdvantage": "Advantage",
|
||||
"TypeMartialart": "Martial art",
|
||||
"TypeLimitation": "Limitation",
|
||||
"TypeComplication": "Complication",
|
||||
"TypeEquipment": "Equipment",
|
||||
"TypeCurrency": "Currency",
|
||||
"TypeManeuver": "Maneuver"
|
||||
"COMBAT": {
|
||||
"TurnPrev": "Previous initiative",
|
||||
"RoundPrev": "Previous segment",
|
||||
"TurnNext": "Next initiative",
|
||||
"RoundNext": "Next segment"
|
||||
}
|
||||
}
|
@ -46,13 +46,17 @@ export class Hero6ActorSheet extends ActorSheet {
|
||||
complications: this.actor.getComplications( ),
|
||||
maneuvers: this.actor.getManeuvers( ),
|
||||
nonstockmaneuvers: this.actor.getNonStockManeuvers(),
|
||||
allmaneuvers: this.actor.getAllManeuvers(),
|
||||
weapons: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getWeapons()) ),
|
||||
armors: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getArmors())),
|
||||
shields: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getShields())),
|
||||
equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsMoneys()) ),
|
||||
moneys: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getMoneys())),
|
||||
equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipments()) ),
|
||||
subActors: duplicate(this.actor.getSubActors()),
|
||||
race: duplicate(this.actor.getRace()),
|
||||
encCapacity: this.actor.getEncumbranceCapacity(),
|
||||
isHold: this.actor.getHoldAction(),
|
||||
isAbort: this.actor.getAbortAction(),
|
||||
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
|
||||
motivation: await TextEditor.enrichHTML(this.object.system.biodata.motivation, {async: true}),
|
||||
quote: await TextEditor.enrichHTML(this.object.system.biodata.quote, {async: true}),
|
||||
@ -72,7 +76,9 @@ export class Hero6ActorSheet extends ActorSheet {
|
||||
editScore: this.options.editScore,
|
||||
isGM: game.user.isGM
|
||||
}
|
||||
|
||||
this.formData = formData;
|
||||
this.stockManeuverDisplayed = false
|
||||
|
||||
console.log("PC : ", formData, this.object);
|
||||
return formData;
|
||||
@ -87,9 +93,9 @@ export class Hero6ActorSheet extends ActorSheet {
|
||||
// Everything below here is only needed if the sheet is editable
|
||||
if (!this.options.editable) return;
|
||||
|
||||
html.bind("keydown", function(e) { // Ignore Enter in actores sheet
|
||||
/*html.bind("keydown", function(e) { // Ignore Enter in actores sheet
|
||||
if (e.keyCode === 13) return false;
|
||||
});
|
||||
});*/
|
||||
|
||||
// Update Inventory Item
|
||||
html.find('.item-edit').click(ev => {
|
||||
@ -177,13 +183,34 @@ export class Hero6ActorSheet extends ActorSheet {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
let itemId = li.data("item-id")
|
||||
this.actor.rollLiftDice(itemId);
|
||||
});
|
||||
|
||||
});
|
||||
html.find('.roll-weapon').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const skillId = li.data("item-id")
|
||||
this.actor.rollWeapon(skillId)
|
||||
});
|
||||
html.find('.roll-maneuver').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const maneuverId = li.data("maneuver-id")
|
||||
this.actor.rollManeuver(maneuverId)
|
||||
});
|
||||
|
||||
html.find('.hold-action').click((event) => {
|
||||
this.actor.holdAction()
|
||||
});
|
||||
html.find('.abort-action').click((event) => {
|
||||
this.actor.abortAction()
|
||||
});
|
||||
|
||||
html.find(".show-stock-maneuver").click((event) => {
|
||||
if ( !this.stockManeuverDisplayed) {
|
||||
$('div .maneuver-list').removeClass('maneuver-is-stock');
|
||||
this.stockManeuverDisplayed = true
|
||||
} else {
|
||||
$('div .maneuver-list').addClass('maneuver-is-stock');
|
||||
this.stockManeuverDisplayed = false
|
||||
}
|
||||
});
|
||||
|
||||
html.find('.lock-unlock-sheet').click((event) => {
|
||||
this.options.editScore = !this.options.editScore;
|
||||
|
@ -4,7 +4,7 @@ import { Hero6RollDialog } from "./hero6-roll-dialog.js";
|
||||
import { Hero6LiftDice } from "./hero6-lift-dice.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
const __speed2Segments = [[0], [7], [6, 12], [4, 8, 12], [3, 6, 9, 12], [3, 5, 8, 10, 12], [2, 4, 6, 8, 10, 12]
|
||||
const __speed2Segments = [[0], [7], [6, 12], [4, 8, 12], [3, 6, 9, 12], [3, 5, 8, 10, 12], [2, 4, 6, 8, 10, 12],
|
||||
[2, 4, 6, 7, 9, 11, 12], [2, 3, 5, 6, 8, 9, 11, 12], [2, 3, 4, 6, 7, 8, 10, 11, 12], [2, 3, 4, 5, 6, 8, 9, 10, 11, 12],
|
||||
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]]
|
||||
|
||||
@ -40,11 +40,10 @@ export class Hero6Actor extends Actor {
|
||||
return actor;
|
||||
}
|
||||
|
||||
if (data.type == 'character') {
|
||||
//const skills = await Hero6Utility.loadCompendium("fvtt-hero-system-6.skills");
|
||||
//data.items = skills.map(i => i.toObject())
|
||||
}
|
||||
if (data.type == 'npc') {
|
||||
if (data.type == 'character' || data.type == 'minion') {
|
||||
const maneuvers = await Hero6Utility.loadCompendium("fvtt-hero-system-6.maneuvers")
|
||||
let maneuversObj = maneuvers.map(i => i.toObject())
|
||||
data.items = maneuversObj.filter(m => m.system.isstock)
|
||||
}
|
||||
|
||||
return super.create(data, options);
|
||||
@ -61,14 +60,19 @@ export class Hero6Actor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
computeDerivatedData() {
|
||||
if (this.type == "character") {
|
||||
let newSTREND = this.computeSTREND()
|
||||
if (newSTREND != this.system.characteristics.str.strend) {
|
||||
this.update({ 'system.characteristics.str.strend': newSTREND })
|
||||
}
|
||||
let newSTREND = this.computeSTREND()
|
||||
if (newSTREND != this.system.characteristics.str.strend) {
|
||||
this.update({ 'system.characteristics.str.strend': newSTREND })
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
performMigration() {
|
||||
// Fix OCV/OMCV rollable
|
||||
if (!this.system.characteristics.ocv.hasroll) {
|
||||
this.update({ 'system.characteristics.ocv.hasroll': true, 'system.characteristics.omcv.hasroll': true })
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
computeDicesValue() {
|
||||
this.system.biodata.presenceattack = Hero6Utility.getDerivatedDiceFormulas(this.system.characteristics.pre.value)
|
||||
this.system.characteristics.str.strdice = Hero6LiftDice.getLiftDice(this.system.characteristics.str.value)
|
||||
@ -163,6 +167,19 @@ export class Hero6Actor extends Actor {
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _preCreate(data, options, user) {
|
||||
await super._preCreate(data, options, user);
|
||||
|
||||
// Configure prototype token settings
|
||||
const prototypeToken = {};
|
||||
if (this.type === "character") Object.assign(prototypeToken, {
|
||||
sight: { enabled: true }, actorLink: true, disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY
|
||||
});
|
||||
this.updateSource({ prototypeToken });
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
prepareSkill(skill) {
|
||||
skill.roll = 0
|
||||
@ -205,6 +222,17 @@ export class Hero6Actor extends Actor {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
prepareManeuver(maneuver) {
|
||||
|
||||
maneuver.roll = 11 + this.system.characteristics.ocv.value
|
||||
if (Number(maneuver.system.ocv)) {
|
||||
maneuver.roll += Number(maneuver.system.ocv)
|
||||
} else {
|
||||
maneuver.noOCV = true
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getSkills() {
|
||||
let comp = duplicate(this.items.filter(item => item.type == 'skill') || [])
|
||||
@ -283,6 +311,11 @@ export class Hero6Actor extends Actor {
|
||||
Hero6Utility.sortArrayObjectsByName(maneuvers.defensive)
|
||||
return maneuvers
|
||||
}
|
||||
getAllManeuvers() {
|
||||
let maneuvers = this.items.filter(item => item.type == "maneuver")
|
||||
Hero6Utility.sortArrayObjectsByName(maneuvers)
|
||||
return maneuvers
|
||||
}
|
||||
getNonStockManeuvers() {
|
||||
let maneuvers = this.items.filter(item => item.type == "maneuver" && !item.system.isstock)
|
||||
Hero6Utility.sortArrayObjectsByName(maneuvers)
|
||||
@ -293,6 +326,11 @@ export class Hero6Actor extends Actor {
|
||||
Hero6Utility.sortArrayObjectsByName(list)
|
||||
return list
|
||||
}
|
||||
getMoneys() {
|
||||
let list = this.items.filter(item => item.type == "equipment" && item.system.subtype == "money");
|
||||
Hero6Utility.sortArrayObjectsByName(list)
|
||||
return list
|
||||
}
|
||||
getWeapons() {
|
||||
let list = this.items.filter(item => item.type == "equipment" && item.system.subtype == "weapon");
|
||||
Hero6Utility.sortArrayObjectsByName(list)
|
||||
@ -385,23 +423,88 @@ export class Hero6Actor extends Actor {
|
||||
await this.updateEmbeddedDocuments('Item', [update]); // Updates one EmbeddedEntity
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
async cleanCombat() {
|
||||
await this.setFlag("world", "hold-action", false)
|
||||
await this.setFlag("world", "abort-action", { state: false, count: 0 })
|
||||
}
|
||||
async holdAction() {
|
||||
await this.disableAbortAction()
|
||||
if (this.getFlag("world", "hold-action")) {
|
||||
await this.setFlag("world", "hold-action", false)
|
||||
//game.combat.holdAction(this.id, false)
|
||||
game.combat.forceHold(this, false)
|
||||
return false
|
||||
} else {
|
||||
await this.setFlag("world", "hold-action", true)
|
||||
//game.combat.holdAction(this.id, false)
|
||||
game.combat.forceHold(this, true)
|
||||
return true
|
||||
}
|
||||
}
|
||||
async disableHoldAction() {
|
||||
await this.setFlag("world", "hold-action", false)
|
||||
}
|
||||
async disableAbortAction() {
|
||||
await this.setFlag("world", "abort-action", { state: false, count: 0 })
|
||||
}
|
||||
async abortAction() {
|
||||
await this.disableHoldAction()
|
||||
let abort = this.getFlag("world", "abort-action")
|
||||
if (abort.state) {
|
||||
await this.setFlag("world", "abort-action", { state: false, count: 0 })
|
||||
game.combat.forceAbort(this, false)
|
||||
//game.combat.abortAction(this.id, false)
|
||||
} else {
|
||||
await this.setFlag("world", "abort-action", { state: true, count: 0 })
|
||||
game.combat.forceAbort(this, true)
|
||||
//game.combat.abortAction(this.id, true)
|
||||
}
|
||||
}
|
||||
async incAbortActionCount() {
|
||||
let abort = this.getFlag("world", "abort-action")
|
||||
if (abort.state) {
|
||||
abort.count++
|
||||
await this.setFlag("world", "abort-action", abort)
|
||||
if (abort.count == 2) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
getHoldAction() {
|
||||
return this.getFlag("world", "hold-action")
|
||||
}
|
||||
getAbortAction() {
|
||||
let abort = this.getFlag("world", "abort-action")
|
||||
return abort?.state || false
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
hasPhase(segmentNumber) {
|
||||
let index = Math.min(Math.max(this.system.characteristics.spd.value, 1), 12) // Security bounds
|
||||
let phases = __speed2Segments[index]
|
||||
console.log("index", segmentNumber, index, phases, phases.includes(segmentNumber), __speed2Segments)
|
||||
return phases.includes(segmentNumber)
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getSegments() {
|
||||
let index = [ Math.min(Math.max(this.system.characteristics.spd.value, 1), 12) ] // Security bounds
|
||||
let index = Math.min(Math.max(this.system.characteristics.spd.value, 1), 12) // Security bounds
|
||||
//console.log("INDEX", index, __speed2Segments[index])
|
||||
return __speed2Segments[index]
|
||||
}
|
||||
getPhasesString() {
|
||||
let index = Math.min(Math.max(this.system.characteristics.spd.value, 1), 12) // Security bounds
|
||||
return __speed2Segments[index].toString()
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getBaseInit() {
|
||||
let r = new Roll("1d6").roll({ async: false })
|
||||
let base = this.system.characteristics.dex.value + (r.total / 10)
|
||||
return base
|
||||
getBaseInit(turn) {
|
||||
if (turn != this.turn) {
|
||||
let r = new Roll("1d6").roll({ async: false })
|
||||
this.currentInit = Number(this.system.characteristics.dex.initiative) + Number(((r.total / 10).toFixed(2)))
|
||||
this.turn = turn
|
||||
}
|
||||
return this.currentInit
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -431,8 +534,13 @@ export class Hero6Actor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
prepareCharacValues(charac) {
|
||||
charac.total = charac.value
|
||||
charac.roll = 9 + Math.round((charac.value) / 5)
|
||||
if (charac.label == "OCV" || charac.label == "OMCV" ) {
|
||||
charac.total = charac.value
|
||||
charac.roll = 11 + charac.value
|
||||
} else {
|
||||
charac.total = charac.value
|
||||
charac.roll = 9 + Math.round((charac.value) / 5)
|
||||
}
|
||||
}
|
||||
prepareCharac() {
|
||||
let characs = duplicate(this.system.characteristics)
|
||||
@ -443,6 +551,12 @@ export class Hero6Actor extends Actor {
|
||||
ch.lift = Hero6LiftDice.getLift(ch.value)
|
||||
ch.liftDice = Hero6LiftDice.getLiftDice(ch.value)
|
||||
}
|
||||
if (key == "spd") {
|
||||
ch.phasesString = this.getPhasesString()
|
||||
}
|
||||
if (key == "pre") {
|
||||
ch.presenceattack = duplicate(this.system.biodata.presenceattack)
|
||||
}
|
||||
}
|
||||
return characs
|
||||
}
|
||||
@ -576,6 +690,9 @@ export class Hero6Actor extends Actor {
|
||||
if (item.type == "skill") {
|
||||
this.prepareSkill(rollData.item)
|
||||
}
|
||||
if (item.type == "maneuver") {
|
||||
this.prepareManeuver(rollData.item)
|
||||
}
|
||||
this.startRoll(rollData)
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
@ -612,17 +729,41 @@ export class Hero6Actor extends Actor {
|
||||
let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
|
||||
await Hero6Utility.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||
|
||||
rollData.roll = duplicate(myRoll)
|
||||
rollData.bodyValue = Hero6Utility.computeBodyValue(myRoll)
|
||||
rollData.result = myRoll.total
|
||||
rollData.roll = duplicate(myRoll)
|
||||
|
||||
let msg = await Hero6Utility.createChatWithRollMode(rollData.alias, {
|
||||
content: await renderTemplate(`systems/fvtt-hero-system-6/templates/chat/chat-lift-dice-result.hbs`, rollData)
|
||||
let msgFlavor = await renderTemplate(`systems/fvtt-hero-system-6/templates/chat/chat-lift-dice-result.hbs`, rollData)
|
||||
let msg = await myRoll.toMessage({
|
||||
user: game.user.id,
|
||||
rollMode: game.settings.get("core", "rollMode"),
|
||||
flavor: msgFlavor
|
||||
})
|
||||
msg.setFlag("world", "rolldata", rollData)
|
||||
console.log("Rolldata result", rollData)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollManeuver(maneuverId) {
|
||||
let skill = this.items.get(skillId)
|
||||
if (skill) {
|
||||
if (skill.system.islore && skill.system.level == 0) {
|
||||
ui.notifications.warn("You can't use Lore Skills with a SL of 0.")
|
||||
return
|
||||
}
|
||||
skill = duplicate(skill)
|
||||
Hero6Utility.updateSkill(skill)
|
||||
let abilityKey = skill.system.ability
|
||||
let rollData = this.getCommonRollData(abilityKey)
|
||||
rollData.mode = "skill"
|
||||
rollData.skill = skill
|
||||
rollData.img = skill.img
|
||||
if (rollData.target) {
|
||||
ui.notifications.warn("You are targetting a token with a skill : please use a Weapon instead.")
|
||||
return
|
||||
}
|
||||
this.startRoll(rollData)
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
rollSkill(skillId) {
|
||||
let skill = this.items.get(skillId)
|
||||
|
@ -5,7 +5,7 @@ export class Hero6CombatTracker extends CombatTracker {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static get defaultOptions() {
|
||||
var path = "systems/fvtt-hero-system-6/templates/apps/combat-tracker.hbs";
|
||||
let path = "systems/fvtt-hero-system-6/templates/apps/combat-tracker.hbs";
|
||||
return foundry.utils.mergeObject(super.defaultOptions, {
|
||||
template: path,
|
||||
});
|
||||
@ -16,129 +16,279 @@ export class Hero6CombatTracker extends CombatTracker {
|
||||
export class Hero6Combat extends Combat {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static init() {
|
||||
static ready() {
|
||||
Hooks.on("getCombatTrackerEntryContext", (html, options) => { Hero6Combat.pushMenuOptions(html, options); });
|
||||
game.combat.settings.resource = "characteristics.spd.value";
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static pushMenuOptions(html, options) {
|
||||
let newOpt
|
||||
for (let i = 0; i < options.length; i++) {
|
||||
let option = options[i];
|
||||
if (option.name == 'COMBAT.CombatantReroll') { // Replace !
|
||||
option.name = "Hold action";
|
||||
option.name = "Hold/Unhold action";
|
||||
option.condition = true;
|
||||
option.icon = '<i class="far fa-question-circle"></i>';
|
||||
option.callback = target => {
|
||||
Hero6Combat.holdAction(target.data('combatant-id'));
|
||||
let id = target.data('combatant-id')
|
||||
let c = game.combat.combatants.get(id)
|
||||
c.actor.holdAction()
|
||||
}
|
||||
newOpt = duplicate(option)
|
||||
//newOpt = duplicate(option)
|
||||
}
|
||||
}
|
||||
newOpt.name = "Abort action"
|
||||
newOpt.callback = target => {
|
||||
Hero6Combat.abortAction(target.data('combatant-id'));
|
||||
}
|
||||
options.push( newOpt)
|
||||
//options.push(newOpt)
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static holdAction(combatantId) {
|
||||
console.log("Combatant HOLD : ", combatantId)
|
||||
const combatant = game.combat.combatants.get(combatantId)
|
||||
combatant.setFlag("world", "hero6-hold-action", true)
|
||||
combatant.update({name: combatant.name + " (H)"})
|
||||
console.log("HOLD", combatant)
|
||||
holdAction(combatantId) {
|
||||
this.rebuildInitiative()
|
||||
//console.log("Rebuilding.....")
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static abortAction(html, combatantId) {
|
||||
console.log("Combatant ABORT : ", combatantId);
|
||||
const combatant = game.combat.combatants.get(combatantId);
|
||||
combatant.setFlag("world", "hero6-abort-action", true)
|
||||
combatant.update({name: combatant.name + " (A)"})
|
||||
console.log("ABORT", combatant)
|
||||
abortAction(actorId, abortState) {
|
||||
this.rebuildInitiative()
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
constructor(data, context) {
|
||||
super(data, context);
|
||||
|
||||
this.turnNumber = 1;
|
||||
this.turnNumber = 0;
|
||||
this.segmentNumber = 12;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async computeInitiative(c) {
|
||||
let id = c._id || c.id
|
||||
if (c.actor.hasPhase(this.segmentNumber)) {
|
||||
let baseInit = c.actor ? c.actor.getBaseInit() : - 1;
|
||||
await this.updateEmbeddedDocuments("Combatant", [{ _id: id, initiative: baseInit }]);
|
||||
} else {
|
||||
await this.updateEmbeddedDocuments("Combatant", [{ _id: id, initiative: -1, visible: false, active: false }]);
|
||||
async startCombat() {
|
||||
game.combat.settings.resource = "characteristics.spd.value";
|
||||
|
||||
let updList = []
|
||||
for (let c of this.combatants) {
|
||||
this.computeInitiative(c, updList)
|
||||
await c.actor.cleanCombat()
|
||||
}
|
||||
console.log("Combatant", c)
|
||||
if (updList.length > 0) {
|
||||
await this.updateEmbeddedDocuments("Combatant", updList);
|
||||
}
|
||||
|
||||
super.startCombat();
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
forceHold(actor, isHold) {
|
||||
if (game.user.isGM) {
|
||||
let updList = []
|
||||
let c = this.combatants.find(c => c.actor._id == actor.id)
|
||||
let name = actor.name + ((isHold) ? " (H)" : "")
|
||||
console.log("ForceHold!!", c, actor)
|
||||
updList.push({ _id: c.id || c._id, name: name, initiative: actor.getBaseInit(this.segmentNumber) })
|
||||
this.updateEmbeddedDocuments("Combatant", updList)
|
||||
} else {
|
||||
game.socket.emit("system.fvtt-hero-system-6", { name: "msg_force_hold", data: { actorId: actor.id, isHold: isHold } });
|
||||
}
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
forceAbort(actor, isAbort) {
|
||||
if (game.user.isGM) {
|
||||
let updList = []
|
||||
let c = this.combatants.find(c => c.actor._id == actor.id)
|
||||
let name = actor.name + ((isAbort) ? " (A)" : "")
|
||||
updList.push({ _id: c.id || c._id, name: name, initiative: actor.getBaseInit(this.segmentNumber) })
|
||||
this.updateEmbeddedDocuments("Combatant", updList)
|
||||
} else {
|
||||
game.socket.emit("system.fvtt-hero-system-6", { name: "msg_force_abort", data: { actorId: actor.id, isAbort: isAbort } });
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
computeInitiative(c, updList) {
|
||||
let id = c._id || c.id
|
||||
let hasSegment = c.actor.hasPhase(this.segmentNumber)
|
||||
let isOnHold = c.actor.getHoldAction()
|
||||
let isOnAbort = c.actor.getAbortAction()
|
||||
let name = c.actor.name
|
||||
if (hasSegment || isOnHold || isOnAbort) {
|
||||
let baseInit = c.actor ? c.actor.getBaseInit(this.segmentNumber) : 0;
|
||||
if (isOnHold) {
|
||||
if (hasSegment) { // On hold + current segment -> auto-disable on hold
|
||||
c.actor.disableHoldAction()
|
||||
} else {
|
||||
name = c.actor.name + " (H)"
|
||||
}
|
||||
}
|
||||
if (isOnAbort) {
|
||||
name = c.actor.name + " (A)"
|
||||
if (c.actor.incAbortActionCount()) {
|
||||
c.actor.disableAbortAction()
|
||||
}
|
||||
}
|
||||
updList.push({ _id: id, name: name, initiative: baseInit, holdAction: c.holdAction })
|
||||
} else {
|
||||
updList.push({ _id: id, name: name, initiative: 0, holdAction: c.holdAction })
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollInitiative(ids, formula = undefined, messageOptions = {}) {
|
||||
ids = typeof ids === "string" ? [ids] : ids;
|
||||
|
||||
let updList = []
|
||||
for (let cId = 0; cId < ids.length; cId++) {
|
||||
const c = this.combatants.get(ids[cId])
|
||||
await this.computeInitiative(c)
|
||||
this.computeInitiative(c, updList)
|
||||
}
|
||||
|
||||
if (updList.length > 0) {
|
||||
await this.updateEmbeddedDocuments("Combatant", updList);
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
nextRound() {
|
||||
let turn = this.turn === null ? null : 0; // Preserve the fact that it's no-one's turn currently.
|
||||
if (this.settings.skipDefeated && (turn !== null)) {
|
||||
turn = this.turns.findIndex(t => !t.isDefeated);
|
||||
if (turn === -1) {
|
||||
ui.notifications.warn("COMBAT.NoneRemaining", { localize: true });
|
||||
turn = 0;
|
||||
async rebuildInitiative() {
|
||||
let updList = []
|
||||
for (let c of this.combatants) {
|
||||
this.computeInitiative(c, updList)
|
||||
}
|
||||
if (updList.length > 0) {
|
||||
await this.updateEmbeddedDocuments("Combatant", updList);
|
||||
//console.log("Rebuild INIT", updList)
|
||||
for (let c of updList) {
|
||||
if (c.initiative != 0) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
let advanceTime = Math.max(this.turns.length - this.turn, 0) * CONFIG.time.turnTime;
|
||||
advanceTime += CONFIG.time.roundTime;
|
||||
let nextRound = this.round + 1;
|
||||
return false
|
||||
}
|
||||
|
||||
let turnData = this.getFlag("world", "hero6-turn-data")
|
||||
if (!turnData) {
|
||||
turnData = { turnNumber: 1, segmentNumber: 12 }
|
||||
this.setFlag("world", "hero6-turn-data", turnData)
|
||||
/* -------------------------------------------- */
|
||||
nextTurn() {
|
||||
let nbC = this.combatants.filter(c => c.initiative > 0).length
|
||||
//console.log("Next turn called....", this.turn, nbC)
|
||||
if (this.turn < nbC - 1) {
|
||||
super.nextTurn()
|
||||
} else {
|
||||
this.nextRound()
|
||||
}
|
||||
turnData = duplicate(turnData)
|
||||
turnData.segmentNumber -= 1
|
||||
if (turnData.segmentNumber <= 0) {
|
||||
turnData.segmentNumber = 12
|
||||
turnData.turnNumber++
|
||||
}
|
||||
this.setFlag("world", "hero6-turn-data", turnData)
|
||||
this.turnNumber = turnData.turnNumber;
|
||||
this.segmentNumber = turnData.segmentNumber;
|
||||
}
|
||||
|
||||
// Re-compute init of actors
|
||||
for (let c of this.combatants) {
|
||||
this.computeInitiative(c)
|
||||
/* -------------------------------------------- */
|
||||
async previousRound() {
|
||||
let hasCombatants = false
|
||||
let nextRound = this.round
|
||||
let advanceTime = 0
|
||||
let turn = this.turn === null ? null : 0; // Preserve the fact that it's no-one's turn currently.
|
||||
let turnData = this.getFlag("world", "turnData")
|
||||
|
||||
//console.log("Next round called....", nextRound, turnData)
|
||||
while (!hasCombatants) {
|
||||
if (this.settings.skipDefeated && (turn !== null)) {
|
||||
turn = this.turns.findIndex(t => !t.isDefeated);
|
||||
if (turn === -1) {
|
||||
ui.notifications.warn("COMBAT.NoneRemaining", { localize: true });
|
||||
turn = 0;
|
||||
}
|
||||
}
|
||||
advanceTime = -1 * (Math.max(this.turns.length - this.turn, 0) * CONFIG.time.turnTime);
|
||||
advanceTime -= CONFIG.time.roundTime;
|
||||
nextRound = nextRound -1
|
||||
//console.log("Next round called....2", nextRound, turnData)
|
||||
turnData = this.getFlag("world", "turnData")
|
||||
if (!turnData) {
|
||||
turnData = { turnNumber: 0, segmentNumber: 12 }
|
||||
this.setFlag("world", "turnData", turnData)
|
||||
}
|
||||
turnData = duplicate(turnData)
|
||||
turnData.segmentNumber -= 1
|
||||
if (turnData.segmentNumber <= 0) {
|
||||
turnData.segmentNumber = 12
|
||||
turnData.turnNumber--
|
||||
}
|
||||
await this.setFlag("world", "turnData", turnData)
|
||||
this.turnNumber = turnData.turnNumber;
|
||||
this.segmentNumber = turnData.segmentNumber;
|
||||
//console.log("Next round called....3", nextRound, turnData)
|
||||
|
||||
// Re-compute init of actors
|
||||
hasCombatants = await this.rebuildInitiative()
|
||||
//console.log("Going round....", nextRound, hasCombatants)
|
||||
}
|
||||
|
||||
// Update the document, passing data through a hook first
|
||||
const updateData = { round: nextRound, turn, segmentNumber: turnData.segmentNumber, turnNumber: turnData.turnNumber };
|
||||
const updateData = { round: nextRound, turn };
|
||||
const updateOptions = { advanceTime, direction: -1 };
|
||||
Hooks.callAll("combatRound", this, updateData, updateOptions);
|
||||
console.log(this)
|
||||
return this.update(updateData, updateOptions);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async nextRound() {
|
||||
let hasCombatants = false
|
||||
let nextRound = this.round
|
||||
let advanceTime = 0
|
||||
let turn = this.turn === null ? null : 0; // Preserve the fact that it's no-one's turn currently.
|
||||
let turnData = this.getFlag("world", "turnData")
|
||||
|
||||
//console.log("Next round called....", nextRound, turnData)
|
||||
while (!hasCombatants) {
|
||||
if (this.settings.skipDefeated && (turn !== null)) {
|
||||
turn = this.turns.findIndex(t => !t.isDefeated);
|
||||
if (turn === -1) {
|
||||
ui.notifications.warn("COMBAT.NoneRemaining", { localize: true });
|
||||
turn = 0;
|
||||
}
|
||||
}
|
||||
advanceTime = Math.max(this.turns.length - this.turn, 0) * CONFIG.time.turnTime;
|
||||
advanceTime += CONFIG.time.roundTime;
|
||||
nextRound = nextRound + 1;
|
||||
//console.log("Next round called....2", nextRound, turnData)
|
||||
turnData = this.getFlag("world", "turnData")
|
||||
if (!turnData) {
|
||||
turnData = { turnNumber: 0, segmentNumber: 12 }
|
||||
this.setFlag("world", "turnData", turnData)
|
||||
}
|
||||
turnData = duplicate(turnData)
|
||||
turnData.segmentNumber += 1
|
||||
if (turnData.segmentNumber > 12) {
|
||||
turnData.segmentNumber = 1
|
||||
turnData.turnNumber++
|
||||
ChatMessage.create({
|
||||
content: "Complete Post-Segment 12 Recoveries."
|
||||
})
|
||||
}
|
||||
await this.setFlag("world", "turnData", turnData)
|
||||
this.turnNumber = turnData.turnNumber;
|
||||
this.segmentNumber = turnData.segmentNumber;
|
||||
//console.log("Next round called....3", nextRound, turnData)
|
||||
|
||||
// Re-compute init of actors
|
||||
hasCombatants = await this.rebuildInitiative()
|
||||
//console.log("Going round....", nextRound, hasCombatants)
|
||||
}
|
||||
|
||||
// Update the document, passing data through a hook first
|
||||
const updateData = { round: nextRound, turn };
|
||||
const updateOptions = { advanceTime, direction: 1 };
|
||||
Hooks.callAll("combatRound", this, updateData, updateOptions);
|
||||
console.log(this)
|
||||
return this.update(updateData, updateOptions);
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _onCreateEmbeddedDocuments(type, documents, result, options, userId) {
|
||||
console.log(">>>>", documents)
|
||||
super._onCreateEmbeddedDocuments(type, documents, result, options, userId)
|
||||
//console.log("Added...")
|
||||
await super._onCreateEmbeddedDocuments(type, documents, result, options, userId)
|
||||
await this.rebuildInitiative()
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* --------------------------------------------
|
||||
_onUpdate(changed, options, userId) {
|
||||
}
|
||||
}*/
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async checkTurnPosition() {
|
||||
|
@ -53,6 +53,5 @@ export const Hero6_CONFIG = {
|
||||
"standard": "Standard",
|
||||
"normal": "Normal",
|
||||
"killing": "Killing",
|
||||
"countbody": "Killing (Count BODY)"
|
||||
}
|
||||
}
|
@ -41,10 +41,10 @@ Hooks.once("init", async function () {
|
||||
// Set an initiative formula for the system
|
||||
CONFIG.Combat.initiative = {
|
||||
formula: "1d6",
|
||||
decimals: 3
|
||||
decimals: 2
|
||||
};
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
||||
/* ------------------------------- ------------- */
|
||||
game.socket.on("system.fvtt-hero-system-6", data => {
|
||||
Hero6Utility.onSocketMesssage(data)
|
||||
});
|
||||
@ -61,7 +61,7 @@ Hooks.once("init", async function () {
|
||||
// Register sheet application classes
|
||||
Actors.unregisterSheet("core", ActorSheet);
|
||||
Actors.registerSheet("fvtt-hero-system-6", Hero6ActorSheet, { types: ["character"], makeDefault: true });
|
||||
Actors.registerSheet("fvtt-hero-system-6", Hero6NPCSheet, { types: ["npc"], makeDefault: false });
|
||||
Actors.registerSheet("fvtt-hero-system-6", Hero6ActorSheet, { types: ["minion"], makeDefault: false });
|
||||
|
||||
Items.unregisterSheet("core", ItemSheet);
|
||||
Items.registerSheet("fvtt-hero-system-6", Hero6ItemSheet, { makeDefault: true });
|
||||
@ -75,7 +75,7 @@ function welcomeMessage() {
|
||||
user: game.user.id,
|
||||
whisper: [game.user.id],
|
||||
content: `<div id="welcome-message-dark-stars"><span class="rdd-roll-part">
|
||||
<strong>Welcome to the Hero6 RPG.</strong>
|
||||
<strong>Welcome to Hero System 6E RPG.</strong>
|
||||
` });
|
||||
}
|
||||
|
||||
@ -96,6 +96,8 @@ Hooks.once("ready", function () {
|
||||
welcomeMessage();
|
||||
Hero6Utility.ready()
|
||||
Hero6Commands.ready()
|
||||
Hero6Combat.ready()
|
||||
|
||||
})
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
@ -52,6 +52,14 @@ export class Hero6Utility {
|
||||
}
|
||||
return false
|
||||
})
|
||||
Handlebars.registerHelper('fixNum', function (value) {
|
||||
return Number(value) || 0
|
||||
})
|
||||
Handlebars.registerHelper('checkInit', function (value) {
|
||||
let myValue = Number(value) || 0
|
||||
return myValue > 0
|
||||
})
|
||||
|
||||
|
||||
this.gameSettings()
|
||||
|
||||
@ -119,6 +127,10 @@ export class Hero6Utility {
|
||||
const rollTables = await Hero6Utility.loadCompendium("fvtt-hero-system-6.rolltables")
|
||||
this.rollTables = rollTables.map(i => i.toObject())
|
||||
|
||||
for (let actor of game.actors) {
|
||||
actor.performMigration()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -154,6 +166,7 @@ export class Hero6Utility {
|
||||
'systems/fvtt-hero-system-6/templates/partials/partial-options-abilities.hbs',
|
||||
'systems/fvtt-hero-system-6/templates/partials/partial-item-nav.hbs',
|
||||
'systems/fvtt-hero-system-6/templates/partials/partial-item-description.hbs',
|
||||
'systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs',
|
||||
'systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment.hbs',
|
||||
'systems/fvtt-hero-system-6/templates/partials/partial-item-cost.hbs',
|
||||
'systems/fvtt-hero-system-6/templates/partials/partial-power-equipment-cost.hbs',
|
||||
@ -225,12 +238,21 @@ export class Hero6Utility {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async onSocketMesssage(msg) {
|
||||
console.log("SOCKET MESSAGE", msg.name)
|
||||
console.log("SOCKET MESSAGE", msg.name, msg)
|
||||
if (msg.name == "msg_update_roll") {
|
||||
this.updateRollData(msg.data)
|
||||
}
|
||||
if (msg.name == "msg_gm_process_attack_defense") {
|
||||
this.processSuccessResult(msg.data)
|
||||
if (msg.name == "msg_force_hold") {
|
||||
if (game.user.isGM) {
|
||||
let actor = game.actors.get(msg.data.actorId)
|
||||
game.combat.forceHold(actor, msg.data.isHold)
|
||||
}
|
||||
}
|
||||
if (msg.name == "msg_force_abort") {
|
||||
if (game.user.isGM) {
|
||||
let actor = game.actors.get(msg.data.actorId)
|
||||
game.combat.forceAbort(actor, msg.data.isAbort)
|
||||
}
|
||||
}
|
||||
if (msg.name == "msg_gm_item_drop" && game.user.isGM) {
|
||||
let actor = game.actors.get(msg.data.actorId)
|
||||
@ -337,7 +359,7 @@ export class Hero6Utility {
|
||||
let myRoll = rollData.roll
|
||||
if (!myRoll) { // New rolls only of no rerolls
|
||||
myRoll = new Roll(diceFormula).roll({ async: false })
|
||||
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||
//await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
|
||||
}
|
||||
|
||||
rollData.roll = myRoll
|
||||
@ -388,18 +410,22 @@ export class Hero6Utility {
|
||||
// Ensure we have no space at all
|
||||
//hero6Formula = hero6Formula.replace(/\s/g, '')
|
||||
let hasHalfDice = ""
|
||||
if (hero6Formula.match("1/2d6")) {
|
||||
hero6Formula = hero6Formula.replace("1/2d6", "d6")
|
||||
hasHalfDice = "+round(1d6/2)"
|
||||
let newFormula = hero6Formula
|
||||
|
||||
let form1 = hero6Formula.match(/\s*(\d*)\s*1\/2d6/)
|
||||
if ( form1 ) {
|
||||
let nbDice = form1[1] || 0
|
||||
newFormula = nbDice+"d6+round(1d6/2)"
|
||||
}
|
||||
if (hero6Formula.match(".5")) {
|
||||
hero6Formula = hero6Formula.replace(".5", "")
|
||||
hasHalfDice = "+round(1d6/2)"
|
||||
|
||||
let form3 = hero6Formula.match(/\s*(\d*)\.5d6/)
|
||||
if ( form3 ) {
|
||||
let nbDice = form3[1] || 0
|
||||
newFormula = nbDice+"d6+round(1d6/2)"
|
||||
}
|
||||
let foundryFormula = hero6Formula + hasHalfDice
|
||||
foundryFormula = foundryFormula.replace(' ', '')
|
||||
console.log("Parsed formula : ", hero6Formula, foundryFormula)
|
||||
return foundryFormula
|
||||
|
||||
console.log("Parsed formula : ", hero6Formula, newFormula)
|
||||
return newFormula
|
||||
}
|
||||
|
||||
/* -------------- ----------------------------- */
|
||||
|
BIN
packs/complications/000009.ldb
Normal file
BIN
packs/complications/000009.ldb
Normal file
Binary file not shown.
1
packs/complications/CURRENT
Normal file
1
packs/complications/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000098
|
0
packs/complications/LOCK
Normal file
0
packs/complications/LOCK
Normal file
3
packs/complications/LOG
Normal file
3
packs/complications/LOG
Normal file
@ -0,0 +1,3 @@
|
||||
2023/08/24-20:28:52.588130 7fda7bbff6c0 Recovering log #96
|
||||
2023/08/24-20:28:52.597974 7fda7bbff6c0 Delete type=3 #94
|
||||
2023/08/24-20:28:52.598068 7fda7bbff6c0 Delete type=0 #96
|
8
packs/complications/LOG.old
Normal file
8
packs/complications/LOG.old
Normal file
@ -0,0 +1,8 @@
|
||||
2023/08/24-20:11:49.190057 7fda7abfd6c0 Recovering log #92
|
||||
2023/08/24-20:11:49.204015 7fda7abfd6c0 Delete type=3 #90
|
||||
2023/08/24-20:11:49.204065 7fda7abfd6c0 Delete type=0 #92
|
||||
2023/08/24-20:28:26.993087 7fda79bfb6c0 Level-0 table #97: started
|
||||
2023/08/24-20:28:26.993130 7fda79bfb6c0 Level-0 table #97: 0 bytes OK
|
||||
2023/08/24-20:28:27.002024 7fda79bfb6c0 Delete type=0 #95
|
||||
2023/08/24-20:28:27.002188 7fda79bfb6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)
|
||||
2023/08/24-20:28:27.002221 7fda79bfb6c0 Manual compaction at level-1 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)
|
BIN
packs/complications/MANIFEST-000098
Normal file
BIN
packs/complications/MANIFEST-000098
Normal file
Binary file not shown.
BIN
packs/equipment/000099.ldb
Normal file
BIN
packs/equipment/000099.ldb
Normal file
Binary file not shown.
0
packs/equipment/000101.log
Normal file
0
packs/equipment/000101.log
Normal file
1
packs/equipment/CURRENT
Normal file
1
packs/equipment/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000100
|
0
packs/equipment/LOCK
Normal file
0
packs/equipment/LOCK
Normal file
3
packs/equipment/LOG
Normal file
3
packs/equipment/LOG
Normal file
@ -0,0 +1,3 @@
|
||||
2023/08/24-20:28:52.572724 7fda7a3fc6c0 Recovering log #97
|
||||
2023/08/24-20:28:52.584112 7fda7a3fc6c0 Delete type=3 #95
|
||||
2023/08/24-20:28:52.584178 7fda7a3fc6c0 Delete type=0 #97
|
15
packs/equipment/LOG.old
Normal file
15
packs/equipment/LOG.old
Normal file
@ -0,0 +1,15 @@
|
||||
2023/08/24-20:11:49.176021 7fda7b3fe6c0 Recovering log #92
|
||||
2023/08/24-20:11:49.186442 7fda7b3fe6c0 Delete type=3 #90
|
||||
2023/08/24-20:11:49.186511 7fda7b3fe6c0 Delete type=0 #92
|
||||
2023/08/24-20:28:26.929251 7fda79bfb6c0 Level-0 table #98: started
|
||||
2023/08/24-20:28:26.933483 7fda79bfb6c0 Level-0 table #98: 61208 bytes OK
|
||||
2023/08/24-20:28:26.940562 7fda79bfb6c0 Delete type=0 #96
|
||||
2023/08/24-20:28:26.961338 7fda79bfb6c0 Manual compaction at level-0 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)
|
||||
2023/08/24-20:28:26.961409 7fda79bfb6c0 Manual compaction at level-1 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at '!items!zFQRJSrYV4E12NgW' @ 355 : 1
|
||||
2023/08/24-20:28:26.961416 7fda79bfb6c0 Compacting 1@1 + 1@2 files
|
||||
2023/08/24-20:28:26.966548 7fda79bfb6c0 Generated table #99@1: 125 keys, 61208 bytes
|
||||
2023/08/24-20:28:26.966578 7fda79bfb6c0 Compacted 1@1 + 1@2 files => 61208 bytes
|
||||
2023/08/24-20:28:26.974691 7fda79bfb6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
||||
2023/08/24-20:28:26.974830 7fda79bfb6c0 Delete type=2 #94
|
||||
2023/08/24-20:28:26.975013 7fda79bfb6c0 Delete type=2 #98
|
||||
2023/08/24-20:28:27.002145 7fda79bfb6c0 Manual compaction at level-1 from '!items!zFQRJSrYV4E12NgW' @ 355 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)
|
BIN
packs/equipment/MANIFEST-000100
Normal file
BIN
packs/equipment/MANIFEST-000100
Normal file
Binary file not shown.
BIN
packs/maneuvers/000005.ldb
Normal file
BIN
packs/maneuvers/000005.ldb
Normal file
Binary file not shown.
0
packs/maneuvers/000091.log
Normal file
0
packs/maneuvers/000091.log
Normal file
1
packs/maneuvers/CURRENT
Normal file
1
packs/maneuvers/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000090
|
0
packs/maneuvers/LOCK
Normal file
0
packs/maneuvers/LOCK
Normal file
3
packs/maneuvers/LOG
Normal file
3
packs/maneuvers/LOG
Normal file
@ -0,0 +1,3 @@
|
||||
2023/08/24-20:28:52.601708 7fda7a3fc6c0 Recovering log #88
|
||||
2023/08/24-20:28:52.613896 7fda7a3fc6c0 Delete type=3 #86
|
||||
2023/08/24-20:28:52.614012 7fda7a3fc6c0 Delete type=0 #88
|
8
packs/maneuvers/LOG.old
Normal file
8
packs/maneuvers/LOG.old
Normal file
@ -0,0 +1,8 @@
|
||||
2023/08/24-20:11:49.203061 7fda7bbff6c0 Recovering log #84
|
||||
2023/08/24-20:11:49.219726 7fda7bbff6c0 Delete type=3 #82
|
||||
2023/08/24-20:11:49.219820 7fda7bbff6c0 Delete type=0 #84
|
||||
2023/08/24-20:28:27.002307 7fda79bfb6c0 Level-0 table #89: started
|
||||
2023/08/24-20:28:27.002338 7fda79bfb6c0 Level-0 table #89: 0 bytes OK
|
||||
2023/08/24-20:28:27.008560 7fda79bfb6c0 Delete type=0 #87
|
||||
2023/08/24-20:28:27.051981 7fda79bfb6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)
|
||||
2023/08/24-20:28:27.052022 7fda79bfb6c0 Manual compaction at level-1 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)
|
BIN
packs/maneuvers/MANIFEST-000090
Normal file
BIN
packs/maneuvers/MANIFEST-000090
Normal file
Binary file not shown.
BIN
packs/perks/000005.ldb
Normal file
BIN
packs/perks/000005.ldb
Normal file
Binary file not shown.
0
packs/perks/000099.log
Normal file
0
packs/perks/000099.log
Normal file
1
packs/perks/CURRENT
Normal file
1
packs/perks/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000098
|
0
packs/perks/LOCK
Normal file
0
packs/perks/LOCK
Normal file
3
packs/perks/LOG
Normal file
3
packs/perks/LOG
Normal file
@ -0,0 +1,3 @@
|
||||
2023/08/24-20:28:52.601706 7fda7abfd6c0 Recovering log #96
|
||||
2023/08/24-20:28:52.613896 7fda7abfd6c0 Delete type=3 #94
|
||||
2023/08/24-20:28:52.613994 7fda7abfd6c0 Delete type=0 #96
|
8
packs/perks/LOG.old
Normal file
8
packs/perks/LOG.old
Normal file
@ -0,0 +1,8 @@
|
||||
2023/08/24-20:11:49.205472 7fda7b3fe6c0 Recovering log #92
|
||||
2023/08/24-20:11:49.222633 7fda7b3fe6c0 Delete type=3 #90
|
||||
2023/08/24-20:11:49.222697 7fda7b3fe6c0 Delete type=0 #92
|
||||
2023/08/24-20:28:27.019936 7fda79bfb6c0 Level-0 table #97: started
|
||||
2023/08/24-20:28:27.019979 7fda79bfb6c0 Level-0 table #97: 0 bytes OK
|
||||
2023/08/24-20:28:27.051866 7fda79bfb6c0 Delete type=0 #95
|
||||
2023/08/24-20:28:27.052012 7fda79bfb6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)
|
||||
2023/08/24-20:28:27.052040 7fda79bfb6c0 Manual compaction at level-1 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)
|
BIN
packs/perks/MANIFEST-000098
Normal file
BIN
packs/perks/MANIFEST-000098
Normal file
Binary file not shown.
BIN
packs/powers/000062.ldb
Normal file
BIN
packs/powers/000062.ldb
Normal file
Binary file not shown.
0
packs/powers/000100.log
Normal file
0
packs/powers/000100.log
Normal file
1
packs/powers/CURRENT
Normal file
1
packs/powers/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000099
|
0
packs/powers/LOCK
Normal file
0
packs/powers/LOCK
Normal file
3
packs/powers/LOG
Normal file
3
packs/powers/LOG
Normal file
@ -0,0 +1,3 @@
|
||||
2023/08/24-20:28:52.588130 7fda7abfd6c0 Recovering log #97
|
||||
2023/08/24-20:28:52.597915 7fda7abfd6c0 Delete type=3 #95
|
||||
2023/08/24-20:28:52.597970 7fda7abfd6c0 Delete type=0 #97
|
8
packs/powers/LOG.old
Normal file
8
packs/powers/LOG.old
Normal file
@ -0,0 +1,8 @@
|
||||
2023/08/24-20:11:49.190059 7fda7a3fc6c0 Recovering log #93
|
||||
2023/08/24-20:11:49.201012 7fda7a3fc6c0 Delete type=3 #91
|
||||
2023/08/24-20:11:49.201080 7fda7a3fc6c0 Delete type=0 #93
|
||||
2023/08/24-20:28:26.985277 7fda79bfb6c0 Level-0 table #98: started
|
||||
2023/08/24-20:28:26.985305 7fda79bfb6c0 Level-0 table #98: 0 bytes OK
|
||||
2023/08/24-20:28:26.992913 7fda79bfb6c0 Delete type=0 #96
|
||||
2023/08/24-20:28:27.002175 7fda79bfb6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)
|
||||
2023/08/24-20:28:27.002210 7fda79bfb6c0 Manual compaction at level-1 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)
|
BIN
packs/powers/MANIFEST-000099
Normal file
BIN
packs/powers/MANIFEST-000099
Normal file
Binary file not shown.
BIN
packs/skills/000005.ldb
Normal file
BIN
packs/skills/000005.ldb
Normal file
Binary file not shown.
0
packs/skills/000099.log
Normal file
0
packs/skills/000099.log
Normal file
1
packs/skills/CURRENT
Normal file
1
packs/skills/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000098
|
0
packs/skills/LOCK
Normal file
0
packs/skills/LOCK
Normal file
3
packs/skills/LOG
Normal file
3
packs/skills/LOG
Normal file
@ -0,0 +1,3 @@
|
||||
2023/08/24-20:28:52.572723 7fda7b3fe6c0 Recovering log #96
|
||||
2023/08/24-20:28:52.584114 7fda7b3fe6c0 Delete type=3 #94
|
||||
2023/08/24-20:28:52.584178 7fda7b3fe6c0 Delete type=0 #96
|
8
packs/skills/LOG.old
Normal file
8
packs/skills/LOG.old
Normal file
@ -0,0 +1,8 @@
|
||||
2023/08/24-20:11:49.176021 7fda7bbff6c0 Recovering log #92
|
||||
2023/08/24-20:11:49.186443 7fda7bbff6c0 Delete type=3 #90
|
||||
2023/08/24-20:11:49.186509 7fda7bbff6c0 Delete type=0 #92
|
||||
2023/08/24-20:28:26.975180 7fda79bfb6c0 Level-0 table #97: started
|
||||
2023/08/24-20:28:26.975225 7fda79bfb6c0 Level-0 table #97: 0 bytes OK
|
||||
2023/08/24-20:28:26.985137 7fda79bfb6c0 Delete type=0 #95
|
||||
2023/08/24-20:28:27.002160 7fda79bfb6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)
|
||||
2023/08/24-20:28:27.002199 7fda79bfb6c0 Manual compaction at level-1 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)
|
BIN
packs/skills/MANIFEST-000098
Normal file
BIN
packs/skills/MANIFEST-000098
Normal file
Binary file not shown.
BIN
packs/talents/000005.ldb
Normal file
BIN
packs/talents/000005.ldb
Normal file
Binary file not shown.
0
packs/talents/000099.log
Normal file
0
packs/talents/000099.log
Normal file
1
packs/talents/CURRENT
Normal file
1
packs/talents/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000098
|
0
packs/talents/LOCK
Normal file
0
packs/talents/LOCK
Normal file
3
packs/talents/LOG
Normal file
3
packs/talents/LOG
Normal file
@ -0,0 +1,3 @@
|
||||
2023/08/24-20:28:52.617237 7fda7abfd6c0 Recovering log #96
|
||||
2023/08/24-20:28:52.627761 7fda7abfd6c0 Delete type=3 #94
|
||||
2023/08/24-20:28:52.627835 7fda7abfd6c0 Delete type=0 #96
|
8
packs/talents/LOG.old
Normal file
8
packs/talents/LOG.old
Normal file
@ -0,0 +1,8 @@
|
||||
2023/08/24-20:11:49.221624 7fda7a3fc6c0 Recovering log #92
|
||||
2023/08/24-20:11:49.232090 7fda7a3fc6c0 Delete type=3 #90
|
||||
2023/08/24-20:11:49.232138 7fda7a3fc6c0 Delete type=0 #92
|
||||
2023/08/24-20:28:27.008700 7fda79bfb6c0 Level-0 table #97: started
|
||||
2023/08/24-20:28:27.008737 7fda79bfb6c0 Level-0 table #97: 0 bytes OK
|
||||
2023/08/24-20:28:27.019736 7fda79bfb6c0 Delete type=0 #95
|
||||
2023/08/24-20:28:27.051993 7fda79bfb6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)
|
||||
2023/08/24-20:28:27.052030 7fda79bfb6c0 Manual compaction at level-1 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)
|
BIN
packs/talents/MANIFEST-000098
Normal file
BIN
packs/talents/MANIFEST-000098
Normal file
Binary file not shown.
0
packs/weapons/000088.log
Normal file
0
packs/weapons/000088.log
Normal file
1
packs/weapons/CURRENT
Normal file
1
packs/weapons/CURRENT
Normal file
@ -0,0 +1 @@
|
||||
MANIFEST-000086
|
0
packs/weapons/LOCK
Normal file
0
packs/weapons/LOCK
Normal file
7
packs/weapons/LOG
Normal file
7
packs/weapons/LOG
Normal file
@ -0,0 +1,7 @@
|
||||
2023/08/24-15:57:43.392826 7fab4affd6c0 Recovering log #84
|
||||
2023/08/24-15:57:43.403060 7fab4affd6c0 Delete type=3 #82
|
||||
2023/08/24-15:57:43.403157 7fab4affd6c0 Delete type=0 #84
|
||||
2023/08/24-15:59:11.995583 7fab497fa6c0 Level-0 table #89: started
|
||||
2023/08/24-15:59:11.995614 7fab497fa6c0 Level-0 table #89: 0 bytes OK
|
||||
2023/08/24-15:59:12.004480 7fab497fa6c0 Delete type=0 #87
|
||||
2023/08/24-15:59:12.025495 7fab497fa6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
7
packs/weapons/LOG.old
Normal file
7
packs/weapons/LOG.old
Normal file
@ -0,0 +1,7 @@
|
||||
2023/08/24-15:09:37.452353 7fab4b7fe6c0 Recovering log #80
|
||||
2023/08/24-15:09:37.462595 7fab4b7fe6c0 Delete type=3 #78
|
||||
2023/08/24-15:09:37.462673 7fab4b7fe6c0 Delete type=0 #80
|
||||
2023/08/24-15:56:20.976153 7fab497fa6c0 Level-0 table #85: started
|
||||
2023/08/24-15:56:20.976179 7fab497fa6c0 Level-0 table #85: 0 bytes OK
|
||||
2023/08/24-15:56:20.984268 7fab497fa6c0 Delete type=0 #83
|
||||
2023/08/24-15:56:20.984458 7fab497fa6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)
|
BIN
packs/weapons/MANIFEST-000086
Normal file
BIN
packs/weapons/MANIFEST-000086
Normal file
Binary file not shown.
@ -63,6 +63,10 @@
|
||||
|
||||
}
|
||||
|
||||
.app.sidebar-popout .window-content {
|
||||
color: rgba(4, 44, 44, 0.98);
|
||||
}
|
||||
|
||||
.window-header{
|
||||
background: rgba(0,0,0,0.75);
|
||||
}
|
||||
@ -70,13 +74,13 @@
|
||||
color: rgba(224, 208, 197, 0.9);
|
||||
}
|
||||
.dialog-content, .dialog-buttons, .form-fields {
|
||||
color: rgba(224, 208, 197, 0.9);
|
||||
color: rgba(4, 44, 44, 0.98);
|
||||
}
|
||||
.dialog-buttons {
|
||||
color: rgba(224, 208, 197, 0.9);
|
||||
}
|
||||
.dialog .dialog-buttons button.default {
|
||||
color: rgba(224, 208, 197, 0.9);
|
||||
color: rgba(4, 44, 44, 0.98);
|
||||
}
|
||||
.window-app.sheet .window-content {
|
||||
margin: 0;
|
||||
@ -645,6 +649,11 @@ ul, li {
|
||||
align-content: center;
|
||||
}
|
||||
|
||||
.content-center {
|
||||
align-content: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.attribut-value,
|
||||
.carac-value {
|
||||
flex-grow: 0;
|
||||
@ -1035,6 +1044,31 @@ ul, li {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.chat-card-small-button {
|
||||
box-shadow: inset 0px 1px 0px 0px #a6827e;
|
||||
background: linear-gradient(to bottom, #21374afc 5%, #152833ab 100%);
|
||||
background-color: #7d5d3b00;
|
||||
border-radius: 3px;
|
||||
border: 1px ridge #846109;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
color: #ffffff;
|
||||
font-size: 0.8rem;
|
||||
text-decoration: none;
|
||||
text-shadow: 0px 1px 0px #4d3534;
|
||||
position: relative;
|
||||
margin:1px;
|
||||
}
|
||||
|
||||
.chat-card-small-button:hover {
|
||||
background: linear-gradient(to bottom, #800000 5%, #3e0101 100%);
|
||||
background-color: red;
|
||||
}
|
||||
.chat-card-small-button:active {
|
||||
position:relative;
|
||||
top:1px;
|
||||
}
|
||||
|
||||
.chat-card-button {
|
||||
box-shadow: inset 0px 1px 0px 0px #a6827e;
|
||||
background: linear-gradient(to bottom, #21374afc 5%, #152833ab 100%);
|
||||
@ -1118,8 +1152,8 @@ ul, li {
|
||||
}
|
||||
|
||||
#logo {
|
||||
content : url(../images/ui/crucible_game_logo.png);
|
||||
width: 100px;
|
||||
content : url(../images/ui/logo_hex_yellow_01.webp);
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
@ -1258,6 +1292,9 @@ Focus FOC: #ff0084
|
||||
background: black;
|
||||
color: white;
|
||||
}
|
||||
.item-packed {
|
||||
flex-grow:0;
|
||||
}
|
||||
.items-title-text {
|
||||
margin-left: 4px;
|
||||
}
|
||||
@ -1309,6 +1346,11 @@ Focus FOC: #ff0084
|
||||
max-width: 9rem;
|
||||
min-width: 9rem;
|
||||
}
|
||||
.item-field-label-very-short {
|
||||
flex-grow:1;
|
||||
max-width: 2.5rem;
|
||||
min-width: 2.5rem;
|
||||
}
|
||||
.item-field-label-short {
|
||||
flex-grow:1;
|
||||
max-width: 4rem;
|
||||
@ -1323,6 +1365,12 @@ Focus FOC: #ff0084
|
||||
flex-grow:1;
|
||||
max-width: 8rem;
|
||||
min-width: 8rem;
|
||||
text-align: start;
|
||||
}
|
||||
.item-field-text-long {
|
||||
flex-grow:1;
|
||||
max-width: 14rem;
|
||||
min-width: 14rem;
|
||||
}
|
||||
.item-field-label-long-img {
|
||||
flex-grow:1;
|
||||
@ -1368,7 +1416,12 @@ Focus FOC: #ff0084
|
||||
}
|
||||
.item-controls-fixed {
|
||||
min-width:2rem;
|
||||
max-width: 2rem;
|
||||
/*max-width: 2rem;*/
|
||||
}
|
||||
.item-controls-fixed-small {
|
||||
min-width:1rem;
|
||||
font-size: 0.8rem;
|
||||
/*max-width: 2rem;*/
|
||||
}
|
||||
.biodata-portrait {
|
||||
min-height: 512px;
|
||||
@ -1377,4 +1430,17 @@ Focus FOC: #ff0084
|
||||
.textarea-full-height {
|
||||
min-height: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.margin-left-4 {
|
||||
margin-left: 4px;
|
||||
}
|
||||
.margin-left-8 {
|
||||
margin-left: 8px;
|
||||
}
|
||||
.maneuver-is-stock {
|
||||
display: none;
|
||||
visibility: hidden;
|
||||
}
|
||||
.compendium .directory-list .directory-item .folder-header h3 {
|
||||
color:#000
|
||||
}
|
||||
|
29
system.json
29
system.json
@ -30,15 +30,6 @@
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Weapons",
|
||||
"name": "weapons",
|
||||
"path": "packs/weapons.db",
|
||||
"system": "fvtt-hero-system-6",
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Skills",
|
||||
@ -66,6 +57,15 @@
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Maneuvers",
|
||||
"name": "maneuvers",
|
||||
"path": "packs/maneuvers.db",
|
||||
"system": "fvtt-hero-system-6",
|
||||
"private": false,
|
||||
"flags": {}
|
||||
},
|
||||
{
|
||||
"type": "Item",
|
||||
"label": "Perks",
|
||||
@ -91,16 +91,15 @@
|
||||
"styles": [
|
||||
"styles/simple.css"
|
||||
],
|
||||
"version": "10.0.41",
|
||||
"version": "11.0.12",
|
||||
"compatibility": {
|
||||
"minimum": "10",
|
||||
"verified": "10",
|
||||
"maximum": "11"
|
||||
"minimum": "11",
|
||||
"verified": "11"
|
||||
},
|
||||
"title": "Hero System v6 for FoundrtVTT (Official)",
|
||||
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-hero-system-6/raw/branch/main/system.json",
|
||||
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-hero-system-6/archive/fvtt-hero-system-6-v10.0.41.zip",
|
||||
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-hero-system-6/archive/fvtt-hero-system-6-v11.0.12.zip",
|
||||
"url": "https://www.uberwald.me/gitea/uberwald/",
|
||||
"background": "images/ui/hro6_welcome_page.webp",
|
||||
"background": "systems/fvtt-hero-system-6/images/ui/hero_foundry_cover.webp",
|
||||
"id": "fvtt-hero-system-6"
|
||||
}
|
@ -1,7 +1,8 @@
|
||||
{
|
||||
"Actor": {
|
||||
"types": [
|
||||
"character"
|
||||
"character",
|
||||
"minion"
|
||||
],
|
||||
"templates": {
|
||||
"biodata": {
|
||||
@ -56,6 +57,7 @@
|
||||
"value": 10,
|
||||
"base": 10,
|
||||
"hasroll": true,
|
||||
"initiative": 10,
|
||||
"category": "main"
|
||||
},
|
||||
"con": {
|
||||
@ -71,7 +73,7 @@
|
||||
"category": "main",
|
||||
"value": 10,
|
||||
"base": 10,
|
||||
"perceptionroll": 10
|
||||
"perceptionroll": 11
|
||||
},
|
||||
"ego": {
|
||||
"label": "EGO",
|
||||
@ -89,7 +91,7 @@
|
||||
},
|
||||
"ocv": {
|
||||
"label": "OCV",
|
||||
"hasroll": false,
|
||||
"hasroll": true,
|
||||
"base": 3,
|
||||
"autoMod": "0",
|
||||
"userMod": "0",
|
||||
@ -107,7 +109,7 @@
|
||||
},
|
||||
"omcv": {
|
||||
"label": "OMCV",
|
||||
"hasroll": false,
|
||||
"hasroll": true,
|
||||
"base": 3,
|
||||
"autoMod": "0",
|
||||
"userMod": "0",
|
||||
@ -204,6 +206,7 @@
|
||||
"ismovement": true,
|
||||
"hasroll": false,
|
||||
"value": 12,
|
||||
"ncvalue": 24,
|
||||
"base": 12
|
||||
},
|
||||
"swimming": {
|
||||
@ -211,6 +214,7 @@
|
||||
"ismovement": true,
|
||||
"hasroll": false,
|
||||
"value": 4,
|
||||
"ncvalue": 8,
|
||||
"base": 4
|
||||
},
|
||||
"leaping": {
|
||||
@ -218,6 +222,7 @@
|
||||
"ismovement": true,
|
||||
"hasroll": false,
|
||||
"value": 4,
|
||||
"ncvalue": 8,
|
||||
"base": 4,
|
||||
"leaping_horizontal_base": 0,
|
||||
"leaping_horizontal_total": 0,
|
||||
@ -230,25 +235,31 @@
|
||||
"movements": {
|
||||
"fly": {
|
||||
"label": "Fly",
|
||||
"value": 0
|
||||
"value": 0,
|
||||
"ncvalue": 0
|
||||
|
||||
},
|
||||
"teleport": {
|
||||
"label": "Teleport",
|
||||
"value": 0
|
||||
"value": 0,
|
||||
"ncvalue": 0
|
||||
},
|
||||
"tunnel": {
|
||||
"label": "Tunnel",
|
||||
"value": 0
|
||||
"value": 0,
|
||||
"ncvalue": 0
|
||||
},
|
||||
"move1": {
|
||||
"label": "N/A",
|
||||
"iseditable": true,
|
||||
"value": 0
|
||||
"value": 0,
|
||||
"ncvalue": 0
|
||||
},
|
||||
"move2": {
|
||||
"label": "N/A",
|
||||
"iseditable": true,
|
||||
"value": 0
|
||||
"value": 0,
|
||||
"ncvalue": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -299,6 +310,15 @@
|
||||
"movements"
|
||||
],
|
||||
"subactors": []
|
||||
},
|
||||
"minion": {
|
||||
"templates": [
|
||||
"biodata",
|
||||
"characteristics",
|
||||
"defenses",
|
||||
"movements"
|
||||
],
|
||||
"subactors": []
|
||||
}
|
||||
},
|
||||
"Item": {
|
||||
@ -342,6 +362,8 @@
|
||||
"haseffectroll": false,
|
||||
"effectroll": "standard",
|
||||
"effectrollformula": "",
|
||||
"hascharges": false,
|
||||
"nbcharges": 0,
|
||||
"items": {}
|
||||
}
|
||||
},
|
||||
@ -351,8 +373,8 @@
|
||||
],
|
||||
"maneuvertype": "general",
|
||||
"pha": "",
|
||||
"ocv": 0,
|
||||
"dcv" : 0,
|
||||
"ocv": "",
|
||||
"dcv" : "",
|
||||
"isstock": false,
|
||||
"active": false
|
||||
},
|
||||
@ -394,7 +416,19 @@
|
||||
"subtype": "equipment",
|
||||
"value": 0,
|
||||
"weight": 0,
|
||||
"moneycost": 0
|
||||
"moneycost": 0,
|
||||
"ocv": 0,
|
||||
"omcv": 0,
|
||||
"dmcv": 0,
|
||||
"rmod": 0,
|
||||
"pd": 0,
|
||||
"ed": 0,
|
||||
"rpd": 0,
|
||||
"red": 0,
|
||||
"mentaldefense": 0,
|
||||
"powerdefense": 0,
|
||||
"flashdefense": 0,
|
||||
"otherdefense": 0
|
||||
},
|
||||
"attack": {
|
||||
"templates": [
|
||||
|
@ -4,68 +4,74 @@
|
||||
<header class="sheet-header">
|
||||
<div class="header-fields">
|
||||
<div class="flexrow">
|
||||
|
||||
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
|
||||
|
||||
|
||||
<div class="fixed-separator">
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="flexcol">
|
||||
<h1 class="charname "><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||
|
||||
|
||||
<div class="flexrow">
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<label class="item-field-label-medium">Alternate IDs</label>
|
||||
<input type="text" class="item-field-label-long4" name="system.biodata.alternateids" value="{{system.biodata.origin}}"
|
||||
data-dtype="String" />
|
||||
<input type="text" class="item-field-label-long4" name="system.biodata.alternateids"
|
||||
value="{{system.biodata.origin}}" data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="grid grid-2col">
|
||||
<div>
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium">Campaign</label>
|
||||
<input type="text" class="item-field-label-long3" name="system.biodata.campaign" value="{{system.biodata.campaign}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium">Player</label>
|
||||
<input type="text" class="item-field-label-long3" name="system.biodata.player" value="{{system.biodata.player}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium">GM</label>
|
||||
<input type="text" class="item-field-label-long3" name="system.biodata.gm" value="{{system.biodata.gm}}"
|
||||
data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="item-field-label-medium">Hair</label>
|
||||
<input type="text" class="item-field-label-long3" name="system.biodata.hair" value="{{system.biodata.hair}}" data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium">Campaign</label>
|
||||
<input type="text" class="item-field-label-long3" name="system.biodata.campaign"
|
||||
value="{{system.biodata.campaign}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium">Player</label>
|
||||
<input type="text" class="item-field-label-long3" name="system.biodata.player"
|
||||
value="{{system.biodata.player}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium">GM</label>
|
||||
<input type="text" class="item-field-label-long3" name="system.biodata.gm"
|
||||
value="{{system.biodata.gm}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="item-field-label-medium">Hair</label>
|
||||
<input type="text" class="item-field-label-long3" name="system.biodata.hair"
|
||||
value="{{system.biodata.hair}}" data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium">Gender</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.biodata.gender" value="{{system.biodata.gender}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="item-field-label-medium">Height</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.biodata.height" value="{{system.biodata.height}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="item-field-label-medium">Mass</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.biodata.mass" value="{{system.biodata.mass}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="item-field-label-medium">Eyes</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.biodata.eyes" value="{{system.biodata.eyes}}" data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium">Gender</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.biodata.gender"
|
||||
value="{{system.biodata.gender}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="item-field-label-medium">Height</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.biodata.height"
|
||||
value="{{system.biodata.height}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="item-field-label-medium">Mass</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.biodata.mass"
|
||||
value="{{system.biodata.mass}}" data-dtype="String" />
|
||||
</li>
|
||||
<li class="item flexrow">
|
||||
<label class="item-field-label-medium">Eyes</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.biodata.eyes"
|
||||
value="{{system.biodata.eyes}}" data-dtype="String" />
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -73,19 +79,23 @@
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item flexrow">
|
||||
<label class="item-field-label-medium">Points</label>
|
||||
<input type="text" class="item-field-label-short" name="system.biodata.points" value="{{system.biodata.origin}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.biodata.points"
|
||||
value="{{system.biodata.origin}}" data-dtype="Number" />
|
||||
<label class=""> </label>
|
||||
|
||||
|
||||
<label class="item-field-label-medium">Complications</label>
|
||||
<input type="text" class="item-field-label-short" name="system.biodata.complications" value="{{system.biodata.complications}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.biodata.complications"
|
||||
value="{{system.biodata.complications}}" data-dtype="Number" />
|
||||
<label class=""> </label>
|
||||
|
||||
<label class="item-field-label-medium">XP Earned</label>
|
||||
<input type="text" class="item-field-label-short" name="system.biodata.xpearned" value="{{system.biodata.xpearned}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.biodata.xpearned"
|
||||
value="{{system.biodata.xpearned}}" data-dtype="Number" />
|
||||
<label class=""> </label>
|
||||
|
||||
<label class="item-field-label-medium">XP Spent</label>
|
||||
<input type="text" class="item-field-label-short" name="system.biodata.xpspent" value="{{system.biodata.xpspent}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.biodata.xpspent"
|
||||
value="{{system.biodata.xpspent}}" data-dtype="Number" />
|
||||
<label class=""> </label>
|
||||
</li>
|
||||
</ul>
|
||||
@ -117,74 +127,97 @@
|
||||
|
||||
{{!-- Combat Tab --}}
|
||||
<div class="tab combat" data-group="primary" data-tab="combat">
|
||||
|
||||
|
||||
<div class="grid grid2col">
|
||||
<div>
|
||||
<div>
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="item">
|
||||
<label class="item-field-label-medium">STR Dice</label>
|
||||
<a class="roll-lift-dice"><i class="fas fa-dice"></i>{{characteristics.str.strdice}}</a>
|
||||
<label class="item-field-label-short"> </label>
|
||||
|
||||
|
||||
<label class="item-field-label-medium">Lift</label>
|
||||
<input type="text" class="item-field-label-short update-field" disabled data-field-name="system.characteristics.str.lift" value="{{characteristics.str.lift}}" data-dtype="String" />
|
||||
<input type="text" class="item-field-label-short update-field" disabled
|
||||
data-field-name="system.characteristics.str.lift" value="{{characteristics.str.lift}}"
|
||||
data-dtype="String" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
<label class="item-field-label-medium">STR END</label>
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.str.strend" disabled value="{{characteristics.str.strend}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.characteristics.str.strend" disabled value="{{characteristics.str.strend}}"
|
||||
data-dtype="Number" />
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
{{#each maneuvers as |mlist key|}}
|
||||
<ul class="stat-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-field-label-long-img">
|
||||
<label class="">{{upperFirst key}} Standard Maneuver</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">PHA</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">OCV</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">DCV</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="short-label">Effects</label>
|
||||
</span>
|
||||
</li>
|
||||
{{#each mlist as |maneuver key|}}
|
||||
<li class="item flexrow list-item list-item-shadow" data-item-id="{{maneuver._id}}">
|
||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
||||
src="{{maneuver.img}}" /></a>
|
||||
<span class="item-field-label-long">{{maneuver.name}}</span>
|
||||
{{#each maneuvers as |mlist key|}}
|
||||
<ul class="stat-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-field-label-long-img">
|
||||
<label class="">{{upperFirst key}} Maneuver</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="short-label">PHA</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="short-label">OCV</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="short-label">DCV</label>
|
||||
</span>
|
||||
<span class="item-field-text-long">
|
||||
<label class="short-label">Effects</label>
|
||||
</span>
|
||||
</li>
|
||||
{{#each mlist as |maneuver key|}}
|
||||
<li class="item flexrow list-item list-item-shadow " data-item-id="{{maneuver._id}}">
|
||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
||||
src="{{maneuver.img}}" /></a>
|
||||
<a class="roll-item"><i class="fas fa-dice"></i></a><span class="item-field-label-long">{{maneuver.name}}
|
||||
</span>
|
||||
|
||||
<span class="item-field-label-short">{{maneuver.system.pha}}</span>
|
||||
<span class="item-field-label-short">{{maneuver.system.ocv}}</span>
|
||||
<span class="item-field-label-short">{{maneuver.system.dcv}}</span>
|
||||
<span class="item-field-label-very-short">{{maneuver.system.pha}}</span>
|
||||
<span class="item-field-label-very-short">{{maneuver.system.ocv}}</span>
|
||||
<span class="item-field-label-very-short">{{maneuver.system.dcv}}</span>
|
||||
|
||||
<span class="item-field-label-medium">{{maneuver.system.effects}}</span>
|
||||
<span class="item-field-text-long">{{maneuver.system.effects}}
|
||||
{{#if maneuver.system.haseffectroll}}
|
||||
<a class="roll-direct" data-roll-source="Maneuver {{maneuver.name}}"
|
||||
data-roll-formula="{{maneuver.system.effectrollformula}}">
|
||||
<i class="fas fa-dice"></i>{{maneuver.system.effectrollformula}}
|
||||
</a>
|
||||
{{/if}}
|
||||
</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>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/each}}
|
||||
</div>
|
||||
|
||||
|
||||
<div>
|
||||
<ul class="item-list alternate-list">
|
||||
<li class="flexrow item">
|
||||
<label class="item-field-label-medium">SPD</label>
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.spd.value" value="{{characteristics.spd.value}}" data-dtype="Number" />
|
||||
|
||||
<label class="item-field-label-short"> </label>
|
||||
|
||||
<label class="item-field-label-long">Presence attack</label>
|
||||
<a class="roll-direct" data-roll-source="Presence attack" data-roll-formula="{{system.biodata.presenceattack.rollFormula}}"><i class="fas fa-dice"></i>{{system.biodata.presenceattack.displayFormula}}</a>
|
||||
<label class="item-packed">Initiative</label>
|
||||
<input type="text" class="margin-left-4item-packed item-field-label-very-short update-field"
|
||||
data-field-name="system.characteristics.dex.initiative" value="{{characteristics.dex.initiative}}"
|
||||
data-dtype="Number" />
|
||||
|
||||
<label class="items-title-text item-packed margin-left-8">SPD</label>
|
||||
<input type="text" class="item-field-label-very-short margin-left-4 update-field item-packed"
|
||||
data-field-name="system.characteristics.spd.value" value="{{characteristics.spd.value}}"
|
||||
data-dtype="Number" />
|
||||
|
||||
<button class="chat-card-small-button item-field-label-short margin-left-8 hold-action item-packed">{{#if
|
||||
isHold}}Unhold{{else}}Hold{{/if}}</button>
|
||||
<button class="chat-card-small-button item-field-label-short margin-left-4 abort-action item-packed">{{#if
|
||||
isAbort}}Unabort{{else}}Abort{{/if}}</button>
|
||||
|
||||
<label class="items-title-text margin-left-8">Presence attack</label>
|
||||
<a class="roll-direct" data-roll-source="Presence attack"
|
||||
data-roll-formula="{{system.biodata.presenceattack.rollFormula}}">
|
||||
<i class="fas fa-dice"></i>{{system.biodata.presenceattack.displayFormula}}
|
||||
</a>
|
||||
|
||||
</li>
|
||||
</ul>
|
||||
@ -193,24 +226,26 @@
|
||||
<div>
|
||||
<ul class="stat-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-field-label-long">
|
||||
<label class="">Vitals</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Val</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Dmg</label>
|
||||
</span>
|
||||
<span class="item-field-label-long">
|
||||
<label class="">Vitals</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Val</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Dmg</label>
|
||||
</span>
|
||||
</li>
|
||||
{{#each characteristics as |char key|}}
|
||||
{{#if char.isvital}}
|
||||
<li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}">
|
||||
<span class="item-field-label-long">{{char.label}}</span>
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.characteristics.{{key}}.damage" value="{{char.damage}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{#each characteristics as |char key|}}
|
||||
{{#if char.isvital}}
|
||||
<li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}">
|
||||
<span class="item-field-label-long">{{char.label}}</span>
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.characteristics.{{key}}.damage"
|
||||
value="{{char.damage}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
@ -220,57 +255,73 @@
|
||||
|
||||
<ul class="stat-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-field-label-long">
|
||||
<label class="">Defenses</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Normal</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Resistant</label>
|
||||
</span>
|
||||
<span class="item-field-label-long">
|
||||
<label class="">Defenses</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Normal</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Resistant</label>
|
||||
</span>
|
||||
</li>
|
||||
{{#each characteristics as |char key|}}
|
||||
{{#if char.isdefense}}
|
||||
<li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}">
|
||||
<span class="item-field-label-long">{{char.label}}</span>
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.characteristics.{{key}}.resistant" value="{{char.resistant}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{#each characteristics as |char key|}}
|
||||
{{#if char.isdefense}}
|
||||
<li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}">
|
||||
<span class="item-field-label-long">{{char.label}}</span>
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.characteristics.{{key}}.resistant"
|
||||
value="{{char.resistant}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
{{#each defenses as |def key|}}
|
||||
<li class="item flexrow list-item list-item-shadow" data-defense-key="{{key}}">
|
||||
{{#if def.iseditable}}
|
||||
<input type="text" class="item-field-label-long update-field" data-field-name="system.defenses.{{key}}.label" value="{{def.label}}" data-dtype="String" />
|
||||
{{else}}
|
||||
<span class="item-field-label-long">{{def.label}}</span>
|
||||
{{/if}}
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.defenses.{{key}}.value" value="{{def.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.defenses.{{key}}.resistant" value="{{def.resistant}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{#each defenses as |def key|}}
|
||||
<li class="item flexrow list-item list-item-shadow" data-defense-key="{{key}}">
|
||||
{{#if def.iseditable}}
|
||||
<input type="text" class="item-field-label-long update-field"
|
||||
data-field-name="system.defenses.{{key}}.label" value="{{def.label}}" data-dtype="String" />
|
||||
{{else}}
|
||||
<span class="item-field-label-long">{{def.label}}</span>
|
||||
{{/if}}
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.defenses.{{key}}.value" value="{{def.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" name="system.defenses.{{key}}.resistant"
|
||||
value="{{def.resistant}}" data-dtype="Number" />
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="item">
|
||||
<label class="item-field-label-short">OCV</label>
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.ocv.value" value="{{characteristics.ocv.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short">
|
||||
<a class="roll-charac" data-charac-key="ocv"><i class="fas fa-dice"></i>OCV</a>
|
||||
</label>
|
||||
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.characteristics.ocv.value" value="{{characteristics.ocv.value}}"
|
||||
data-dtype="Number" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
|
||||
<label class="item-field-label-short">DCV</label>
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.dcv.value" value="{{characteristics.dcv.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.characteristics.dcv.value" value="{{characteristics.dcv.value}}"
|
||||
data-dtype="Number" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
|
||||
<label class="item-field-label-short">OMCV</label>
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.omcv.value" value="{{characteristics.omcv.value}}" data-dtype="Number" />
|
||||
<label class="item-field-label-short">
|
||||
<a class="roll-charac" data-charac-key="omcv"><i class="fas fa-dice"></i>OMCV</a>
|
||||
</label>
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.characteristics.omcv.value" value="{{characteristics.omcv.value}}"
|
||||
data-dtype="Number" />
|
||||
<label class="item-field-label-short"> </label>
|
||||
|
||||
<label class="item-field-label-short">DMCV</label>
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.dmcv.value" value="{{characteristics.dmcv.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.characteristics.dmcv.value" value="{{characteristics.dmcv.value}}"
|
||||
data-dtype="Number" />
|
||||
</div>
|
||||
|
||||
<div class="flexrow">
|
||||
@ -278,66 +329,75 @@
|
||||
<textarea rows="4" type="text" class="padd-right" name="system.biodata.combatskills"
|
||||
data-dtype="String">{{system.biodata.combatskills}}</textarea>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="grid grid2col">
|
||||
<div>
|
||||
<ul class="stat-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-field-label-long">
|
||||
<label class="">Senses</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
</span>
|
||||
<span class="item-field-label-long">
|
||||
<label class="">Senses</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
</span>
|
||||
</li>
|
||||
<li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}">
|
||||
<span class="item-field-label-long">
|
||||
<a class="roll-perception"><i class="fas fa-dice"></i>Perception Roll</a>
|
||||
</span>
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.characteristics.int.perceptionroll"
|
||||
value="{{characteristics.int.perceptionroll}}" data-dtype="Number" />
|
||||
</li>
|
||||
<li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}">
|
||||
<span class="item-field-label-long">
|
||||
<a class="roll-perception"><i class="fas fa-dice"></i>Perception Roll</a>
|
||||
</span>
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.int.perceptionroll" value="{{characteristics.int.perceptionroll}}" data-dtype="Number" />
|
||||
</li>
|
||||
</ul>
|
||||
<textarea type="text" class="textarea-full-height padd-right" name="system.biodata.combatnotes1" data-dtype="String">{{system.biodata.combatnotes1}}</textarea>
|
||||
<textarea rows="20" type="text" class="textarea-full-height padd-right" name="system.biodata.combatnotes1"
|
||||
data-dtype="String">{{system.biodata.combatnotes1}}</textarea>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<ul class="stat-list alternate-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-field-label-long">
|
||||
<label class="">Movement</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">C</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">NC</label>
|
||||
</span>
|
||||
<span class="item-field-label-long">
|
||||
<label class="">Movement</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Combat</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">NC</label>
|
||||
</span>
|
||||
</li>
|
||||
{{#each characteristics as |char key|}}
|
||||
{{#if char.ismovement}}
|
||||
<li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}">
|
||||
<span class="item-field-label-long">{{char.label}}</span>
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" value="{{mul char.value 2}}" disabled data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{#each characteristics as |char key|}}
|
||||
{{#if char.ismovement}}
|
||||
<li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}">
|
||||
<span class="item-field-label-long">{{char.label}}</span>
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.characteristics.{{key}}.ncvalue" value="{{char.ncvalue}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
{{/each}}
|
||||
{{#each movements as |move key|}}
|
||||
<li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}">
|
||||
{{#if move.iseditable}}
|
||||
<input type="text" class="item-field-label-long update-field" data-field-name="system.movements.{{key}}.label" value="{{move.label}}" data-dtype="String" />
|
||||
{{else}}
|
||||
<span class="item-field-label-long">{{move.label}}</span>
|
||||
{{/if}}
|
||||
<input type="text" class="item-field-label-short update-field" data-field-name="system.movements.{{key}}.value" value="{{move.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" value="{{mul move.value 2}}" disabled data-dtype="Number" />
|
||||
</li>
|
||||
{{#each movements as |move key|}}
|
||||
<li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}">
|
||||
{{#if move.iseditable}}
|
||||
<input type="text" class="item-field-label-long update-field"
|
||||
data-field-name="system.movements.{{key}}.label" value="{{move.label}}" data-dtype="String" />
|
||||
{{else}}
|
||||
<span class="item-field-label-long">{{move.label}}</span>
|
||||
{{/if}}
|
||||
<input type="text" class="item-field-label-short update-field"
|
||||
data-field-name="system.movements.{{key}}.value" value="{{move.value}}" data-dtype="Number" />
|
||||
<input type="text" class="item-field-label-short" value="{{mul move.value 2}}" disabled
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -347,28 +407,28 @@
|
||||
<div class="charac-item">
|
||||
<ul>
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-field-label-medium">
|
||||
<label class="">Value</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="item-field-label-medium">CHAR</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Base</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Roll</label>
|
||||
</span>
|
||||
<span class="item-field-label-long">
|
||||
<label class="short-label">Notes</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
</li>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="">Value</label>
|
||||
</span>
|
||||
<span class="item-field-label-medium">
|
||||
<label class="item-field-label-medium">CHAR</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Base</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">Roll</label>
|
||||
</span>
|
||||
<span class="item-field-label-long">
|
||||
<label class="short-label">Notes</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
</li>
|
||||
|
||||
{{#each characteristics as |charac key|}}
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-full-charac.hbs charac=charac key=key}}
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-full-charac.hbs charac=charac key=key}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@ -395,7 +455,8 @@
|
||||
src="{{skill.img}}" /></a>
|
||||
<span class="item-field-label-long">{{skill.name}}</span>
|
||||
<span class="item-field-label-medium">{{upper skill.charac}}</span>
|
||||
<span class="item-field-label-short"><a class="roll-item" data-type="skill"><i class="fas fa-dice"></i>{{skill.roll}}-</a></span>
|
||||
<span class="item-field-label-short"><a class="roll-item" data-type="skill"><i
|
||||
class="fas fa-dice"></i>{{skill.roll}}-</a></span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
@ -422,8 +483,9 @@
|
||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
||||
src="{{perk.img}}" /></a>
|
||||
<span class="item-name-label">{{perk.name}}</span>
|
||||
{{#if perk.system.hasroll}}
|
||||
<span class="item-field-label-short"><a class="roll-item" data-type="perk"><i class="fas fa-dice"></i>{{perk.system.roll}}-</a></span>
|
||||
{{#if perk.system.hasroll}}
|
||||
<span class="item-field-label-short"><a class="roll-item" data-type="perk"><i
|
||||
class="fas fa-dice"></i>{{perk.system.roll}}-</a></span>
|
||||
{{else}}
|
||||
<span class="item-field-label-short"> </span>
|
||||
{{/if}}
|
||||
@ -453,8 +515,9 @@
|
||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
||||
src="{{talent.img}}" /></a>
|
||||
<span class="item-name-label">{{talent.name}}</span>
|
||||
{{#if talent.system.hasroll}}
|
||||
<span class="item-field-label-short"><a class="roll-item" data-type="perk"><i class="fas fa-dice"></i>{{talent.system.roll}}-</a></span>
|
||||
{{#if talent.system.hasroll}}
|
||||
<span class="item-field-label-short"><a class="roll-item" data-type="perk"><i
|
||||
class="fas fa-dice"></i>{{talent.system.roll}}-</a></span>
|
||||
{{else}}
|
||||
<span class="item-field-label-short"> </span>
|
||||
{{/if}}
|
||||
@ -470,6 +533,10 @@
|
||||
{{!-- Maneuvers Tab --}}
|
||||
<div class="tab maneuver" data-group="primary" data-tab="maneuver">
|
||||
|
||||
<div>
|
||||
<button class="show-stock-maneuver">Show/Hide stock maneuvers</button>
|
||||
</div>
|
||||
|
||||
<ul class="stat-list alternate-list item-list">
|
||||
<li class="item flexrow list-item items-title-bg">
|
||||
<span class="item-field-label-long-img">
|
||||
@ -484,27 +551,29 @@
|
||||
<span class="item-field-label-short">
|
||||
<label class="short-label">DCV</label>
|
||||
</span>
|
||||
<span class="item-field-label-long">
|
||||
<span class="item-field-label-long3">
|
||||
<label class="short-label">Effects</label>
|
||||
</span>
|
||||
</li>
|
||||
{{#each nonstockmaneuvers as |maneuver key|}}
|
||||
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{maneuver._id}}">
|
||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
||||
src="{{maneuver.img}}" /></a>
|
||||
<span class="item-field-label-long">{{maneuver.name}}</span>
|
||||
{{#each allmaneuvers as |maneuver key|}}
|
||||
<div class="{{#if maneuver.system.isstock}}maneuver-list maneuver-is-stock{{/if}}">
|
||||
<li class="item stat flexrow list-item list-item-shadow " data-item-id="{{maneuver._id}}">
|
||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
||||
src="{{maneuver.img}}" /></a>
|
||||
<span class="item-field-label-long">{{maneuver.name}}</span>
|
||||
|
||||
<span class="item-field-label-short">{{maneuver.system.pha}}</span>
|
||||
<span class="item-field-label-short">{{maneuver.system.ocv}}</span>
|
||||
<span class="item-field-label-short">{{maneuver.system.dcv}}</span>
|
||||
<span class="item-field-label-short">{{maneuver.system.pha}}</span>
|
||||
<span class="item-field-label-short">{{maneuver.system.ocv}}</span>
|
||||
<span class="item-field-label-short">{{maneuver.system.dcv}}</span>
|
||||
|
||||
<span class="item-field-label-long">{{maneuver.system.effects}}</span>
|
||||
<span class="item-field-label-long3">{{maneuver.system.effects}}</span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<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>
|
||||
<div class="item-filler"> </div>
|
||||
<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>
|
||||
</div>
|
||||
{{/each}}
|
||||
</ul>
|
||||
</div>
|
||||
@ -539,13 +608,15 @@
|
||||
{{#each powers as |power key|}}
|
||||
<li class="item stat flexrow list-item list-item-shadow" data-item-id="{{power._id}}">
|
||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
||||
src="{{power.img}}" /></a>
|
||||
src="{{power.img}}" /></a>
|
||||
<span class="item-field-label-short">{{power.system.cost}}</span>
|
||||
<span class="item-field-label-long3">{{power.name}}</span>
|
||||
<span class="item-field-label-long2">{{power.system.displayname}}</span>
|
||||
<span class="item-field-label-medium"><a class="roll-damage" data-type="power"><i class="fas fa-dice"></i>{{power.system.damage}}</a></span>
|
||||
{{#if power.system.hasroll}}
|
||||
<span class="item-field-label-short"><a class="roll-item" data-type="power"><i class="fas fa-dice"></i>{{power.system.roll}}-</a></span>
|
||||
<span class="item-field-label-medium"><a class="roll-damage" data-type="power"><i
|
||||
class="fas fa-dice"></i>{{power.system.damage}}</a></span>
|
||||
{{#if power.system.hasroll}}
|
||||
<span class="item-field-label-short"><a class="roll-item" data-type="power"><i
|
||||
class="fas fa-dice"></i>{{power.system.roll}}-</a></span>
|
||||
{{else}}
|
||||
<span class="item-field-label-short"> </span>
|
||||
{{/if}}
|
||||
@ -576,8 +647,9 @@
|
||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
|
||||
src="{{comp.img}}" /></a>
|
||||
<span class="item-name-label">{{comp.name}}</span>
|
||||
{{#if comp.system.hasroll}}
|
||||
<span class="item-field-label-short"><a class="roll-item" data-type="perk"><i class="fas fa-dice"></i>{{comp.system.roll}}-</a></span>
|
||||
{{#if comp.system.hasroll}}
|
||||
<span class="item-field-label-short"><a class="roll-item" data-type="perk"><i
|
||||
class="fas fa-dice"></i>{{comp.system.roll}}-</a></span>
|
||||
{{else}}
|
||||
<span class="item-field-label-short"> </span>
|
||||
{{/if}}
|
||||
@ -600,13 +672,19 @@
|
||||
<span class="small-label">Total value : {{totalValue}}</span>
|
||||
</div>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Weapons" items=weapons}}
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Money"
|
||||
items=moneys}}
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Weapons"
|
||||
items=weapons}}
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Armor" items=armors}}
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Shields" items=shields}}
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Shields"
|
||||
items=shields}}
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Equipment" items=equipments}}
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Equipment"
|
||||
items=equipments}}
|
||||
|
||||
<hr>
|
||||
|
||||
@ -661,7 +739,7 @@
|
||||
<div class="medium-editor ">
|
||||
{{editor notes1 target="system.biodata.notes1" button=true owner=owner
|
||||
editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<h3>Notes 2 : </h3>
|
||||
<div class="small-editor">
|
||||
@ -689,7 +767,7 @@
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
</form>
|
@ -32,9 +32,12 @@
|
||||
</a>
|
||||
{{/if}}
|
||||
|
||||
{{log combat.flags}}
|
||||
|
||||
{{#if combatCount}}
|
||||
{{#if combat.round}}
|
||||
<h3 class="encounter-title noborder">Turn {{combat.turnNumber}} Segment {{combat.segmentNumber}}</h3>
|
||||
<!--<h3 class="encounter-title noborder">Turn {{combat.turnNumber}} Segment {{combat.segmentNumber}}</h3>-->
|
||||
<h3 class="encounter-title noborder">Turn {{combat.flags.world.turnData.turnNumber}} Segment {{combat.flags.world.turnData.segmentNumber}}</h3>
|
||||
{{else}}
|
||||
<h3 class="encounter-title noborder">{{localize 'COMBAT.NotStarted'}}</h3>
|
||||
{{/if}}
|
||||
@ -60,11 +63,11 @@
|
||||
|
||||
<ol id="combat-tracker" class="directory-list">
|
||||
{{#each turns}}
|
||||
{{#if (ne this.initiative "-1")}}
|
||||
{{#if (checkInit this.initiative)}}
|
||||
<li class="combatant actor directory-item flexrow {{this.css}}" data-combatant-id="{{this.id}}">
|
||||
<img class="token-image" data-src="{{this.img}}" alt="{{this.name}}"/>
|
||||
<div class="token-name flexcol">
|
||||
<h4>{{this.name}} {{log this}} {{#if this.holdAction}}(H){{/if}}</h4>
|
||||
<h4>{{this.name}} </h4>
|
||||
<div class="combatant-controls flexrow">
|
||||
{{#if ../user.isGM}}
|
||||
<a class="combatant-control {{#if this.hidden}}active{{/if}}" data-tooltip="COMBAT.ToggleVis" data-control="toggleHidden">
|
||||
|
@ -7,12 +7,6 @@
|
||||
|
||||
<hr>
|
||||
|
||||
{{#if img}}
|
||||
<div >
|
||||
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="flexcol">
|
||||
</div>
|
||||
|
||||
|
@ -7,12 +7,6 @@
|
||||
|
||||
<hr>
|
||||
|
||||
{{#if img}}
|
||||
<div >
|
||||
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="flexcol">
|
||||
</div>
|
||||
|
||||
@ -20,7 +14,7 @@
|
||||
<ul>
|
||||
<li>Name : {{title}}</li>
|
||||
<li>Damage formula : {{diceFormula}}</li>
|
||||
<li><strong>Result : {{result}}</strong></li>
|
||||
<li><strong>TOTAL : {{result}}</strong></li>
|
||||
<li><strong>BODY : {{bodyValue}}</strong></li>
|
||||
|
||||
</ul>
|
||||
|
@ -7,12 +7,6 @@
|
||||
|
||||
<hr>
|
||||
|
||||
{{#if img}}
|
||||
<div >
|
||||
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="flexcol">
|
||||
</div>
|
||||
|
||||
@ -33,6 +27,12 @@
|
||||
|
||||
{{#if item}}
|
||||
<li>{{item.name}} ({{upperFirst item.type}})</li>
|
||||
{{#if (eq item.type "maneuver")}}
|
||||
<li>{{item.system.effects}}</li>
|
||||
{{#if item.system.haseffectroll}}
|
||||
<li>{{item.system.effectrollformula}}</li>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{#if (exists bonusMalus)}}
|
||||
@ -40,7 +40,7 @@
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
<li><strong>Result : {{result}}</strong>
|
||||
<li><strong>TOTAL : {{result}}</strong>
|
||||
{{#if (exists margin)}}
|
||||
({{#if isSuccess}}Success!!{{else}}Failure!{{/if}})
|
||||
{{/if}}
|
||||
|
@ -7,12 +7,6 @@
|
||||
|
||||
<hr>
|
||||
|
||||
{{#if img}}
|
||||
<div >
|
||||
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div class="flexcol">
|
||||
</div>
|
||||
|
||||
@ -21,7 +15,7 @@
|
||||
<li>Lift dice formula : {{diceFormula}}</li>
|
||||
<li>BODY : {{bodyValue}}</li>
|
||||
|
||||
<li><strong>Result : {{result}}</strong></li>
|
||||
<li><strong>TOTAL : {{result}}</strong></li>
|
||||
|
||||
</ul>
|
||||
</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>
|
@ -20,6 +20,8 @@
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -67,5 +67,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -21,5 +21,8 @@
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-cost.hbs}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -24,5 +24,7 @@
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -56,8 +56,88 @@
|
||||
</select>
|
||||
</li>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-hasroll.hbs}}
|
||||
{{#if (eq system.subtype "weapon") }}
|
||||
<li class="flexrow"><label class="item-field-label-long">OCV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.ocv" value="{{system.ocv}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">OMCV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.omcv" value="{{system.omcv}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">RMod</label>
|
||||
<input type="text" class="item-field-label-short" name="system.rmod" value="{{system.rmod}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq system.subtype "shield") }}
|
||||
<li class="flexrow"><label class="item-field-label-long">OCV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.ocv" value="{{system.ocv}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">DCV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.dcv" value="{{system.dcv}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">OMCV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.omcv" value="{{system.omcv}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">DMCV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.dmcv" value="{{system.dmcv}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq system.subtype "armor") }}
|
||||
<li class="flexrow"><label class="item-field-label-long">DCV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.dcv" value="{{system.dcv}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">DMCV</label>
|
||||
<input type="text" class="item-field-label-short" name="system.dmcv" value="{{system.dmcv}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
|
||||
{{#if (or (eq system.subtype "armor") (eq system.subtype "shield")) }}
|
||||
<li class="flexrow"><label class="item-field-label-long">PD</label>
|
||||
<input type="text" class="item-field-label-short" name="system.pd" value="{{system.pd}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">ED</label>
|
||||
<input type="text" class="item-field-label-short" name="system.ed" value="{{system.ed}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">rPD</label>
|
||||
<input type="text" class="item-field-label-short" name="system.rpd" value="{{system.rpd}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">rED</label>
|
||||
<input type="text" class="item-field-label-short" name="system.red" value="{{system.red}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">Mental Defense</label>
|
||||
<input type="text" class="item-field-label-short" name="system.mentaldefense" value="{{system.mentaldefense}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">Power Defense</label>
|
||||
<input type="text" class="item-field-label-short" name="system.powerdefense" value="{{system.powerdefense}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">Flash Defense</label>
|
||||
<input type="text" class="item-field-label-short" name="system.flashdefense" value="{{system.flashdefense}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">Other Defense</label>
|
||||
<input type="text" class="item-field-label-short" name="system.otherdefense" value="{{system.otherdefense}}"
|
||||
data-dtype="Number" />
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-hasroll.hbs}}
|
||||
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-cost.hbs}}
|
||||
@ -65,5 +145,7 @@
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
@ -11,13 +11,16 @@
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-description.hbs}}
|
||||
|
||||
<div class="tab details" data-group="primary" data-tab="details">
|
||||
|
||||
<ul>
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-description.hbs}}
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-cost.hbs}}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -38,11 +38,11 @@
|
||||
</li>
|
||||
|
||||
<li class="flexrow"><label class="item-field-label-medium">OCV</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.ocv" value="{{system.ocv}}" data-dtype="Number"/>
|
||||
<input type="text" class="item-field-label-medium" name="system.ocv" value="{{system.ocv}}" data-dtype="String"/>
|
||||
</li>
|
||||
|
||||
<li class="flexrow"><label class="item-field-label-medium">DCV</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.dcv" value="{{system.dcv}}" data-dtype="Number"/>
|
||||
<input type="text" class="item-field-label-medium" name="system.dcv" value="{{system.dcv}}" data-dtype="String"/>
|
||||
</li>
|
||||
|
||||
<li class="flexrow"><label class="item-field-label-medium">Effects</label>
|
||||
@ -53,5 +53,8 @@
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -21,5 +21,8 @@
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-cost.hbs}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -25,5 +25,8 @@
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-cost.hbs}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<ul>
|
||||
<li class="flexrow"><label class="item-field-label-long">Type</label>
|
||||
<select class="item-field-label-medium" type="text" name="system.skilltype" value="{{system.skilltype}}" data-dtype="String">
|
||||
{{#select system.skilltype}}
|
||||
{{#select (lower system.skilltype)}}
|
||||
{{#each config.skillType as |char key|}}
|
||||
<option value="{{key}}">{{char}}</option>
|
||||
{{/each}}
|
||||
@ -28,14 +28,14 @@
|
||||
{{#if (isSkillCustom system.skilltype)}}
|
||||
<li class="flexrow"><label class="item-field-label-long">Base characteristic</label>
|
||||
<select class="item-field-label-medium" type="text" name="system.characteristic" value="{{system.characteristic}}" data-dtype="String">
|
||||
{{#select system.characteristic}}
|
||||
{{#select (lower system.characteristic)}}
|
||||
{{#each config.rollCharac as |char key|}}
|
||||
<option value="{{key}}">{{char}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</li>
|
||||
{{#if (eq system.characteristic "manual")}}
|
||||
{{#if (eq (lower system.characteristic) "manual")}}
|
||||
<li class="flexrow"><label class="item-field-label-long">Base value</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.base" value="{{system.base}}" data-dtype="Number" {{#if (ne system.characteristic "manual")}}disabled{{/if}} />
|
||||
</li>
|
||||
@ -79,5 +79,8 @@
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -22,6 +22,8 @@
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -103,5 +103,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -3,33 +3,114 @@
|
||||
<span class="item-name-img">
|
||||
<label class=""> </label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="item-field-label-short">Q.</label>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">Qty</label>
|
||||
</span>
|
||||
<span class="item-field-label-long3">
|
||||
<label class="item-field-label-long3">{{title}}</label>
|
||||
<span class="item-field-label-long2">
|
||||
<label class="item-field-label-long2">{{title}}</label>
|
||||
</span>
|
||||
<span class="item-field-label-long">
|
||||
<label class="item-field-label-long4">Display</label>
|
||||
|
||||
{{#if (or (eq title "Money") (eq title "Equipment"))}}
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short"> </label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short"> </label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short"> </label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short"> </label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short"> </label>
|
||||
</span>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq title "Weapons")}}
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">OCV</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">DCV</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">rMod</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">Rng</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short"> </label>
|
||||
</span>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq title "Shields")}}
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">OCV</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">DCV</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">OMCV</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">DMCV</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short"> </label>
|
||||
</span>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq title "Armor")}}
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">PD</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">ED</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">rPD</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">rED</label>
|
||||
</span>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">DCV</label>
|
||||
</span>
|
||||
{{/if}}
|
||||
|
||||
<span class="item-field-label-long2">
|
||||
<label class="item-field-label-long2">Display</label>
|
||||
</span>
|
||||
|
||||
{{#if (and (ne title "Armor") (ne title "Shields"))}}
|
||||
<span class="item-field-label-short">
|
||||
<label class="item-field-label-short">Effect</label>
|
||||
</span>
|
||||
{{else}}
|
||||
<span class="item-field-label-short">
|
||||
<label class="item-field-label-short"> </label>
|
||||
</span>
|
||||
{{/if}}
|
||||
|
||||
<span class="item-field-label-short">
|
||||
<label class="item-field-label-short">Roll</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="item-field-label-short">END</label>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">END</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="item-field-label-short">Value</label>
|
||||
<span class="item-field-label-very-short">
|
||||
<label class="item-field-label-very-short">Value</label>
|
||||
</span>
|
||||
<span class="item-field-label-short">
|
||||
<label class="item-field-label-short">Weight</label>
|
||||
</span>
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-add" data-type="equipment" title="Create Item"><i class="fas fa-plus"></i></a>
|
||||
|
||||
<div class="item-controls item-controls-fixed-small">
|
||||
<a class="item-control item-add" data-type="equipment" title="Create Item"><i class="fas fa-plus item-controls-fixed-small"></i></a>
|
||||
</div>
|
||||
|
||||
</li>
|
||||
|
@ -1,17 +1,53 @@
|
||||
<li class="item flexrow list-item list-item-shadow" data-item-id="{{equip._id}}">
|
||||
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img" src="{{equip.img}}" /></a>
|
||||
|
||||
<span class="item-field-label-short"><label>{{equip.system.quantity}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center" ><label class="content-center">{{equip.system.quantity}}</label> </span>
|
||||
|
||||
<span class="item-field-label-long3">{{equip.name}}</span>
|
||||
<span class="item-field-label-long2">{{equip.name}}</span>
|
||||
|
||||
<span class="item-field-label-long"><label>{{equip.system.displayname}}
|
||||
{{#if (or (eq equip.system.subtype "money") (eq equip.system.subtype "equipment"))}}
|
||||
<span class="item-field-label-very-short"><label> </label> </span>
|
||||
<span class="item-field-label-very-short"><label> </label> </span>
|
||||
<span class="item-field-label-very-short"><label> </label> </span>
|
||||
<span class="item-field-label-very-short"><label> </label> </span>
|
||||
<span class="item-field-label-very-short"><label> </label> </span>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq equip.system.subtype "weapon")}}
|
||||
<span class="item-field-label-very-short content-center"><label>{{numberFormat (fixNum equip.system.ocv) decimals=0 sign=true}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label>{{numberFormat (fixNum equip.system.omcv) decimals=0 sign=true}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label>{{numberFormat (fixNum equip.system.rmod) decimals=0 sign=true}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label>{{equip.system.range}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label> </label> </span>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq equip.system.subtype "shield")}}
|
||||
<span class="item-field-label-very-short content-center"><label>{{numberFormat (fixNum equip.system.ocv) decimals=0 sign=true}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label>{{numberFormat (fixNum equip.system.dcv) decimals=0 sign=true}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label>{{numberFormat (fixNum equip.system.omcv) decimals=0 sign=true}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label>{{numberFormat (fixNum equip.system.dmcv) decimals=0 sign=true}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label> </label> </span>
|
||||
{{/if}}
|
||||
|
||||
{{#if (eq equip.system.subtype "armor")}}
|
||||
<span class="item-field-label-very-short content-center"><label>{{equip.system.pd}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label>{{equip.system.ed}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label>{{equip.system.rpd}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label>{{equip.system.red}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label>{{numberFormat (fixNum equip.system.dcv) decimals=0 sign=true}}</label> </span>
|
||||
{{/if}}
|
||||
|
||||
<span class="item-field-label-long2"><label>{{equip.system.displayname}}
|
||||
</label>
|
||||
</span>
|
||||
|
||||
{{#if (and (ne equip.system.subtype "armor") (ne equip.system.subtype "shield"))}}
|
||||
<span class="item-field-label-short"><label><a class="roll-damage" data-type="perk"><i class="fas fa-dice"></i>{{equip.system.damage}}</a>
|
||||
</label>
|
||||
</span>
|
||||
{{else}}
|
||||
<span class="item-field-label-short"><label> </label></span>
|
||||
{{/if}}
|
||||
|
||||
{{#if equip.system.hasroll}}
|
||||
<span class="item-field-label-short"><a class="roll-item" data-type="perk"><i class="fas fa-dice"></i>{{equip.system.roll}}-</a></span>
|
||||
@ -19,13 +55,12 @@
|
||||
<span class="item-field-label-short"> </span>
|
||||
{{/if}}
|
||||
|
||||
<span class="item-field-label-short"><label>{{equip.system.endurance}}</label> </span>
|
||||
<span class="item-field-label-very-short content-center"><label>{{equip.system.endurance}}</label> </span>
|
||||
|
||||
<span class="item-field-label-short"><label>{{mul equip.system.quantity equip.system.value}}</label> </span>
|
||||
<span class="item-field-label-very-short"><label>{{mul equip.system.quantity equip.system.value}}</label> </span>
|
||||
|
||||
<span class="item-field-label-short"><label>{{mul equip.system.quantity equip.system.weight}}</label> </span>
|
||||
<span class="item-field-label-short content-center"><label>{{mul equip.system.quantity equip.system.weight}}</label> </span>
|
||||
|
||||
<div class="item-filler"> </div>
|
||||
<div class="item-controls item-controls-fixed">
|
||||
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
|
@ -22,7 +22,7 @@
|
||||
{{#if charac.lift}}
|
||||
<h4 class="item-field-label-short margin-item-list"> </h4>
|
||||
<h4 class="item-field-label-short margin-item-list">{{charac.lift}}</h4>
|
||||
<h4 class="item-field-label-short margin-item-list"><a class="roll-lift-dice" data-charac-key="{{key}}"><i
|
||||
<h4 class="item-field-label-medium margin-item-list"><a class="roll-lift-dice" data-charac-key="{{key}}"><i
|
||||
class="fas fa-dice"></i>{{charac.liftDice}}</a></h4>
|
||||
|
||||
<select class="actor-computer-str-end" name="system.characteristics.str.strendmode"
|
||||
@ -37,4 +37,15 @@
|
||||
|
||||
{{/if}}
|
||||
|
||||
{{#if charac.phasesString}}
|
||||
<h4 class="item-field-label-short margin-item-list"> </h4>
|
||||
<h4 class="item-field-label-long2 margin-item-list">Phases : {{charac.phasesString}}</h4>
|
||||
{{/if}}
|
||||
|
||||
{{#if charac.presenceattack}}
|
||||
<h4 class="item-field-label-short margin-item-list"> </h4>
|
||||
<h4 class="item-field-label-long margin-item-list">Presence attack</h4>
|
||||
<a class="roll-direct" data-roll-source="Presence attack" data-roll-formula="{{charac.presenceattack.rollFormula}}"><i class="fas fa-dice"></i>{{charac.presenceattack.displayFormula}}</a>
|
||||
{{/if}}
|
||||
|
||||
</li>
|
@ -4,13 +4,6 @@
|
||||
<input type="text" class="" name="system.displayname" value="{{system.displayname}}" data-dtype="string"/>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="generic-label">Notes</label>
|
||||
<div class="small-editor item-text-long-line">
|
||||
{{editor notes target="system.notes" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label class="generic-label">Description</label>
|
||||
<div class="medium-editor item-text-long-line">
|
||||
|
@ -2,4 +2,5 @@
|
||||
<nav class="sheet-tabs tabs" data-group="primary">
|
||||
<a class="item" data-tab="description">Description</a>
|
||||
<a class="item" data-tab="details">Details</a>
|
||||
<a class="item" data-tab="notes">Notes</a>
|
||||
</nav>
|
||||
|
8
templates/partials/partial-item-notes.hbs
Normal file
8
templates/partials/partial-item-notes.hbs
Normal file
@ -0,0 +1,8 @@
|
||||
<div class="tab notes" data-group="primary" data-tab="notes">
|
||||
<div>
|
||||
<label class="generic-label">Notes</label>
|
||||
<div class="small-editor item-text-long-line">
|
||||
{{editor notes target="system.notes" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,6 +1,6 @@
|
||||
<li class="flexrow"><label class="item-field-label-long">Type</label>
|
||||
<select class="item-field-label-long" type="text" name="system.petype" value="{{system.petype}}" data-dtype="String">
|
||||
{{#select system.petype}}
|
||||
{{#select (lower system.petype)}}
|
||||
{{#each config.powerEquipmentType as |name key|}}
|
||||
<option value="{{key}}">{{name}}</option>
|
||||
{{/each}}
|
||||
@ -10,7 +10,7 @@
|
||||
|
||||
<li class="flexrow"><label class="item-field-label-long">Type Modifier</label>
|
||||
<select class="item-field-label-long" type="text" name="system.typemodifier" value="{{system.typemodifier}}" data-dtype="String">
|
||||
{{#select system.typemodifier}}
|
||||
{{#select (lower system.typemodifier)}}
|
||||
{{#each config.powerTypeModifiers as |name key|}}
|
||||
<option value="{{key}}">{{name}}</option>
|
||||
{{/each}}
|
||||
@ -22,15 +22,28 @@
|
||||
<label class="item-field-label-medium"><input type="checkbox" name="system.senseaffecting" {{checked system.senseaffecting}}/></label>
|
||||
</li>
|
||||
|
||||
{{#if (and (ne system.subtype "armor") (ne system.subtype "shield"))}}
|
||||
<li class="flexrow"><label class="item-field-label-long">Range</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.range" value="{{system.range}}" data-dtype="String"/>
|
||||
</li>
|
||||
<li class="flexrow"><label class="item-field-label-long">Damage</label>
|
||||
<input type="text" class="item-field-label-medium" name="system.damage" value="{{system.damage}}" data-dtype="String"/>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
<li class="flexrow"><label class="item-field-label-long">Endurance</label>
|
||||
<input type="text" class="item-field-label-short" name="system.endurance" value="{{system.endurance}}" data-dtype="Number"/>
|
||||
</li>
|
||||
|
||||
<li class="flexrow"><label class="item-field-label-long">Has Charges ?</label>
|
||||
<label class="item-field-label-medium"><input type="checkbox" name="system.hascharges" {{checked system.hascharges}}/></label>
|
||||
</li>
|
||||
{{#if system.hascharges}}
|
||||
<li class="flexrow"><label class="item-field-label-long">Number of Charges</label>
|
||||
<input type="text" class="item-field-label-short" name="system.nbcharges" value="{{system.nbcharges}}" data-dtype="Number"/>
|
||||
</li>
|
||||
{{/if}}
|
||||
|
||||
{{#if quantityDone}}
|
||||
{{else}}
|
||||
<li class="flexrow"><label class="item-field-label-long">Quantity</label>
|
||||
|
Reference in New Issue
Block a user