Compare commits

..

36 Commits

Author SHA1 Message Date
1d4d3054c3 Fix various issues 2023-08-26 22:27:17 +02:00
e5c6d3f42f Fix various issues 2023-08-26 22:25:28 +02:00
f914b9838e #7 Fix starting round 2023-08-26 21:22:42 +02:00
8a543068d2 #8 Fix column alignement 2023-08-26 21:03:25 +02:00
379b8358ee #2 Fix skill profiency 2023-08-26 20:59:41 +02:00
40ee7c3c40 Move repo to public area 2023-08-26 09:49:13 +02:00
a07f367b0c Move repo to public area 2023-08-26 09:48:07 +02:00
09bb7fb692 Move repo to public area 2023-08-26 05:38:10 +02:00
92dc81af24 Move repo to public area 2023-08-26 05:36:15 +02:00
d2430ee482 Move repo to public area 2023-08-26 05:15:18 +02:00
86780ce8ae Move repo to public area 2023-08-26 05:14:08 +02:00
b383481915 First official release 2023-08-25 23:00:21 +02:00
dca78fd4b6 Add changelog 2023-08-25 19:02:40 +02:00
f381269acf Add changelog 2023-08-25 18:58:48 +02:00
686ea4cea6 Fix manifest link 2023-08-25 18:55:34 +02:00
c915b85a7b Update README 2023-08-25 16:34:10 +02:00
5026e120c1 Equipment management 2023-08-24 23:12:55 +02:00
9cefc6f816 Equipment management 2023-08-24 20:32:12 +02:00
11d7c7d1c0 Equipment management 2023-08-24 20:32:00 +02:00
3abf9a9f8f Equipment management 2023-08-24 18:45:54 +02:00
f5c0faffd3 Equipment management 2023-08-24 15:59:54 +02:00
3f0e0a41b8 Update equipments type 2023-08-22 23:30:31 +02:00
20c49eb48c Fix Maneuvers 2023-08-15 22:12:02 +02:00
6275319164 Various fixes 2023-08-10 13:06:16 +02:00
19fb872824 Various fixes 2023-08-10 13:05:56 +02:00
002d6f4fbd Various fixes 2023-08-09 18:05:16 +02:00
43a3a2ccfa Various fixes and enhancents 2023-08-08 08:17:48 +02:00
356f0fee5f Various fixes and enhancents 2023-08-08 08:17:30 +02:00
58bcfc07a3 Various fixes and enhancents 2023-08-07 23:28:04 +02:00
3dcb60e7a9 Add compendiums + pictures + minor fixes 2023-08-04 07:04:12 +02:00
6c4812c7e4 Add compendiums + pictures + minor fixes 2023-08-03 22:32:45 +02:00
099bb0d88c Use initiative 2023-07-29 18:12:22 +02:00
9a30275640 Use initiative 2023-07-29 18:11:57 +02:00
b798cde48d Combat tracker fixes 2023-07-24 13:35:35 +02:00
a943e6defa Fix turn management 2023-07-21 14:52:22 +02:00
9099e812d5 Combat tracker fixes 2023-07-16 14:33:26 +02:00
94 changed files with 1476 additions and 474 deletions

View File

@ -1,2 +1,28 @@
# 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.
It features :
- PC/NPC sheets
- Roll management and associated helpers
- Segment and Turn management in the combat tracker
- Official compendiums
![Snapshot](https://www.lahiette.com/leratierbretonnien/wp-content/uploads/2023/08/hero6_snapshot_02.webp "Snapshot")
Installation
Manifest URL: https://www.uberwald.me/gitea/uberwald/fvtt-hero-system-6/raw/branch/master/system.json
Project page : https://www.uberwald.me/gitea/uberwald/fvtt-hero-system-6
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.

19
changelog.md Normal file
View File

@ -0,0 +1,19 @@
v11.0.17
- Fix tickets 1, 2, 3, 7, 8, 9, 10
- Implements effects tagging (#11)
v11.0.16
- Fix mental maneuvers rolls
- Renamed title
v11.0.15
- Fix target rolls for power
- Add maneuvers roll in the maneuver tab
- Renamed title
v11.0.14
- Initial public release

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

View File

@ -1,19 +1,22 @@
{
"ACTOR": {
"TypeCharacter": "Character"
},
"ITEM": {
"TypeSkill": "Skill",
"TypePerk": "Perk",
"TypePower": "Power",
"TypeTalent": "Talent",
"TypeAdvantage": "Advantage",
"TypeMartialart": "Martial art",
"TypeLimitation": "Limitation",
"TypeComplication": "Complication",
"TypeEquipment": "Equipment",
"TypeCurrency": "Currency",
"TypeManeuver": "Maneuver"
"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"
}
},
"COMBAT": {
"TurnPrev": "Previous initiative",

View File

@ -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 => {
@ -156,13 +162,19 @@ export class Hero6ActorSheet extends ActorSheet {
html.find('.roll-perception').click((event) => {
this.actor.rollPerception("int");
});
html.find('.roll-weapon').click((event) => {
const li = $(event.currentTarget).parents(".item")
this.actor.rollWeapon(li.data("item-id"));
});
html.find('.roll-power-attack').click((event) => {
const li = $(event.currentTarget).parents(".item")
this.actor.rollPowerAttack(li.data("item-id"));
});
html.find('.roll-direct').click((event) => {
const rollFormula = $(event.currentTarget).data("roll-formula")
const rollSource = $(event.currentTarget).data("roll-source")
Hero6Utility.processDirectRoll( { actorId: this.actor.id, rollFormula: rollFormula, rollSource: rollSource, mode:"directroll"} )
});
});
html.find('.roll-item').click((event) => {
const li = $(event.currentTarget).parents(".item");
let itemId = li.data("item-id")
@ -177,14 +189,8 @@ 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('.hold-action').click((event) => {
this.actor.holdAction()
});
@ -192,6 +198,16 @@ export class Hero6ActorSheet extends ActorSheet {
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;
this.render(true);

View File

@ -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
@ -199,12 +216,30 @@ export class Hero6Actor extends Actor {
skill.roll = charac.roll
}
}
console.log("SILL", skill)
if (skill.system.levels > 0) {
skill.roll += skill.system.levels
}
}
/* -------------------------------------------- */
prepareManeuver(maneuver) {
if (maneuver.system.maneuvertype == "mental") {
maneuver.roll = 11 + (Number(this.system.characteristics.omcv.value) || 0)
if (Number(maneuver.system.omcv)) {
maneuver.roll += (Number(maneuver.system.omcv) || 0)
} else {
maneuver.noOMCV = true
}
} else {
maneuver.roll = 11 + (Number(this.system.characteristics.ocv.value) || 0)
if (Number(maneuver.system.ocv)) {
maneuver.roll += (Number(maneuver.system.ocv) || 0)
} else {
maneuver.noOCV = true
}
}
}
/* -------------------------------------------- */
getSkills() {
let comp = duplicate(this.items.filter(item => item.type == 'skill') || [])
@ -276,11 +311,18 @@ export class Hero6Actor extends Actor {
let maneuvers = {
general: this.items.filter(item => item.type == "maneuver" && item.system.maneuvertype == "general"),
offensive: this.items.filter(item => item.type == "maneuver" && item.system.maneuvertype == "offensive"),
defensive: this.items.filter(item => item.type == "maneuver" && item.system.maneuvertype == "defensive")
defensive: this.items.filter(item => item.type == "maneuver" && item.system.maneuvertype == "defensive"),
mental: this.items.filter(item => item.type == "maneuver" && item.system.maneuvertype == "mental")
}
Hero6Utility.sortArrayObjectsByName(maneuvers.general)
Hero6Utility.sortArrayObjectsByName(maneuvers.offensive)
Hero6Utility.sortArrayObjectsByName(maneuvers.defensive)
Hero6Utility.sortArrayObjectsByName(maneuvers.mental)
return maneuvers
}
getAllManeuvers() {
let maneuvers = this.items.filter(item => item.type == "maneuver")
Hero6Utility.sortArrayObjectsByName(maneuvers)
return maneuvers
}
getNonStockManeuvers() {
@ -293,6 +335,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)
@ -388,14 +435,19 @@ export class Hero6Actor extends Actor {
/* -------------------------------------------- */
async cleanCombat() {
await this.setFlag("world", "hold-action", false)
await this.setFlag("world", "abort-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
}
}
@ -406,15 +458,29 @@ export class Hero6Actor extends Actor {
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.abortAction(this.id, false)
game.combat.forceAbort(this, false)
//game.combat.abortAction(this.id, false)
} else {
await this.setFlag("world", "abort-action", { state: true, count: 0 })
game.combat.abortAction(this.id, true)
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")
}
@ -433,7 +499,7 @@ export class Hero6Actor extends Actor {
/* -------------------------------------------- */
getSegments() {
let index = Math.min(Math.max(this.system.characteristics.spd.value, 1), 12) // Security bounds
console.log("INDEX", index, __speed2Segments[index])
//console.log("INDEX", index, __speed2Segments[index])
return __speed2Segments[index]
}
getPhasesString() {
@ -441,10 +507,13 @@ export class Hero6Actor extends Actor {
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
}
/* -------------------------------------------- */
@ -474,8 +543,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)
@ -489,7 +563,7 @@ export class Hero6Actor extends Actor {
if (key == "spd") {
ch.phasesString = this.getPhasesString()
}
if (key =="pre") {
if (key == "pre") {
ch.presenceattack = duplicate(this.system.biodata.presenceattack)
}
}
@ -581,12 +655,10 @@ export class Hero6Actor extends Actor {
const ray = new Ray(token.object?.center || token.center, defenderToken.center)
rollData.tokensDistance = canvas.grid.measureDistances([{ ray }], { gridSpaces: false })[0] / canvas.grid.grid.options.dimensions.distance
} else {
ui.notifications.info("No token connected to this actor, unable to compute distance.")
return
//ui.notifications.info("No token connected to this actor, unable to compute distance.")
//return
}
if (defender) {
rollData.forceAdvantage = defender.isAttackerAdvantage()
rollData.advantageFromTarget = true
}
}
console.log("ROLLDATA", rollData)
@ -625,6 +697,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)
}
/* -------------------------------------------- */
@ -636,11 +711,20 @@ export class Hero6Actor extends Actor {
rollData.title = item.name
rollData.diceFormula = Hero6Utility.convertRollHeroSyntax(item.system.damage)
let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
await Hero6Utility.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
//await Hero6Utility.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
rollData.roll = myRoll
rollData.result = myRoll.total
rollData.bodyValue = Hero6Utility.computeBodyValue(myRoll)
let mult
if (item.system.damageeffect == "killing") { // As per issue #11
mult = new Roll("1d3").roll({ async: false })
rollData.killingMultiplier = mult.total
rollData.stunValue = (Number(myRoll.total) * Number(mult.total)) + (Number(item.system.stunx) || 0)
} else {
rollData.stunValue = myRoll.total
}
let msgFlavor = await renderTemplate(`systems/fvtt-hero-system-6/templates/chat/chat-damage-result.hbs`, rollData)
let msg = await rollData.roll.toMessage({
@ -648,6 +732,11 @@ export class Hero6Actor extends Actor {
rollMode: game.settings.get("core", "rollMode"),
flavor: msgFlavor
})
if (mult) {
await Hero6Utility.showDiceSoNice(mult, game.settings.get("core", "rollMode"))
}
rollData.roll = duplicate(rollData.roll) // Convert to object
msg.setFlag("world", "rolldata", rollData)
console.log("Rolldata result", rollData)
@ -674,7 +763,6 @@ export class Hero6Actor extends Actor {
msg.setFlag("world", "rolldata", rollData)
console.log("Rolldata result", rollData)
}
/* -------------------------------------------- */
rollSkill(skillId) {
let skill = this.items.get(skillId)
@ -699,34 +787,54 @@ export class Hero6Actor extends Actor {
}
/* -------------------------------------------- */
rollWeapon(weaponId) {
async rollWeapon(weaponId) {
let weapon = this.items.get(weaponId)
if (weapon) {
weapon = duplicate(weapon)
let skill = this.items.find(item => item.name.toLowerCase() == weapon.system.skill.toLowerCase())
if (skill) {
skill = duplicate(skill)
Hero6Utility.updateSkill(skill)
let abilityKey = skill.system.ability
let rollData = this.getCommonRollData(abilityKey)
rollData.mode = "weapon"
rollData.skill = skill
rollData.weapon = weapon
rollData.img = weapon.img
if (!rollData.forceDisadvantage) { // This is an attack, check if disadvantaged
rollData.forceDisadvantage = this.isAttackDisadvantage()
}
/*if (rollData.weapon.system.isranged && rollData.tokensDistance > Hero6Utility.getWeaponMaxRange(rollData.weapon) ) {
ui.notifications.warn(`Your target is out of range of your weapon (max: ${Hero6Utility.getWeaponMaxRange(rollData.weapon)} - current : ${rollData.tokensDistance})` )
return
}*/
this.startRoll(rollData)
} else {
ui.notifications.warn("Unable to find the relevant skill for weapon " + weapon.name)
}
let rollData = this.getCommonRollData()
rollData.weaponRoll = 11 + (Number(this.system.characteristics.ocv.value) || 0) + (Number(weapon.system.ocv) || 0)
rollData.mode = "weapon"
rollData.weapon = weapon
rollData.img = weapon.img
this.startRoll(rollData)
} else {
ui.notifications.warn("Unable to find the weapon " + weapon.name)
}
}
/* -------------------------------------------- */
rollMentalManeuver(maneuverId) {
let maneuver = this.items.get(maneuverId)
if (maneuver) {
maneuver = duplicate(maneuver)
let rollData = this.getCommonRollData()
rollData.maneuverRoll = 11 + (Number(this.system.characteristics.omcv.value) || 0) + (Number(maneuver.system.omcv) || 0)
rollData.mode = "mentalmaneuver"
rollData.maneuver = maneuver
rollData.img = maneuver.img
this.startRoll(rollData)
} else {
ui.notifications.warn("Unable to find the maneuver " + maneuver.name)
}
}
/* -------------------------------------------- */
rollPowerAttack(powerId ) {
let power = this.items.get(powerId)
if (power) {
power = duplicate(power)
let rollData = this.getCommonRollData()
if (power.system.attackvalue == "ocv") {
rollData.powerRoll = 11 + (Number(this.system.characteristics.ocv.value) || 0) + (Number(power.system.ocv) || 0)
} else {
rollData.powerRoll = 11 + (Number(this.system.characteristics.omcv.value) || 0) + (Number(power.system.omcv) || 0)
}
rollData.mode = "powerattack"
rollData.power = power
rollData.img = power.img
this.startRoll(rollData)
} else {
ui.notifications.warn("Unable to find power " + power.name)
}
}
/* -------------------------------------------- */
async startRoll(rollData) {
let rollDialog = await Hero6RollDialog.create(this, rollData)

View File

@ -31,7 +31,9 @@ export class Hero6Combat extends Combat {
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)
}
@ -40,27 +42,21 @@ export class Hero6Combat extends Combat {
}
/* -------------------------------------------- */
static async holdAction(combatantId) {
const combatant = game.combat.combatants.get(combatantId)
if (combatant.actor.holdAction()) {
let id = combatant._id || combatant.id
let name = combatant.actor.name + " (H)"
await game.combat.updateEmbeddedDocuments("Combatant", [{ _id: id, name: name, holdAction: true }]);
}
holdAction(combatantId) {
this.rebuildInitiative()
//console.log("Rebuilding.....")
}
/* -------------------------------------------- */
static async abortAction(actorId, abortState) {
const combatant = game.combat.combatants.find(c => c.actor.id == actorId)
if (abortState) {
let id = combatant._id || combatant.id
let name = combatant.actor.name + " (A)"
await game.combat.updateEmbeddedDocuments("Combatant", [{ _id: id, name: name }]);
}
abortAction(actorId, abortState) {
this.rebuildInitiative()
}
/* -------------------------------------------- */
constructor(data, context) {
data.flags = { world: { turnData: { turnNumber: 0, segmentNumber: 12} } }
super(data, context);
this.turnNumber = 0;
@ -82,15 +78,41 @@ export class Hero6Combat extends Combat {
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()
if (hasSegment || isOnHold) {
let baseInit = c.actor ? c.actor.getBaseInit() : 0;
let name = c.actor.name
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()
@ -98,9 +120,11 @@ export class Hero6Combat extends Combat {
name = c.actor.name + " (H)"
}
}
if (c.actor.getAbortAction()) {
if (isOnAbort) {
name = c.actor.name + " (A)"
c.actor.disableAbortAction()
if (c.actor.incAbortActionCount()) {
c.actor.disableAbortAction()
}
}
updList.push({ _id: id, name: name, initiative: baseInit, holdAction: c.holdAction })
} else {
@ -112,7 +136,6 @@ export class Hero6Combat extends Combat {
async rollInitiative(ids, formula = undefined, messageOptions = {}) {
ids = typeof ids === "string" ? [ids] : ids;
console.log("Roll INIT")
let updList = []
for (let cId = 0; cId < ids.length; cId++) {
const c = this.combatants.get(ids[cId])
@ -134,7 +157,7 @@ export class Hero6Combat extends Combat {
}
if (updList.length > 0) {
await this.updateEmbeddedDocuments("Combatant", updList);
console.log("Rebuild INIT", updList)
//console.log("Rebuild INIT", updList)
for (let c of updList) {
if (c.initiative != 0) {
return true
@ -144,17 +167,77 @@ export class Hero6Combat extends Combat {
return false
}
/* -------------------------------------------- */
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()
}
}
/* -------------------------------------------- */
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 };
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", "hero6-turn-data")
let turnData = this.getFlag("world", "turnData")
console.log("Next round called....", nextRound, turnData)
//console.log("Next round called....", nextRound, turnData)
while (!hasCombatants) {
turn = turn; // 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) {
@ -165,44 +248,51 @@ export class Hero6Combat extends Combat {
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", "hero6-turn-data")
//console.log("Next round called....2", nextRound, turnData)
turnData = this.getFlag("world", "turnData")
if (!turnData) {
turnData = { turnNumber: 0, segmentNumber: 12 }
this.setFlag("world", "hero6-turn-data", turnData)
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", "hero6-turn-data", turnData)
await this.setFlag("world", "turnData", turnData)
this.turnNumber = turnData.turnNumber;
this.segmentNumber = turnData.segmentNumber;
console.log("Next round called....3", nextRound, turnData)
//console.log("Next round called....3", nextRound, turnData)
// Re-compute init of actors
hasCombatants = await this.rebuildInitiative()
console.log("Going round....", nextRound, hasCombatants)
//console.log("Going round....", nextRound, hasCombatants)
}
// Update the document, passing data through a hook first
const updateData = { round: nextRound, turn: 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 _onCreateEmbeddedDocuments(type, documents, result, options, userId) {
super._onCreateEmbeddedDocuments(type, documents, result, options, userId)
async _onCreateDescendantDocuments(type, documents, result, options, userId) {
//console.log("Added...")
if (game.user.isGM) {
await super._onCreateEmbeddedDocuments(type, documents, result, options, userId)
await this.rebuildInitiative()
}
}
/* -------------------------------------------- */
/* --------------------------------------------
_onUpdate(changed, options, userId) {
}
}*/
/* -------------------------------------------- */
static async checkTurnPosition() {

View File

@ -10,7 +10,8 @@ export const Hero6_CONFIG = {
maneuverTypes: {
"general": "General",
"offensive": "Offensive",
"defensive": "Defensive"
"defensive": "Defensive",
"mental": "Mental"
},
rollCharac : {
"str": "Strength",
@ -21,6 +22,13 @@ export const Hero6_CONFIG = {
"pre": "Presence",
"manual": "Manual",
},
damageEffect: {
"normal": "Normal",
"killing": "Killing",
"stunonly": "Stun Only",
"bodyonly": "Body Only",
"effect": "Effect"
},
skillType: {
"agility": "Agility",
"interaction": "Interaction",
@ -29,6 +37,10 @@ export const Hero6_CONFIG = {
"combat": "Combat" ,
"custom": "Custom"
},
attackTypes: {
"ocv": "OCV",
"omcv": "OMCV"
},
powerEquipmentType: {
"adjustment": "Adjustment",
"mental": "Mental",
@ -53,6 +65,5 @@ export const Hero6_CONFIG = {
"standard": "Standard",
"normal": "Normal",
"killing": "Killing",
"countbody": "Killing (Count BODY)"
}
}

View File

@ -147,13 +147,13 @@ export class Hero6ItemSheet extends ItemSheet {
});
html.find('.item-skill-profiency').click(ev => {
this.object.update( {'system.levels': 12, 'system.cost': 2} )
this.object.update( {'system.skillfamiliarity': false, 'system.cost': 2} )
} )
html.find('.item-skill-familiarity').click(ev => {
this.object.update( {'system.levels': 10, 'system.cost': 1} )
this.object.update( {'system.skillprofiency': false, 'system.cost': 1} )
} )
html.find('.item-skill-everyman').click(ev => {
this.object.update( {'system.levels': 8, 'system.cost': 0} )
this.object.update( {'system.cost': 0} )
} )
html.find('.view-subitem').click(ev => {

View File

@ -41,7 +41,7 @@ Hooks.once("init", async function () {
// Set an initiative formula for the system
CONFIG.Combat.initiative = {
formula: "1d6",
decimals: 3
decimals: 2
};
/* ------------------------------- ------------- */
@ -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 });

View File

@ -52,6 +52,9 @@ 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
@ -124,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()
}
}
/* -------------------------------------------- */
@ -159,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',
@ -230,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)
@ -329,6 +346,16 @@ export class Hero6Utility {
// ability/save/size => 0
let diceFormula = "3d6"
let target = 10
if(rollData.weapon) {
target = rollData.weaponRoll
}
if(rollData.maneuver) {
target = rollData.maneuverRoll
}
if(rollData.power) {
target = rollData.powerRoll
}
if (rollData.charac) {
target = rollData.charac.roll
}
@ -342,7 +369,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

Binary file not shown.

View File

@ -0,0 +1 @@
MANIFEST-000128

0
packs/complications/LOCK Normal file
View File

8
packs/complications/LOG Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-22:07:58.627561 7f2deaffd6c0 Recovering log #126
2023/08/26-22:07:58.748615 7f2deaffd6c0 Delete type=3 #124
2023/08/26-22:07:58.748679 7f2deaffd6c0 Delete type=0 #126
2023/08/26-22:16:27.923271 7f2b69bff6c0 Level-0 table #131: started
2023/08/26-22:16:27.923312 7f2b69bff6c0 Level-0 table #131: 0 bytes OK
2023/08/26-22:16:27.929503 7f2b69bff6c0 Delete type=0 #129
2023/08/26-22:16:27.949795 7f2b69bff6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)
2023/08/26-22:16:27.949837 7f2b69bff6c0 Manual compaction at level-1 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)

View File

@ -0,0 +1,8 @@
2023/08/26-21:35:11.738363 7f2dea7fc6c0 Recovering log #122
2023/08/26-21:35:11.748913 7f2dea7fc6c0 Delete type=3 #120
2023/08/26-21:35:11.749017 7f2dea7fc6c0 Delete type=0 #122
2023/08/26-21:46:54.280176 7f2b69bff6c0 Level-0 table #127: started
2023/08/26-21:46:54.280220 7f2b69bff6c0 Level-0 table #127: 0 bytes OK
2023/08/26-21:46:54.287757 7f2b69bff6c0 Delete type=0 #125
2023/08/26-21:46:54.294397 7f2b69bff6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)
2023/08/26-21:46:54.294492 7f2b69bff6c0 Manual compaction at level-1 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/equipment/000099.ldb Normal file

Binary file not shown.

View File

1
packs/equipment/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000130

0
packs/equipment/LOCK Normal file
View File

8
packs/equipment/LOG Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-22:07:58.520995 7f2deb7fe6c0 Recovering log #128
2023/08/26-22:07:58.608948 7f2deb7fe6c0 Delete type=3 #126
2023/08/26-22:07:58.609004 7f2deb7fe6c0 Delete type=0 #128
2023/08/26-22:16:27.903755 7f2b69bff6c0 Level-0 table #133: started
2023/08/26-22:16:27.903791 7f2b69bff6c0 Level-0 table #133: 0 bytes OK
2023/08/26-22:16:27.909699 7f2b69bff6c0 Delete type=0 #131
2023/08/26-22:16:27.916391 7f2b69bff6c0 Manual compaction at level-0 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)
2023/08/26-22:16:27.923165 7f2b69bff6c0 Manual compaction at level-1 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)

8
packs/equipment/LOG.old Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-21:35:11.724122 7f2deb7fe6c0 Recovering log #124
2023/08/26-21:35:11.735212 7f2deb7fe6c0 Delete type=3 #122
2023/08/26-21:35:11.735277 7f2deb7fe6c0 Delete type=0 #124
2023/08/26-21:46:54.246960 7f2b69bff6c0 Level-0 table #129: started
2023/08/26-21:46:54.247029 7f2b69bff6c0 Level-0 table #129: 0 bytes OK
2023/08/26-21:46:54.253553 7f2b69bff6c0 Delete type=0 #127
2023/08/26-21:46:54.253849 7f2b69bff6c0 Manual compaction at level-0 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)
2023/08/26-21:46:54.266229 7f2b69bff6c0 Manual compaction at level-1 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/maneuvers/000116.ldb Normal file

Binary file not shown.

View File

1
packs/maneuvers/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000121

0
packs/maneuvers/LOCK Normal file
View File

8
packs/maneuvers/LOG Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-22:07:58.730640 7f2deb7fe6c0 Recovering log #119
2023/08/26-22:07:58.841210 7f2deb7fe6c0 Delete type=3 #117
2023/08/26-22:07:58.841288 7f2deb7fe6c0 Delete type=0 #119
2023/08/26-22:16:27.936844 7f2b69bff6c0 Level-0 table #124: started
2023/08/26-22:16:27.936868 7f2b69bff6c0 Level-0 table #124: 0 bytes OK
2023/08/26-22:16:27.942975 7f2b69bff6c0 Delete type=0 #122
2023/08/26-22:16:27.949818 7f2b69bff6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)
2023/08/26-22:16:27.949853 7f2b69bff6c0 Manual compaction at level-1 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)

8
packs/maneuvers/LOG.old Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-21:35:11.751865 7f2debfff6c0 Recovering log #114
2023/08/26-21:35:11.761906 7f2debfff6c0 Delete type=3 #112
2023/08/26-21:35:11.761967 7f2debfff6c0 Delete type=0 #114
2023/08/26-21:46:54.287966 7f2b69bff6c0 Level-0 table #120: started
2023/08/26-21:46:54.288007 7f2b69bff6c0 Level-0 table #120: 0 bytes OK
2023/08/26-21:46:54.294193 7f2b69bff6c0 Delete type=0 #118
2023/08/26-21:46:54.294471 7f2b69bff6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)
2023/08/26-21:46:54.294512 7f2b69bff6c0 Manual compaction at level-1 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/perks/000005.ldb Normal file

Binary file not shown.

0
packs/perks/000130.log Normal file
View File

1
packs/perks/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000128

0
packs/perks/LOCK Normal file
View File

8
packs/perks/LOG Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-22:07:58.751122 7f2dea7fc6c0 Recovering log #126
2023/08/26-22:07:58.864497 7f2dea7fc6c0 Delete type=3 #124
2023/08/26-22:07:58.864580 7f2dea7fc6c0 Delete type=0 #126
2023/08/26-22:16:27.929655 7f2b69bff6c0 Level-0 table #131: started
2023/08/26-22:16:27.929696 7f2b69bff6c0 Level-0 table #131: 0 bytes OK
2023/08/26-22:16:27.936745 7f2b69bff6c0 Delete type=0 #129
2023/08/26-22:16:27.949807 7f2b69bff6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)
2023/08/26-22:16:27.949861 7f2b69bff6c0 Manual compaction at level-1 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)

8
packs/perks/LOG.old Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-21:35:11.751864 7f2deaffd6c0 Recovering log #122
2023/08/26-21:35:11.761866 7f2deaffd6c0 Delete type=3 #120
2023/08/26-21:35:11.761921 7f2deaffd6c0 Delete type=0 #122
2023/08/26-21:46:54.294564 7f2b69bff6c0 Level-0 table #127: started
2023/08/26-21:46:54.294620 7f2b69bff6c0 Level-0 table #127: 0 bytes OK
2023/08/26-21:46:54.302478 7f2b69bff6c0 Delete type=0 #125
2023/08/26-21:46:54.309946 7f2b69bff6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)
2023/08/26-21:46:54.310020 7f2b69bff6c0 Manual compaction at level-1 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)

BIN
packs/perks/MANIFEST-000128 Normal file

Binary file not shown.

BIN
packs/powers/000062.ldb Normal file

Binary file not shown.

0
packs/powers/000131.log Normal file
View File

1
packs/powers/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000129

0
packs/powers/LOCK Normal file
View File

8
packs/powers/LOG Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-22:07:58.612145 7f2debfff6c0 Recovering log #127
2023/08/26-22:07:58.728418 7f2debfff6c0 Delete type=3 #125
2023/08/26-22:07:58.728498 7f2debfff6c0 Delete type=0 #127
2023/08/26-22:16:27.916401 7f2b69bff6c0 Level-0 table #132: started
2023/08/26-22:16:27.916423 7f2b69bff6c0 Level-0 table #132: 0 bytes OK
2023/08/26-22:16:27.923048 7f2b69bff6c0 Delete type=0 #130
2023/08/26-22:16:27.923174 7f2b69bff6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)
2023/08/26-22:16:27.923191 7f2b69bff6c0 Manual compaction at level-1 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)

8
packs/powers/LOG.old Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-21:35:11.738380 7f2deaffd6c0 Recovering log #123
2023/08/26-21:35:11.748807 7f2deaffd6c0 Delete type=3 #121
2023/08/26-21:35:11.748868 7f2deaffd6c0 Delete type=0 #123
2023/08/26-21:46:54.273097 7f2b69bff6c0 Level-0 table #128: started
2023/08/26-21:46:54.273141 7f2b69bff6c0 Level-0 table #128: 0 bytes OK
2023/08/26-21:46:54.279970 7f2b69bff6c0 Delete type=0 #126
2023/08/26-21:46:54.287948 7f2b69bff6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)
2023/08/26-21:46:54.294448 7f2b69bff6c0 Manual compaction at level-1 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/skills/000005.ldb Normal file

Binary file not shown.

0
packs/skills/000130.log Normal file
View File

1
packs/skills/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000128

0
packs/skills/LOCK Normal file
View File

8
packs/skills/LOG Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-22:07:58.521207 7f2dea7fc6c0 Recovering log #126
2023/08/26-22:07:58.625202 7f2dea7fc6c0 Delete type=3 #124
2023/08/26-22:07:58.625257 7f2dea7fc6c0 Delete type=0 #126
2023/08/26-22:16:27.909865 7f2b69bff6c0 Level-0 table #131: started
2023/08/26-22:16:27.909908 7f2b69bff6c0 Level-0 table #131: 0 bytes OK
2023/08/26-22:16:27.916292 7f2b69bff6c0 Delete type=0 #129
2023/08/26-22:16:27.923145 7f2b69bff6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)
2023/08/26-22:16:27.923202 7f2b69bff6c0 Manual compaction at level-1 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)

8
packs/skills/LOG.old Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-21:35:11.724122 7f2debfff6c0 Recovering log #122
2023/08/26-21:35:11.735216 7f2debfff6c0 Delete type=3 #120
2023/08/26-21:35:11.735320 7f2debfff6c0 Delete type=0 #122
2023/08/26-21:46:54.266256 7f2b69bff6c0 Level-0 table #127: started
2023/08/26-21:46:54.266300 7f2b69bff6c0 Level-0 table #127: 0 bytes OK
2023/08/26-21:46:54.272914 7f2b69bff6c0 Delete type=0 #125
2023/08/26-21:46:54.287925 7f2b69bff6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)
2023/08/26-21:46:54.294424 7f2b69bff6c0 Manual compaction at level-1 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/talents/000005.ldb Normal file

Binary file not shown.

0
packs/talents/000130.log Normal file
View File

1
packs/talents/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000128

0
packs/talents/LOCK Normal file
View File

8
packs/talents/LOG Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-22:07:58.844046 7f2debfff6c0 Recovering log #126
2023/08/26-22:07:58.925665 7f2debfff6c0 Delete type=3 #124
2023/08/26-22:07:58.926331 7f2debfff6c0 Delete type=0 #126
2023/08/26-22:16:27.943060 7f2b69bff6c0 Level-0 table #131: started
2023/08/26-22:16:27.943083 7f2b69bff6c0 Level-0 table #131: 0 bytes OK
2023/08/26-22:16:27.949677 7f2b69bff6c0 Delete type=0 #129
2023/08/26-22:16:27.949829 7f2b69bff6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)
2023/08/26-22:16:27.949845 7f2b69bff6c0 Manual compaction at level-1 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)

8
packs/talents/LOG.old Normal file
View File

@ -0,0 +1,8 @@
2023/08/26-21:35:11.765241 7f2dea7fc6c0 Recovering log #122
2023/08/26-21:35:11.781642 7f2dea7fc6c0 Delete type=3 #120
2023/08/26-21:35:11.781702 7f2dea7fc6c0 Delete type=0 #122
2023/08/26-21:46:54.302747 7f2b69bff6c0 Level-0 table #127: started
2023/08/26-21:46:54.302821 7f2b69bff6c0 Level-0 table #127: 0 bytes OK
2023/08/26-21:46:54.309685 7f2b69bff6c0 Delete type=0 #125
2023/08/26-21:46:54.309987 7f2b69bff6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)
2023/08/26-21:46:54.310051 7f2b69bff6c0 Manual compaction at level-1 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)

Binary file not shown.

0
packs/weapons/000088.log Normal file
View File

1
packs/weapons/CURRENT Normal file
View File

@ -0,0 +1 @@
MANIFEST-000086

0
packs/weapons/LOCK Normal file
View File

7
packs/weapons/LOG Normal file
View 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
View 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)

Binary file not shown.

View File

@ -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;
}
@ -1328,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;
@ -1373,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;
@ -1382,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
}

View File

@ -5,7 +5,7 @@
"flags": {}
}
],
"description": "Hero System v6 for FoundryVTT (Official)",
"description": "Hero System 6E for FoundryVTT (Official)",
"esmodules": [
"modules/hero6-main.js"
],
@ -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.46",
"version": "11.0.17",
"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.46.zip",
"url": "https://www.uberwald.me/gitea/uberwald/",
"background": "images/ui/hero6_welcome_page.webp",
"title": "Hero System 6E Basic (Official)",
"manifest": "https://www.uberwald.me/gitea/public/fvtt-hero-system-6/raw/branch/master/system.json",
"download": "https://www.uberwald.me/gitea/public/fvtt-hero-system-6/archive/fvtt-hero-system-6-v11.0.17.zip",
"url": "https://www.uberwald.me/public/uberwald/",
"background": "systems/fvtt-hero-system-6/images/ui/hero_foundry_cover.webp",
"id": "fvtt-hero-system-6"
}

View File

@ -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": {
@ -334,14 +354,19 @@
"levels": 0,
"quantity": 1,
"range": "",
"damageeffect": "normal",
"damage": "",
"stunx": 0,
"endurance": 0,
"hasroll": false,
"attackvalue": "ocv",
"roll": 0,
"computebody": false,
"haseffectroll": false,
"effectroll": "standard",
"effectrollformula": "",
"hascharges": false,
"nbcharges": 0,
"items": {}
}
},
@ -353,6 +378,8 @@
"pha": "",
"ocv": "",
"dcv" : "",
"omcv": "",
"dmcv" : "",
"isstock": false,
"active": false
},
@ -394,7 +421,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": [

View File

@ -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">
&nbsp;
</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="">&nbsp;</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="">&nbsp;</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="">&nbsp;</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="">&nbsp;</label>
</li>
</ul>
@ -117,78 +127,116 @@
{{!-- 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">&nbsp;</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">&nbsp;</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}} 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-short">
<label class="short-label">DCV</label>
</span>
<span class="item-field-label-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}}">
{{#each maneuvers as |mlist mtype|}}
<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 mtype}} Maneuver</label>
</span>
<span class="item-field-label-very-short">
<label class="short-label">PHA</label>
</span>
{{#if (eq mtype "mental")}}
<span class="item-field-label-very-short">
<label class="short-label">OMCV</label>
</span>
<span class="item-field-label-very-short">
<label class="short-label">DMCV</label>
</span>
{{else}}
<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>
{{/if}}
<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>
<span class="item-field-label-long">{{maneuver.name}}</span>
src="{{maneuver.img}}" />
</a>
<span class="item-field-label-long">
<a class="roll-item"><i class="fas fa-dice"></i></a>
{{maneuver.name}}
</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-short">{{maneuver.system.dcv}}</span>
<span class="item-field-label-very-short content-center">{{maneuver.system.pha}}</span>
{{#if (eq ../mtype "mental")}}
<span class="item-field-label-very-short content-center">{{maneuver.system.omcv}}</span>
<span class="item-field-label-very-short content-center">{{maneuver.system.dmcv}}</span>
{{else}}
<span class="item-field-label-very-short content-center">{{maneuver.system.ocv}}</span>
<span class="item-field-label-very-short content-center">{{maneuver.system.dcv}}</span>
{{/if}}
<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>
<span class="item-field-label-long">{{maneuver.system.effects}}</span>
<span class="item-field-label-short">&nbsp;</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" />
<span class="item-field-label-very-short">&nbsp;</span>
<button class="chat-card-button item-field-label-medium hold-action">Hold/Unhold</button>
<button class="chat-card-button item-field-label-medium abort-action">Abort/Unabort</button>
<span class="">&nbsp;</span>
<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>
@ -197,24 +245,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>
@ -224,57 +274,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">&nbsp;</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">&nbsp;</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">&nbsp;</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">
@ -282,66 +348,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>
@ -351,28 +426,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">&nbsp;</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">&nbsp;</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>
@ -399,7 +474,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">&nbsp;</div>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
@ -426,8 +502,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">&nbsp;</span>
{{/if}}
@ -457,8 +534,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">&nbsp;</span>
{{/if}}
@ -474,6 +552,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">
@ -488,29 +570,80 @@
<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}}">
{{#each allmaneuvers as |maneuver key|}}
{{#if (ne maneuver.system.maneuvertype "mental")}}
<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-long"><a class="roll-item"><i class="fas fa-dice"></i>{{maneuver.name}}</a></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">&nbsp;</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>
{{/if}}
{{/each}}
</ul>
<ul class="stat-list alternate-list item-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-field-label-long-img">
<label class="">Mental Maneuvers</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">OMCV</label>
</span>
<span class="item-field-label-short">
<label class="short-label">DMCV</label>
</span>
<span class="item-field-label-long3">
<label class="short-label">Effects</label>
</span>
</li>
{{#each allmaneuvers as |maneuver key|}}
{{#if (eq maneuver.system.maneuvertype "mental")}}
<div class="">
<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">
<a class="roll-item"><i class="fas fa-dice"></i>
{{maneuver.name}}
</a>
</span>
<span class="item-field-label-short content-center">{{maneuver.system.pha}}</span>
<span class="item-field-label-short content-center">{{maneuver.system.omcv}}</span>
<span class="item-field-label-short content-center">{{maneuver.system.dmcv}}</span>
<span class="item-field-label-long3">{{maneuver.system.effects}}</span>
<div class="item-filler">&nbsp;</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>
{{/if}}
{{/each}}
</ul>
</div>
{{!-- Powers Tab --}}
@ -543,13 +676,24 @@
{{#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>
{{#if (eq system.typemodifier "attack")}}
<span class="item-field-label-long3">
<a class="roll-power-attack">
<i class="fas fa-dice"></i>
{{power.name}}
</a>
</span>
{{else}}
<span class="item-field-label-long3">{{power.name}}</span>
{{/if}}
<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">&nbsp;</span>
{{/if}}
@ -580,8 +724,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">&nbsp;</span>
{{/if}}
@ -604,13 +749,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>
@ -665,7 +816,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">
@ -693,7 +844,7 @@
</div>
</div>
</div>
</section>
</form>

View File

@ -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}}

View File

@ -15,6 +15,27 @@
</div>
{{/if}}
{{#if weapon}}
<div class="flexrow">
<span class="item-field-label-long margin-item-list">{{weapon.name}} : </span>
<span class="item-field-label-medium margin-item-list">{{weaponRoll}}-</span>
</div>
{{/if}}
{{#if maneuver}}
<div class="flexrow">
<span class="item-field-label-long margin-item-list">{{maneuver.name}} : </span>
<span class="item-field-label-medium margin-item-list">{{maneuverRoll}}-</span>
</div>
{{/if}}
{{#if power}}
<div class="flexrow">
<span class="item-field-label-long margin-item-list">{{power.name}} : </span>
<span class="item-field-label-medium margin-item-list">{{powerRoll}}-</span>
</div>
{{/if}}
{{#if item}}
<div class="flexrow">
<span class="item-field-label-long margin-item-list">{{upperFirst item.type}} - {{upperFirst item.name}}</span>

View File

@ -7,12 +7,6 @@
<hr>
{{#if img}}
<div >
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
</div>
{{/if}}
<div class="flexcol">
</div>

View File

@ -7,22 +7,30 @@
<hr>
{{#if img}}
<div >
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
</div>
{{/if}}
<div class="flexcol">
</div>
<div>
<ul>
<li>Name : {{title}}</li>
<li>Damage Effect: {{upperFirst item.system.damageeffect}}</li>
<li>Damage formula : {{diceFormula}}</li>
<li><strong>TOTAL : {{result}}</strong></li>
<li><strong>BODY : {{bodyValue}}</strong></li>
{{#if (or (eq item.system.damageeffect "killing") (eq item.system.damageeffect "normal"))}}
<li><strong>1d3 result + STUNx : {{killingMultiplier}} + {{item.system.stunx}}</strong></li>
<li><strong>STUN : {{stunValue}}</strong></li>
<li><strong>BODY : {{bodyValue}}</strong></li>
{{/if}}
{{#if (eq item.system.damageeffect "stunonly")}}
<li><strong>STUN : {{stunValue}}</strong></li>
{{/if}}
{{#if (eq item.system.damageeffect "bodyonly")}}
<li><strong>BODY : {{stunValue}}</strong></li>
{{/if}}
</ul>
</div>

View File

@ -7,12 +7,6 @@
<hr>
{{#if img}}
<div >
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
</div>
{{/if}}
<div class="flexcol">
</div>
@ -23,6 +17,21 @@
</li>
{{/if}}
{{#if weapon}}
<li>Weapon : {{weapon.name}}
</li>
{{/if}}
{{#if maneuver}}
<li>Maneuver : {{maneuver.name}}
</li>
{{/if}}
{{#if power}}
<li>Power : {{power.name}}
</li>
{{/if}}
{{#if rollSource}}
<li>Roll : {{rollSource}}</li>
{{/if}}
@ -33,6 +42,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)}}

View File

@ -7,12 +7,6 @@
<hr>
{{#if img}}
<div >
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
</div>
{{/if}}
<div class="flexcol">
</div>

View File

@ -20,6 +20,8 @@
</li>
</ul>
</div>
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
</section>
</form>

View File

@ -67,5 +67,7 @@
</div>
</div>
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
</section>
</form>

View File

@ -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>

View File

@ -24,5 +24,7 @@
</ul>
</div>
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
</section>
</form>

View File

@ -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>

View File

@ -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>

View File

@ -37,14 +37,21 @@
<input type="text" class="item-field-label-medium" name="system.pha" value="{{system.pha}}" data-dtype="String"/>
</li>
{{#if (eq system.maneuvertype "mental")}}
<li class="flexrow"><label class="item-field-label-medium">OMCV</label>
<input type="text" class="item-field-label-medium" name="system.omcv" value="{{system.omcv}}" data-dtype="String"/>
</li>
<li class="flexrow"><label class="item-field-label-medium">DMCV</label>
<input type="text" class="item-field-label-medium" name="system.dmcv" value="{{system.dmcv}}" data-dtype="String"/>
</li>
{{else}}
<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="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="String"/>
</li>
{{/if}}
<li class="flexrow"><label class="item-field-label-medium">Effects</label>
<input type="text" class="item-field-label-long" name="system.effects" value="{{system.effects}}" data-dtype="String"/>
</li>
@ -53,5 +60,8 @@
</ul>
</div>
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
</section>
</form>

View File

@ -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>

View File

@ -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>

View File

@ -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>
@ -52,22 +52,21 @@
data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-long">Familiarity only</label>
<input type="checkbox" class="item-field-label-medium item-skill-familiarity" name="system.skillfamiliarity" {{checked system.skillfamiliarity}}
{{#if (or system.skillprofiency system.skilllevelonly)}}disabled{{/if}}
<li class="flexrow"><label class="item-field-label-long">Proficency</label>
<input type="checkbox" class="item-field-label-medium item-skill-profiency" name="system.skillprofiency" {{checked system.skillprofiency}}
data-dtype="Number"/>
</li>
{{#if system.skillfamiliarity}}
{{#if (not system.skillprofiency)}}
<li class="flexrow"><label class="item-field-label-long">Familiarity only</label>
<input type="checkbox" class="item-field-label-medium item-skill-familiarity" name="system.skillfamiliarity" {{checked system.skillfamiliarity}}
data-dtype="Number"/>
</li>
<li class="flexrow"><label class="item-field-label-long">Everyman skill</label>
<input type="checkbox" class="item-field-label-medium item-skill-everyman" name="system.skilleveryman" {{checked system.skilleveryman}} data-dtype="Number"/>
</li>
{{/if}}
{{/if}}
<li class="flexrow"><label class="item-field-label-long">Proficency</label>
<input type="checkbox" class="item-field-label-medium item-skill-profiency" name="system.skillprofiency" {{checked system.skillprofiency}}
{{#if (or system.skillfamiliarity system.skilllevelonly)}}disabled{{/if}}
data-dtype="Number"/>
</li>
{{#if (ne system.skilltype "combat")}}
<li class="flexrow"><label class="item-field-label-long">Levels Cost</label>
@ -79,5 +78,8 @@
</ul>
</div>
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
</section>
</form>

View File

@ -22,6 +22,8 @@
</ul>
</div>
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
</section>
</form>

View File

@ -103,5 +103,7 @@
</div>
</div>
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
</section>
</form>

View File

@ -3,33 +3,114 @@
<span class="item-name-img">
<label class="">&nbsp;</label>
</span>
<span class="item-field-label-short">
<label class="item-field-label-short">Qty</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">&nbsp;</label>
</span>
<span class="item-field-label-very-short">
<label class="item-field-label-very-short">&nbsp;</label>
</span>
<span class="item-field-label-very-short">
<label class="item-field-label-very-short">&nbsp;</label>
</span>
<span class="item-field-label-very-short">
<label class="item-field-label-very-short">&nbsp;</label>
</span>
<span class="item-field-label-very-short">
<label class="item-field-label-very-short">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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">&nbsp;</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>

View File

@ -1,17 +1,59 @@
<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">
{{#if (eq equip.system.subtype "weapon")}}
<a class="roll-weapon"><i class="fas fa-dice"></i>{{equip.name}}</a>
{{else}}
{{equip.name}}
{{/if}}
</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>&nbsp;</label> </span>
<span class="item-field-label-very-short"><label>&nbsp;</label> </span>
<span class="item-field-label-very-short"><label>&nbsp;</label> </span>
<span class="item-field-label-very-short"><label>&nbsp;</label> </span>
<span class="item-field-label-very-short"><label>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;</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 +61,12 @@
<span class="item-field-label-short">&nbsp;</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">&nbsp;</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>

View File

@ -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">

View File

@ -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>

View 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>

View File

@ -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}}
@ -18,19 +18,62 @@
</select>
</li>
{{#if (eq (lower system.typemodifier) "attack")}}
<li class="flexrow"><label class="item-field-label-long">Attack Roll Uses OCV or OMCV</label>
<select class="item-field-label-long" type="text" name="system.attackvalue" value="{{system.attackvalue}}" data-dtype="String">
{{#select system.attackvalue}}
{{#each config.attackTypes as |name key|}}
<option value="{{key}}">{{name}}</option>
{{/each}}
{{/select}}
</select>
</li>
{{/if}}
<li class="flexrow"><label class="item-field-label-long">Is sense affecting ?</label>
<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 Effect</label>
<select class="item-field-label-long" type="text" name="system.damageeffect" value="{{system.damageeffect}}" data-dtype="String">
{{#select (lower system.damageeffect)}}
{{#each config.damageEffect as |name key|}}
<option value="{{key}}">{{name}}</option>
{{/each}}
{{/select}}
</select>
</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 (eq system.damageeffect "killing")}}
<li class="flexrow"><label class="item-field-label-long">STUNx</label>
<input type="text" class="item-field-label-medium" name="system.stunx" value="{{system.stunx}}" data-dtype="Number"/>
</li>
{{/if}}
{{/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>