Compare commits

..

34 Commits

Author SHA1 Message Date
a5c6ae8fcb Fix #35 2023-10-04 21:49:07 +02:00
5e42cfbab1 Fix sheet and weapons roll 2023-09-01 20:46:36 +02:00
86a9889359 Fix #29 2023-08-30 20:19:13 +02:00
7375fa39c5 Fix #27 2023-08-30 14:22:29 +02:00
ab587740d8 Fix #25 2023-08-30 09:46:43 +02:00
0f4fe253e0 Manage packs thru LFS 2023-08-29 11:17:16 +02:00
3b13a44d9d Manage packs thru LFS 2023-08-29 09:16:18 +02:00
0ebe0c3734 Manage packs thru LFS 2023-08-29 09:16:05 +02:00
6a00dd8583 Manage packs thru LFS 2023-08-29 09:14:57 +02:00
5064b83f2b Fix #21 : Add the missing helper 2023-08-29 09:12:34 +02:00
58275c32e6 Fix #21 : Add the missing helper 2023-08-27 20:44:20 +02:00
c22b950f7c Fix #21 : Add the missing helper 2023-08-27 20:43:02 +02:00
893ca4cfa5 Fix Killing damage information 2023-08-27 16:21:58 +02:00
94065a3755 Fix Killing damage information 2023-08-27 16:21:10 +02:00
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
94 changed files with 602 additions and 311 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
packs/* filter=lfs diff=lfs merge=lfs -text

View File

@ -2,8 +2,18 @@ This is the official Hero System 6th Edition game system for FoundryVTT, based o
The Hero System game system is not usable standalone. To play this game you need a copy of the core rulebook. 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 Installation
Manifest URL: https://github.com/Legendsmiths-LLC/ 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. For manual installation, use the provided manifest URL in the "Install System" popup window while managing game systems.

47
changelog.md Normal file
View File

@ -0,0 +1,47 @@
v11.0.23
- Proper display of BODY/STUN bars on tokens
v11.0.22
- Fix actor sheet (powers, characteristics)
- Fix weapons roll
v11.0.21
- Fix grid default distance in system.json
- Fix powers roll again (#29)
v11.0.20
- Enhance chat message output (cf #25)
- Enhance roll window
- Code simplification
v11.0.19
- Fix killing damage computation (again)
v11.0.18
- Fix killing damage computation
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

View File

@ -162,13 +162,19 @@ export class Hero6ActorSheet extends ActorSheet {
html.find('.roll-perception').click((event) => { html.find('.roll-perception').click((event) => {
this.actor.rollPerception("int"); 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) => { html.find('.roll-direct').click((event) => {
const rollFormula = $(event.currentTarget).data("roll-formula") const rollFormula = $(event.currentTarget).data("roll-formula")
const rollSource = $(event.currentTarget).data("roll-source") const rollSource = $(event.currentTarget).data("roll-source")
Hero6Utility.processDirectRoll( { actorId: this.actor.id, rollFormula: rollFormula, rollSource: rollSource, mode:"directroll"} ) Hero6Utility.processDirectRoll( { actorId: this.actor.id, rollFormula: rollFormula, rollSource: rollSource, mode:"directroll"} )
}); });
html.find('.roll-item').click((event) => { html.find('.roll-item').click((event) => {
const li = $(event.currentTarget).parents(".item"); const li = $(event.currentTarget).parents(".item");
let itemId = li.data("item-id") let itemId = li.data("item-id")
@ -184,16 +190,6 @@ export class Hero6ActorSheet extends ActorSheet {
let itemId = li.data("item-id") let itemId = li.data("item-id")
this.actor.rollLiftDice(itemId); this.actor.rollLiftDice(itemId);
}); });
html.find('.roll-weapon').click((event) => {
const li = $(event.currentTarget).parents(".item");
const skillId = li.data("item-id")
this.actor.rollWeapon(skillId)
});
html.find('.roll-maneuver').click((event) => {
const li = $(event.currentTarget).parents(".item");
const maneuverId = li.data("maneuver-id")
this.actor.rollManeuver(maneuverId)
});
html.find('.hold-action').click((event) => { html.find('.hold-action').click((event) => {
this.actor.holdAction() this.actor.holdAction()

View File

@ -216,7 +216,6 @@ export class Hero6Actor extends Actor {
skill.roll = charac.roll skill.roll = charac.roll
} }
} }
console.log("SILL", skill)
if (skill.system.levels > 0) { if (skill.system.levels > 0) {
skill.roll += skill.system.levels skill.roll += skill.system.levels
} }
@ -224,14 +223,26 @@ export class Hero6Actor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
prepareManeuver(maneuver) { prepareManeuver(maneuver) {
let subMode = "normal"
maneuver.roll = 11 + this.system.characteristics.ocv.value if (maneuver.system.maneuvertype == "mental") {
maneuver.roll = 11 + (Number(this.system.characteristics.omcv.value) || 0)
subMode = "omcv"
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)
subMode = "ocv"
if (Number(maneuver.system.ocv)) { if (Number(maneuver.system.ocv)) {
maneuver.roll += Number(maneuver.system.ocv) maneuver.roll += (Number(maneuver.system.ocv) || 0)
} else { } else {
maneuver.noOCV = true maneuver.noOCV = true
} }
} }
return subMode
}
/* -------------------------------------------- */ /* -------------------------------------------- */
getSkills() { getSkills() {
@ -304,11 +315,13 @@ export class Hero6Actor extends Actor {
let maneuvers = { let maneuvers = {
general: this.items.filter(item => item.type == "maneuver" && item.system.maneuvertype == "general"), general: this.items.filter(item => item.type == "maneuver" && item.system.maneuvertype == "general"),
offensive: this.items.filter(item => item.type == "maneuver" && item.system.maneuvertype == "offensive"), 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.general)
Hero6Utility.sortArrayObjectsByName(maneuvers.offensive) Hero6Utility.sortArrayObjectsByName(maneuvers.offensive)
Hero6Utility.sortArrayObjectsByName(maneuvers.defensive) Hero6Utility.sortArrayObjectsByName(maneuvers.defensive)
Hero6Utility.sortArrayObjectsByName(maneuvers.mental)
return maneuvers return maneuvers
} }
getAllManeuvers() { getAllManeuvers() {
@ -628,6 +641,9 @@ export class Hero6Actor extends Actor {
rollData.actorImg = this.img rollData.actorImg = this.img
rollData.actorId = this.id rollData.actorId = this.id
rollData.img = this.img rollData.img = this.img
rollData.title = this.name
rollData.subMode = "normal"
rollData.characteristics = duplicate(this.system.characteristics)
if (chKey) { if (chKey) {
rollData.charac = duplicate(this.system.characteristics[chKey]) rollData.charac = duplicate(this.system.characteristics[chKey])
this.prepareCharacValues(rollData.charac) this.prepareCharacValues(rollData.charac)
@ -646,12 +662,10 @@ export class Hero6Actor extends Actor {
const ray = new Ray(token.object?.center || token.center, defenderToken.center) 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 rollData.tokensDistance = canvas.grid.measureDistances([{ ray }], { gridSpaces: false })[0] / canvas.grid.grid.options.dimensions.distance
} else { } else {
ui.notifications.info("No token connected to this actor, unable to compute distance.") //ui.notifications.info("No token connected to this actor, unable to compute distance.")
return //return
} }
if (defender) { if (defender) {
rollData.forceAdvantage = defender.isAttackerAdvantage()
rollData.advantageFromTarget = true
} }
} }
console.log("ROLLDATA", rollData) console.log("ROLLDATA", rollData)
@ -662,6 +676,7 @@ export class Hero6Actor extends Actor {
rollPerception() { rollPerception() {
let rollData = this.getCommonRollData("int") let rollData = this.getCommonRollData("int")
rollData.isPerception = true rollData.isPerception = true
rollData.title = "Perception roll"
rollData.charac.roll = Number(rollData.charac.perceptionroll) rollData.charac.roll = Number(rollData.charac.perceptionroll)
rollData.mode = "perception" rollData.mode = "perception"
if (rollData.target) { if (rollData.target) {
@ -675,6 +690,7 @@ export class Hero6Actor extends Actor {
rollCharac(chKey) { rollCharac(chKey) {
let rollData = this.getCommonRollData(chKey) let rollData = this.getCommonRollData(chKey)
rollData.mode = "charac" rollData.mode = "charac"
rollData.title = "Characteristic roll"
if (rollData.target) { if (rollData.target) {
ui.notifications.warn("You are targetting a token with a skill : please use a Weapon instead.") ui.notifications.warn("You are targetting a token with a skill : please use a Weapon instead.")
return return
@ -686,12 +702,13 @@ export class Hero6Actor extends Actor {
let item = this.items.get(itemId) let item = this.items.get(itemId)
let rollData = this.getCommonRollData() let rollData = this.getCommonRollData()
rollData.mode = "item" rollData.mode = "item"
rollData.title = Hero6Utility.upperFirst(item.type) + " - " + item.name
rollData.item = duplicate(item) rollData.item = duplicate(item)
if (item.type == "skill") { if (item.type == "skill") {
this.prepareSkill(rollData.item) this.prepareSkill(rollData.item)
} }
if (item.type == "maneuver") { if (item.type == "maneuver") {
this.prepareManeuver(rollData.item) rollData.subMode = this.prepareManeuver(rollData.item)
} }
this.startRoll(rollData) this.startRoll(rollData)
} }
@ -704,18 +721,32 @@ export class Hero6Actor extends Actor {
rollData.title = item.name rollData.title = item.name
rollData.diceFormula = Hero6Utility.convertRollHeroSyntax(item.system.damage) rollData.diceFormula = Hero6Utility.convertRollHeroSyntax(item.system.damage)
let myRoll = new Roll(rollData.diceFormula).roll({ async: false }) 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.roll = myRoll
rollData.result = myRoll.total rollData.result = myRoll.total
rollData.bodyValue = Hero6Utility.computeBodyValue(myRoll) 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 msgFlavor = await renderTemplate(`systems/fvtt-hero-system-6/templates/chat/chat-damage-result.hbs`, rollData)
let msg = await rollData.roll.toMessage({ let msg = await rollData.roll.toMessage({
user: game.user.id, user: game.user.id,
rollMode: game.settings.get("core", "rollMode"), rollMode: game.settings.get("core", "rollMode"),
flavor: msgFlavor flavor: msgFlavor
}) })
if (mult) {
await Hero6Utility.showDiceSoNice(mult, game.settings.get("core", "rollMode"))
}
rollData.roll = duplicate(rollData.roll) // Convert to object rollData.roll = duplicate(rollData.roll) // Convert to object
msg.setFlag("world", "rolldata", rollData) msg.setFlag("world", "rolldata", rollData)
console.log("Rolldata result", rollData) console.log("Rolldata result", rollData)
@ -743,28 +774,6 @@ export class Hero6Actor extends Actor {
console.log("Rolldata result", rollData) console.log("Rolldata result", rollData)
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
rollManeuver(maneuverId) {
let skill = this.items.get(skillId)
if (skill) {
if (skill.system.islore && skill.system.level == 0) {
ui.notifications.warn("You can't use Lore Skills with a SL of 0.")
return
}
skill = duplicate(skill)
Hero6Utility.updateSkill(skill)
let abilityKey = skill.system.ability
let rollData = this.getCommonRollData(abilityKey)
rollData.mode = "skill"
rollData.skill = skill
rollData.img = skill.img
if (rollData.target) {
ui.notifications.warn("You are targetting a token with a skill : please use a Weapon instead.")
return
}
this.startRoll(rollData)
}
}
/* -------------------------------------------- */
rollSkill(skillId) { rollSkill(skillId) {
let skill = this.items.get(skillId) let skill = this.items.get(skillId)
if (skill) { if (skill) {
@ -788,34 +797,58 @@ export class Hero6Actor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
rollWeapon(weaponId) { async rollWeapon(weaponId) {
let weapon = this.items.get(weaponId) let weapon = this.items.get(weaponId)
if (weapon) { if (weapon) {
weapon = duplicate(weapon) weapon = duplicate(weapon)
let skill = this.items.find(item => item.name.toLowerCase() == weapon.system.skill.toLowerCase()) let rollData = this.getCommonRollData()
if (skill) { rollData.subMode = "ocv"
skill = duplicate(skill)
Hero6Utility.updateSkill(skill)
let abilityKey = skill.system.ability
let rollData = this.getCommonRollData(abilityKey)
rollData.mode = "weapon" rollData.mode = "weapon"
rollData.skill = skill rollData.item = weapon
rollData.weapon = weapon rollData.item.roll = 11 + (Number(this.system.characteristics.ocv.value) || 0) + (Number(weapon.system.ocv) || 0)
rollData.img = weapon.img 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) this.startRoll(rollData)
} else { } else {
ui.notifications.warn("Unable to find the relevant skill for weapon " + weapon.name) 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.roll = 11 + (Number(this.system.characteristics.omcv.value) || 0) + (Number(maneuver.system.omcv) || 0)
rollData.mode = "mentalmaneuver"
rollData.item = 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()
rollData.mode = "powerattack"
rollData.item = power
rollData.img = power.img
if (power.system.attackvalue == "ocv") {
rollData.item.roll = 11 + (Number(this.system.characteristics.ocv.value) || 0) + (Number(power.system.ocv) || 0)
rollData.subMode = "ocv"
} else {
rollData.item.roll = 11 + (Number(this.system.characteristics.omcv.value) || 0) + (Number(power.system.omcv) || 0)
rollData.subMode = "omcv"
}
this.startRoll(rollData)
} else {
ui.notifications.warn("Unable to find power " + power.name)
}
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async startRoll(rollData) { async startRoll(rollData) {
let rollDialog = await Hero6RollDialog.create(this, rollData) let rollDialog = await Hero6RollDialog.create(this, rollData)

View File

@ -54,6 +54,9 @@ export class Hero6Combat extends Combat {
/* -------------------------------------------- */ /* -------------------------------------------- */
constructor(data, context) { constructor(data, context) {
data.flags = { world: { turnData: { turnNumber: 0, segmentNumber: 12} } }
super(data, context); super(data, context);
this.turnNumber = 0; this.turnNumber = 0;
@ -280,12 +283,13 @@ export class Hero6Combat extends Combat {
/* -------------------------------------------- */ /* -------------------------------------------- */
async _onCreateEmbeddedDocuments(type, documents, result, options, userId) { async _onCreateDescendantDocuments(type, documents, result, options, userId) {
//console.log("Added...") //console.log("Added...")
if (game.user.isGM) {
await super._onCreateEmbeddedDocuments(type, documents, result, options, userId) await super._onCreateEmbeddedDocuments(type, documents, result, options, userId)
await this.rebuildInitiative() await this.rebuildInitiative()
} }
}
/* -------------------------------------------- /* --------------------------------------------
_onUpdate(changed, options, userId) { _onUpdate(changed, options, userId) {
}*/ }*/

View File

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

View File

@ -147,13 +147,13 @@ export class Hero6ItemSheet extends ItemSheet {
}); });
html.find('.item-skill-profiency').click(ev => { 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 => { 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 => { 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 => { html.find('.view-subitem').click(ev => {

View File

@ -5,7 +5,7 @@ export class Hero6RollDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async create(actor, rollData) { static async create(actor, rollData) {
let options = { classes: ["Hero6Dialog"], width: 460, height: 'fit-content', 'z-index': 99999 }; let options = { classes: ["Hero6Dialog"], width: 320, height: 'fit-content', 'z-index': 99999 };
let html = await renderTemplate('systems/fvtt-hero-system-6/templates/apps/roll-dialog-generic.hbs', rollData); let html = await renderTemplate('systems/fvtt-hero-system-6/templates/apps/roll-dialog-generic.hbs', rollData);
return new Hero6RollDialog(actor, rollData, html, options); return new Hero6RollDialog(actor, rollData, html, options);
@ -14,7 +14,7 @@ export class Hero6RollDialog extends Dialog {
/* -------------------------------------------- */ /* -------------------------------------------- */
constructor(actor, rollData, html, options, close = undefined) { constructor(actor, rollData, html, options, close = undefined) {
let conf = { let conf = {
title: (rollData.mode == "skill") ? "Skill" : "Attribute", title: "Roll window",
content: html, content: html,
buttons: { buttons: {
roll: { roll: {

View File

@ -43,6 +43,9 @@ export class Hero6Utility {
Handlebars.registerHelper('mul', function (a, b) { Handlebars.registerHelper('mul', function (a, b) {
return Number(a) * Number(b); return Number(a) * Number(b);
}) })
Handlebars.registerHelper('add', function (a, b) {
return (Number(a) || 0) + (Number(b) || 0);
})
Handlebars.registerHelper('locationLabel', function (key) { Handlebars.registerHelper('locationLabel', function (key) {
return __locationNames[key] return __locationNames[key]
}) })
@ -52,6 +55,9 @@ export class Hero6Utility {
} }
return false return false
}) })
Handlebars.registerHelper('fixNum', function (value) {
return Number(value) || 0
})
Handlebars.registerHelper('checkInit', function (value) { Handlebars.registerHelper('checkInit', function (value) {
let myValue = Number(value) || 0 let myValue = Number(value) || 0
return myValue > 0 return myValue > 0
@ -343,6 +349,7 @@ export class Hero6Utility {
// ability/save/size => 0 // ability/save/size => 0
let diceFormula = "3d6" let diceFormula = "3d6"
let target = 10 let target = 10
if (rollData.charac) { if (rollData.charac) {
target = rollData.charac.roll target = rollData.charac.roll
} }
@ -352,7 +359,7 @@ export class Hero6Utility {
target += rollData.bonusMalus target += rollData.bonusMalus
// Performs roll // Performs roll
console.log("Roll formula", diceFormula) //console.log("Roll formula", diceFormula)
let myRoll = rollData.roll let myRoll = rollData.roll
if (!myRoll) { // New rolls only of no rerolls if (!myRoll) { // New rolls only of no rerolls
myRoll = new Roll(diceFormula).roll({ async: false }) myRoll = new Roll(diceFormula).roll({ async: false })
@ -367,6 +374,7 @@ export class Hero6Utility {
if (rollData.result <= target) { if (rollData.result <= target) {
rollData.isSuccess = true rollData.isSuccess = true
} }
//console.log("Roll result", rollData)
if (myRoll.terms[0].total == 3) { // Always a success if (myRoll.terms[0].total == 3) { // Always a success
rollData.isSuccess = true rollData.isSuccess = true
} }

View File

@ -1 +1 @@
MANIFEST-000086 MANIFEST-000188

View File

@ -1,8 +1,8 @@
2023/08/24-15:57:43.426826 7fab4a7fc6c0 Recovering log #84 2023/10/04-21:41:44.140558 7f16d7fff6c0 Recovering log #186
2023/08/24-15:57:43.443955 7fab4a7fc6c0 Delete type=3 #82 2023/10/04-21:41:44.150660 7f16d7fff6c0 Delete type=3 #184
2023/08/24-15:57:43.444078 7fab4a7fc6c0 Delete type=0 #84 2023/10/04-21:41:44.150712 7f16d7fff6c0 Delete type=0 #186
2023/08/24-15:59:12.025522 7fab497fa6c0 Level-0 table #89: started 2023/10/04-21:47:02.531984 7f14567ef6c0 Level-0 table #191: started
2023/08/24-15:59:12.025554 7fab497fa6c0 Level-0 table #89: 0 bytes OK 2023/10/04-21:47:02.532010 7f14567ef6c0 Level-0 table #191: 0 bytes OK
2023/08/24-15:59:12.034739 7fab497fa6c0 Delete type=0 #87 2023/10/04-21:47:02.538823 7f14567ef6c0 Delete type=0 #189
2023/08/24-15:59:12.043415 7fab497fa6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.545067 7f14567ef6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)
2023/08/24-15:59:12.050747 7fab497fa6c0 Manual compaction at level-1 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.545092 7f14567ef6c0 Manual compaction at level-1 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/08/24-15:09:37.481365 7fab4affd6c0 Recovering log #80 2023/10/04-21:35:01.811691 7f16d6ffd6c0 Recovering log #182
2023/08/24-15:09:37.498302 7fab4affd6c0 Delete type=3 #78 2023/10/04-21:35:01.822017 7f16d6ffd6c0 Delete type=3 #180
2023/08/24-15:09:37.498430 7fab4affd6c0 Delete type=0 #80 2023/10/04-21:35:01.822072 7f16d6ffd6c0 Delete type=0 #182
2023/08/24-15:56:20.984607 7fab497fa6c0 Level-0 table #85: started 2023/10/04-21:41:38.795066 7f14567ef6c0 Level-0 table #187: started
2023/08/24-15:56:20.984638 7fab497fa6c0 Level-0 table #85: 0 bytes OK 2023/10/04-21:41:38.795089 7f14567ef6c0 Level-0 table #187: 0 bytes OK
2023/08/24-15:56:21.004254 7fab497fa6c0 Delete type=0 #83 2023/10/04-21:41:38.801689 7f14567ef6c0 Delete type=0 #185
2023/08/24-15:56:21.036183 7fab497fa6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.808479 7f14567ef6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)
2023/08/24-15:56:21.036267 7fab497fa6c0 Manual compaction at level-1 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.808530 7f14567ef6c0 Manual compaction at level-1 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
packs/equipment/000099.ldb Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000086 MANIFEST-000190

View File

@ -1,7 +1,8 @@
2023/08/24-15:57:43.392816 7fab4a7fc6c0 Recovering log #84 2023/10/04-21:41:44.100507 7f16d6ffd6c0 Recovering log #188
2023/08/24-15:57:43.403164 7fab4a7fc6c0 Delete type=3 #82 2023/10/04-21:41:44.111147 7f16d6ffd6c0 Delete type=3 #186
2023/08/24-15:57:43.403305 7fab4a7fc6c0 Delete type=0 #84 2023/10/04-21:41:44.111281 7f16d6ffd6c0 Delete type=0 #188
2023/08/24-15:59:11.970493 7fab497fa6c0 Level-0 table #89: started 2023/10/04-21:47:02.509785 7f14567ef6c0 Level-0 table #193: started
2023/08/24-15:59:11.975508 7fab497fa6c0 Level-0 table #89: 60925 bytes OK 2023/10/04-21:47:02.509815 7f14567ef6c0 Level-0 table #193: 0 bytes OK
2023/08/24-15:59:11.983493 7fab497fa6c0 Delete type=0 #87 2023/10/04-21:47:02.518200 7f14567ef6c0 Delete type=0 #191
2023/08/24-15:59:11.983701 7fab497fa6c0 Manual compaction at level-0 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.518694 7f14567ef6c0 Manual compaction at level-0 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)
2023/10/04-21:47:02.518773 7f14567ef6c0 Manual compaction at level-1 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,8 @@
2023/08/24-15:09:37.452353 7fab4a7fc6c0 Recovering log #80 2023/10/04-21:35:01.768747 7f16d7fff6c0 Recovering log #184
2023/08/24-15:09:37.462753 7fab4a7fc6c0 Delete type=3 #78 2023/10/04-21:35:01.779863 7f16d7fff6c0 Delete type=3 #182
2023/08/24-15:09:37.462881 7fab4a7fc6c0 Delete type=0 #80 2023/10/04-21:35:01.779921 7f16d7fff6c0 Delete type=0 #184
2023/08/24-15:56:20.961121 7fab497fa6c0 Level-0 table #85: started 2023/10/04-21:41:38.760705 7f14567ef6c0 Level-0 table #189: started
2023/08/24-15:56:20.961152 7fab497fa6c0 Level-0 table #85: 0 bytes OK 2023/10/04-21:41:38.760752 7f14567ef6c0 Level-0 table #189: 0 bytes OK
2023/08/24-15:56:20.975996 7fab497fa6c0 Delete type=0 #83 2023/10/04-21:41:38.767288 7f14567ef6c0 Delete type=0 #187
2023/08/24-15:56:20.984441 7fab497fa6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.774856 7f14567ef6c0 Manual compaction at level-0 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)
2023/10/04-21:41:38.781126 7f14567ef6c0 Manual compaction at level-1 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000078 MANIFEST-000182

View File

@ -1,8 +1,8 @@
2023/08/24-15:57:43.429828 7fab4affd6c0 Recovering log #76 2023/10/04-21:41:44.152237 7f16d6ffd6c0 Recovering log #180
2023/08/24-15:57:43.446896 7fab4affd6c0 Delete type=3 #74 2023/10/04-21:41:44.162524 7f16d6ffd6c0 Delete type=3 #178
2023/08/24-15:57:43.447172 7fab4affd6c0 Delete type=0 #76 2023/10/04-21:41:44.162593 7f16d6ffd6c0 Delete type=0 #180
2023/08/24-15:59:12.034912 7fab497fa6c0 Level-0 table #81: started 2023/10/04-21:47:02.538933 7f14567ef6c0 Level-0 table #185: started
2023/08/24-15:59:12.034942 7fab497fa6c0 Level-0 table #81: 0 bytes OK 2023/10/04-21:47:02.538963 7f14567ef6c0 Level-0 table #185: 0 bytes OK
2023/08/24-15:59:12.043249 7fab497fa6c0 Delete type=0 #79 2023/10/04-21:47:02.544945 7f14567ef6c0 Delete type=0 #183
2023/08/24-15:59:12.050726 7fab497fa6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.545085 7f14567ef6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)
2023/08/24-15:59:12.061166 7fab497fa6c0 Manual compaction at level-1 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.545108 7f14567ef6c0 Manual compaction at level-1 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/08/24-15:09:37.482662 7fab4a7fc6c0 Recovering log #72 2023/10/04-21:35:01.823989 7f16d7fff6c0 Recovering log #176
2023/08/24-15:09:37.501124 7fab4a7fc6c0 Delete type=3 #70 2023/10/04-21:35:01.834386 7f16d7fff6c0 Delete type=3 #174
2023/08/24-15:09:37.501198 7fab4a7fc6c0 Delete type=0 #72 2023/10/04-21:35:01.834682 7f16d7fff6c0 Delete type=0 #176
2023/08/24-15:56:21.025251 7fab497fa6c0 Level-0 table #77: started 2023/10/04-21:41:38.788643 7f14567ef6c0 Level-0 table #181: started
2023/08/24-15:56:21.025279 7fab497fa6c0 Level-0 table #77: 0 bytes OK 2023/10/04-21:41:38.788676 7f14567ef6c0 Level-0 table #181: 0 bytes OK
2023/08/24-15:56:21.035977 7fab497fa6c0 Delete type=0 #75 2023/10/04-21:41:38.794955 7f14567ef6c0 Delete type=0 #179
2023/08/24-15:56:21.036255 7fab497fa6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.808465 7f14567ef6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)
2023/08/24-15:56:21.036299 7fab497fa6c0 Manual compaction at level-1 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.808513 7f14567ef6c0 Manual compaction at level-1 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000086 MANIFEST-000188

View File

@ -1,8 +1,8 @@
2023/08/24-15:57:43.446370 7fab4b7fe6c0 Recovering log #84 2023/10/04-21:41:44.164948 7f16ecffa6c0 Recovering log #186
2023/08/24-15:57:43.467824 7fab4b7fe6c0 Delete type=3 #82 2023/10/04-21:41:44.175548 7f16ecffa6c0 Delete type=3 #184
2023/08/24-15:57:43.467983 7fab4b7fe6c0 Delete type=0 #84 2023/10/04-21:41:44.175604 7f16ecffa6c0 Delete type=0 #186
2023/08/24-15:59:12.043433 7fab497fa6c0 Level-0 table #89: started 2023/10/04-21:47:02.552360 7f14567ef6c0 Level-0 table #191: started
2023/08/24-15:59:12.043465 7fab497fa6c0 Level-0 table #89: 0 bytes OK 2023/10/04-21:47:02.552386 7f14567ef6c0 Level-0 table #191: 0 bytes OK
2023/08/24-15:59:12.050553 7fab497fa6c0 Delete type=0 #87 2023/10/04-21:47:02.560501 7f14567ef6c0 Delete type=0 #189
2023/08/24-15:59:12.061148 7fab497fa6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.560629 7f14567ef6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)
2023/08/24-15:59:12.061195 7fab497fa6c0 Manual compaction at level-1 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.560655 7f14567ef6c0 Manual compaction at level-1 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/08/24-15:09:37.503412 7fab49ffb6c0 Recovering log #80 2023/10/04-21:35:01.836873 7f16ecffa6c0 Recovering log #182
2023/08/24-15:09:37.513092 7fab49ffb6c0 Delete type=3 #78 2023/10/04-21:35:01.847899 7f16ecffa6c0 Delete type=3 #180
2023/08/24-15:09:37.513145 7fab49ffb6c0 Delete type=0 #80 2023/10/04-21:35:01.847965 7f16ecffa6c0 Delete type=0 #182
2023/08/24-15:56:21.036405 7fab497fa6c0 Level-0 table #85: started 2023/10/04-21:41:38.781263 7f14567ef6c0 Level-0 table #187: started
2023/08/24-15:56:21.036438 7fab497fa6c0 Level-0 table #85: 0 bytes OK 2023/10/04-21:41:38.781303 7f14567ef6c0 Level-0 table #187: 0 bytes OK
2023/08/24-15:56:21.043227 7fab497fa6c0 Delete type=0 #83 2023/10/04-21:41:38.788512 7f14567ef6c0 Delete type=0 #185
2023/08/24-15:56:21.050837 7fab497fa6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.808450 7f14567ef6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)
2023/08/24-15:56:21.050878 7fab497fa6c0 Manual compaction at level-1 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.808503 7f14567ef6c0 Manual compaction at level-1 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)

Binary file not shown.

BIN
packs/perks/MANIFEST-000188 Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000087 MANIFEST-000190

View File

@ -1,8 +1,8 @@
2023/08/24-15:57:43.407202 7fab49ffb6c0 Recovering log #85 2023/10/04-21:41:44.127784 7f16d77fe6c0 Recovering log #188
2023/08/24-15:57:43.427049 7fab49ffb6c0 Delete type=3 #83 2023/10/04-21:41:44.137990 7f16d77fe6c0 Delete type=3 #186
2023/08/24-15:57:43.427316 7fab49ffb6c0 Delete type=0 #85 2023/10/04-21:41:44.138069 7f16d77fe6c0 Delete type=0 #188
2023/08/24-15:59:12.015422 7fab497fa6c0 Level-0 table #90: started 2023/10/04-21:47:02.518821 7f14567ef6c0 Level-0 table #193: started
2023/08/24-15:59:12.015449 7fab497fa6c0 Level-0 table #90: 0 bytes OK 2023/10/04-21:47:02.518901 7f14567ef6c0 Level-0 table #193: 0 bytes OK
2023/08/24-15:59:12.025372 7fab497fa6c0 Delete type=0 #88 2023/10/04-21:47:02.525324 7f14567ef6c0 Delete type=0 #191
2023/08/24-15:59:12.034884 7fab497fa6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.545045 7f14567ef6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)
2023/08/24-15:59:12.043399 7fab497fa6c0 Manual compaction at level-1 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.545077 7f14567ef6c0 Manual compaction at level-1 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/08/24-15:09:37.467214 7fab4affd6c0 Recovering log #81 2023/10/04-21:35:01.795955 7f16d77fe6c0 Recovering log #184
2023/08/24-15:09:37.477623 7fab4affd6c0 Delete type=3 #79 2023/10/04-21:35:01.806044 7f16d77fe6c0 Delete type=3 #182
2023/08/24-15:09:37.477717 7fab4affd6c0 Delete type=0 #81 2023/10/04-21:35:01.806101 7f16d77fe6c0 Delete type=0 #184
2023/08/24-15:56:21.004538 7fab497fa6c0 Level-0 table #86: started 2023/10/04-21:41:38.774865 7f14567ef6c0 Level-0 table #189: started
2023/08/24-15:56:21.004618 7fab497fa6c0 Level-0 table #86: 0 bytes OK 2023/10/04-21:41:38.774887 7f14567ef6c0 Level-0 table #189: 0 bytes OK
2023/08/24-15:56:21.015089 7fab497fa6c0 Delete type=0 #84 2023/10/04-21:41:38.780982 7f14567ef6c0 Delete type=0 #187
2023/08/24-15:56:21.036218 7fab497fa6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.781151 7f14567ef6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)
2023/08/24-15:56:21.036277 7fab497fa6c0 Manual compaction at level-1 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.781172 7f14567ef6c0 Manual compaction at level-1 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000086 MANIFEST-000190

View File

@ -1,8 +1,8 @@
2023/08/24-15:57:43.407080 7fab4b7fe6c0 Recovering log #84 2023/10/04-21:41:44.114622 7f16ecffa6c0 Recovering log #188
2023/08/24-15:57:43.424160 7fab4b7fe6c0 Delete type=3 #82 2023/10/04-21:41:44.125734 7f16ecffa6c0 Delete type=3 #186
2023/08/24-15:57:43.424263 7fab4b7fe6c0 Delete type=0 #84 2023/10/04-21:41:44.125812 7f16ecffa6c0 Delete type=0 #188
2023/08/24-15:59:12.004782 7fab497fa6c0 Level-0 table #89: started 2023/10/04-21:47:02.525443 7f14567ef6c0 Level-0 table #193: started
2023/08/24-15:59:12.004875 7fab497fa6c0 Level-0 table #89: 0 bytes OK 2023/10/04-21:47:02.525470 7f14567ef6c0 Level-0 table #193: 0 bytes OK
2023/08/24-15:59:12.015289 7fab497fa6c0 Delete type=0 #87 2023/10/04-21:47:02.531866 7f14567ef6c0 Delete type=0 #191
2023/08/24-15:59:12.025509 7fab497fa6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.545057 7f14567ef6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)
2023/08/24-15:59:12.034900 7fab497fa6c0 Manual compaction at level-1 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.545100 7f14567ef6c0 Manual compaction at level-1 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/08/24-15:09:37.467211 7fab49ffb6c0 Recovering log #80 2023/10/04-21:35:01.783254 7f16ecffa6c0 Recovering log #184
2023/08/24-15:09:37.477838 7fab49ffb6c0 Delete type=3 #78 2023/10/04-21:35:01.792970 7f16ecffa6c0 Delete type=3 #182
2023/08/24-15:09:37.477960 7fab49ffb6c0 Delete type=0 #80 2023/10/04-21:35:01.793080 7f16ecffa6c0 Delete type=0 #184
2023/08/24-15:56:21.015243 7fab497fa6c0 Level-0 table #85: started 2023/10/04-21:41:38.767422 7f14567ef6c0 Level-0 table #189: started
2023/08/24-15:56:21.015280 7fab497fa6c0 Level-0 table #85: 0 bytes OK 2023/10/04-21:41:38.767446 7f14567ef6c0 Level-0 table #189: 0 bytes OK
2023/08/24-15:56:21.025027 7fab497fa6c0 Delete type=0 #83 2023/10/04-21:41:38.774734 7f14567ef6c0 Delete type=0 #187
2023/08/24-15:56:21.036234 7fab497fa6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.781109 7f14567ef6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)
2023/08/24-15:56:21.036287 7fab497fa6c0 Manual compaction at level-1 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.781182 7f14567ef6c0 Manual compaction at level-1 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000086 MANIFEST-000188

View File

@ -1,8 +1,8 @@
2023/08/24-15:57:43.449295 7fab49ffb6c0 Recovering log #84 2023/10/04-21:41:44.177511 7f16d77fe6c0 Recovering log #186
2023/08/24-15:57:43.472616 7fab49ffb6c0 Delete type=3 #82 2023/10/04-21:41:44.187706 7f16d77fe6c0 Delete type=3 #184
2023/08/24-15:57:43.472750 7fab49ffb6c0 Delete type=0 #84 2023/10/04-21:41:44.187791 7f16d77fe6c0 Delete type=0 #186
2023/08/24-15:59:12.050764 7fab497fa6c0 Level-0 table #89: started 2023/10/04-21:47:02.545189 7f14567ef6c0 Level-0 table #191: started
2023/08/24-15:59:12.050797 7fab497fa6c0 Level-0 table #89: 0 bytes OK 2023/10/04-21:47:02.545213 7f14567ef6c0 Level-0 table #191: 0 bytes OK
2023/08/24-15:59:12.061012 7fab497fa6c0 Delete type=0 #87 2023/10/04-21:47:02.552254 7f14567ef6c0 Delete type=0 #189
2023/08/24-15:59:12.061182 7fab497fa6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.560616 7f14567ef6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)
2023/08/24-15:59:12.061222 7fab497fa6c0 Manual compaction at level-1 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end) 2023/10/04-21:47:02.560646 7f14567ef6c0 Manual compaction at level-1 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2023/08/24-15:09:37.503990 7fab4a7fc6c0 Recovering log #80 2023/10/04-21:35:01.850710 7f16d77fe6c0 Recovering log #182
2023/08/24-15:09:37.556979 7fab4a7fc6c0 Delete type=3 #78 2023/10/04-21:35:01.861789 7f16d77fe6c0 Delete type=3 #180
2023/08/24-15:09:37.557041 7fab4a7fc6c0 Delete type=0 #80 2023/10/04-21:35:01.861973 7f16d77fe6c0 Delete type=0 #182
2023/08/24-15:56:21.043382 7fab497fa6c0 Level-0 table #85: started 2023/10/04-21:41:38.801785 7f14567ef6c0 Level-0 table #187: started
2023/08/24-15:56:21.043416 7fab497fa6c0 Level-0 table #85: 0 bytes OK 2023/10/04-21:41:38.801808 7f14567ef6c0 Level-0 table #187: 0 bytes OK
2023/08/24-15:56:21.050692 7fab497fa6c0 Delete type=0 #83 2023/10/04-21:41:38.808336 7f14567ef6c0 Delete type=0 #185
2023/08/24-15:56:21.050866 7fab497fa6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.808493 7f14567ef6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)
2023/08/24-15:56:21.050889 7fab497fa6c0 Manual compaction at level-1 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end) 2023/10/04-21:41:38.808522 7f14567ef6c0 Manual compaction at level-1 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -649,6 +649,11 @@ ul, li {
align-content: center; align-content: center;
} }
.content-center {
align-content: center;
text-align: center;
}
.attribut-value, .attribut-value,
.carac-value { .carac-value {
flex-grow: 0; flex-grow: 0;
@ -816,10 +821,13 @@ ul, li {
.roll-dialog-header { .roll-dialog-header {
height: 52px; height: 52px;
} }
.dialog-roll-title {
margin-left: 8px;
}
.actor-icon { .actor-icon {
float: left; float: left;
width: 48px; width: 48px;
max-width: 48px;
height: 48px; height: 48px;
padding: 2px 6px 2px 2px; padding: 2px 6px 2px 2px;
} }
@ -1390,6 +1398,9 @@ Focus FOC: #ff0084
.item-control-end { .item-control-end {
align-self: flex-end; align-self: flex-end;
} }
.margin-space-4 {
margin-left: 4px;
}
.margin-item-list { .margin-item-list {
margin-top: 4px; margin-top: 4px;
} }
@ -1436,3 +1447,6 @@ Focus FOC: #ff0084
display: none; display: none;
visibility: hidden; visibility: hidden;
} }
.compendium .directory-list .directory-item .folder-header h3 {
color:#000
}

View File

@ -5,11 +5,11 @@
"flags": {} "flags": {}
} }
], ],
"description": "Hero System v6 for FoundryVTT (Official)", "description": "Hero System 6E for FoundryVTT (Official)",
"esmodules": [ "esmodules": [
"modules/hero6-main.js" "modules/hero6-main.js"
], ],
"gridDistance": 5, "gridDistance": 2,
"gridUnits": "m", "gridUnits": "m",
"languages": [ "languages": [
{ {
@ -85,21 +85,21 @@
"flags": {} "flags": {}
} }
], ],
"primaryTokenAttribute": "secondary.hp", "primaryTokenAttribute": "characteristics.body",
"secondaryTokenAttribute": "secondary.effort", "secondaryTokenAttribute": "characteristics.end",
"socket": true, "socket": true,
"styles": [ "styles": [
"styles/simple.css" "styles/simple.css"
], ],
"version": "11.0.10", "version": "11.0.23",
"compatibility": { "compatibility": {
"minimum": "11", "minimum": "11",
"verified": "11" "verified": "11"
}, },
"title": "Hero System v6 for FoundrtVTT (Official)", "title": "Hero System 6E Basic (Official)",
"manifest": "https://www.uberwald.me/gitea/uberwald/fvtt-hero-system-6/raw/branch/main/system.json", "manifest": "https://www.uberwald.me/gitea/public/fvtt-hero-system-6/raw/branch/master/system.json",
"download": "https://www.uberwald.me/gitea/uberwald/fvtt-hero-system-6/archive/fvtt-hero-system-6-v11.0.10.zip", "download": "https://www.uberwald.me/gitea/public/fvtt-hero-system-6/archive/fvtt-hero-system-6-v11.0.23.zip",
"url": "https://www.uberwald.me/gitea/uberwald/", "url": "https://www.uberwald.me/public/uberwald/",
"background": "systems/fvtt-hero-system-6/images/ui/hero_foundry_cover.webp", "background": "systems/fvtt-hero-system-6/images/ui/hero_foundry_cover.webp",
"id": "fvtt-hero-system-6" "id": "fvtt-hero-system-6"
} }

View File

@ -354,9 +354,12 @@
"levels": 0, "levels": 0,
"quantity": 1, "quantity": 1,
"range": "", "range": "",
"damageeffect": "normal",
"damage": "", "damage": "",
"stunx": 0,
"endurance": 0, "endurance": 0,
"hasroll": false, "hasroll": false,
"attackvalue": "ocv",
"roll": 0, "roll": 0,
"computebody": false, "computebody": false,
"haseffectroll": false, "haseffectroll": false,
@ -375,6 +378,8 @@
"pha": "", "pha": "",
"ocv": "", "ocv": "",
"dcv" : "", "dcv" : "",
"omcv": "",
"dmcv" : "",
"isstock": false, "isstock": false,
"active": false "active": false
}, },

View File

@ -149,21 +149,32 @@
</li> </li>
</ul> </ul>
{{#each maneuvers as |mlist key|}} {{#each maneuvers as |mlist mtype|}}
<ul class="stat-list alternate-list"> <ul class="stat-list alternate-list">
<li class="item flexrow list-item items-title-bg"> <li class="item flexrow list-item items-title-bg">
<span class="item-field-label-long-img"> <span class="item-field-label-long-img">
<label class="">{{upperFirst key}} Maneuver</label> <label class="">{{upperFirst mtype}} Maneuver</label>
</span> </span>
<span class="item-field-label-very-short"> <span class="item-field-label-very-short">
<label class="short-label">PHA</label> <label class="short-label">PHA</label>
</span> </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"> <span class="item-field-label-very-short">
<label class="short-label">OCV</label> <label class="short-label">OCV</label>
</span> </span>
<span class="item-field-label-very-short"> <span class="item-field-label-very-short">
<label class="short-label">DCV</label> <label class="short-label">DCV</label>
</span> </span>
{{/if}}
<span class="item-field-text-long"> <span class="item-field-text-long">
<label class="short-label">Effects</label> <label class="short-label">Effects</label>
</span> </span>
@ -171,13 +182,21 @@
{{#each mlist as |maneuver key|}} {{#each mlist as |maneuver key|}}
<li class="item flexrow list-item list-item-shadow " data-item-id="{{maneuver._id}}"> <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" <a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{maneuver.img}}" /></a> src="{{maneuver.img}}" />
<a class="roll-item"><i class="fas fa-dice"></i></a><span class="item-field-label-long">{{maneuver.name}} </a>
<span class="item-field-label-long">
<a class="roll-item"><i class="fas fa-dice"></i></a>
{{maneuver.name}}
</span> </span>
<span class="item-field-label-very-short">{{maneuver.system.pha}}</span> <span class="item-field-label-very-short content-center">{{maneuver.system.pha}}</span>
<span class="item-field-label-very-short">{{maneuver.system.ocv}}</span> {{#if (eq ../mtype "mental")}}
<span class="item-field-label-very-short">{{maneuver.system.dcv}}</span> <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}} <span class="item-field-text-long">{{maneuver.system.effects}}
{{#if maneuver.system.haseffectroll}} {{#if maneuver.system.haseffectroll}}
@ -241,9 +260,9 @@
<li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}"> <li class="item flexrow list-item list-item-shadow" data-charac-key="{{key}}">
<span class="item-field-label-long">{{char.label}}</span> <span class="item-field-label-long">{{char.label}}</span>
<input type="text" class="item-field-label-short update-field" <input type="text" class="item-field-label-short update-field"
data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" /> data-field-name="system.characteristics.{{key}}.max" value="{{char.max}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.characteristics.{{key}}.damage" <input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.{{key}}.value"
value="{{char.damage}}" data-dtype="Number" /> value="{{char.value}}" data-dtype="Number" />
</li> </li>
{{/if}} {{/if}}
{{/each}} {{/each}}
@ -407,7 +426,7 @@
<div class="charac-item"> <div class="charac-item">
<ul> <ul>
<li class="item flexrow list-item items-title-bg"> <li class="item flexrow list-item items-title-bg">
<span class="item-field-label-medium"> <span class="item-field-label-short">
<label class="">Value</label> <label class="">Value</label>
</span> </span>
<span class="item-field-label-medium"> <span class="item-field-label-medium">
@ -556,11 +575,12 @@
</span> </span>
</li> </li>
{{#each allmaneuvers as |maneuver key|}} {{#each allmaneuvers as |maneuver key|}}
{{#if (ne maneuver.system.maneuvertype "mental")}}
<div class="{{#if maneuver.system.isstock}}maneuver-list maneuver-is-stock{{/if}}"> <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}}"> <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" <a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{maneuver.img}}" /></a> 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.pha}}</span>
<span class="item-field-label-short">{{maneuver.system.ocv}}</span> <span class="item-field-label-short">{{maneuver.system.ocv}}</span>
@ -574,8 +594,56 @@
</div> </div>
</li> </li>
</div> </div>
{{/if}}
{{/each}} {{/each}}
</ul> </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> </div>
{{!-- Powers Tab --}} {{!-- Powers Tab --}}
@ -601,8 +669,8 @@
<span class="item-field-label-short"> <span class="item-field-label-short">
<label class="item-field-label-short">Roll</label> <label class="item-field-label-short">Roll</label>
</span> </span>
<span class="item-field-label-medium"> <span class="item-field-label-short">
<label class="item-field-label-medium">END</label> <label class="item-field-label-short">END</label>
</span> </span>
</li> </li>
{{#each powers as |power key|}} {{#each powers as |power key|}}
@ -610,7 +678,16 @@
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img" <a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{power.img}}" /></a> src="{{power.img}}" /></a>
<span class="item-field-label-short">{{power.system.cost}}</span> <span class="item-field-label-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> <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-long2">{{power.system.displayname}}</span>
<span class="item-field-label-medium"><a class="roll-damage" data-type="power"><i <span class="item-field-label-medium"><a class="roll-damage" data-type="power"><i
class="fas fa-dice"></i>{{power.system.damage}}</a></span> class="fas fa-dice"></i>{{power.system.damage}}</a></span>
@ -620,7 +697,7 @@
{{else}} {{else}}
<span class="item-field-label-short">&nbsp;</span> <span class="item-field-label-short">&nbsp;</span>
{{/if}} {{/if}}
<span class="item-field-label-medium">{{power.system.endurance}}</span> <span class="item-field-label-short">{{power.system.endurance}}</span>
<div class="item-filler">&nbsp;</div> <div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed"> <div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>

View File

@ -32,8 +32,6 @@
</a> </a>
{{/if}} {{/if}}
{{log combat.flags}}
{{#if combatCount}} {{#if combatCount}}
{{#if combat.round}} {{#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>-->

View File

@ -1,9 +1,11 @@
<form class="skill-roll-dialog"> <form class="skill-roll-dialog">
<header class="roll-dialog-header"> <header class="roll-dialog-header">
<div class="flexrow">
{{#if img}} {{#if img}}
<img class="actor-icon" src="{{img}}" data-edit="img" title="{{name}}" /> <img class="actor-icon" src="{{img}}" data-edit="img" title="{{name}}" />
{{/if}} {{/if}}
<h1 class="dialog-roll-title roll-dialog-header">{{title}}</h1> <h2 class="dialog-roll-title roll-dialog-header">{{title}}</h2>
</div>
</header> </header>
<div class="flexcol"> <div class="flexcol">
@ -15,6 +17,28 @@
</div> </div>
{{/if}} {{/if}}
{{#if (eq subMode "ocv")}}
<div class="flexrow">
<span class="item-field-label-long margin-item-list">OCV : </span>
<span class="item-field-label-medium margin-item-list">{{characteristics.ocv.value}}</span>
</div>
<div class="flexrow">
<span class="item-field-label-long margin-item-list">{{upperFirst item.type}} OCV : </span>
<span class="item-field-label-medium margin-item-list">{{fixNum item.system.ocv}}</span>
</div>
{{/if}}
{{#if (eq subMode "omcv")}}
<div class="flexrow">
<span class="item-field-label-long margin-item-list">OMCV : </span>
<span class="item-field-label-medium margin-item-list">{{characteristics.omcv.value}}</span>
</div>
<div class="flexrow">
<span class="item-field-label-long margin-item-list">{{upperFirst item.type}} OMCV : </span>
<span class="item-field-label-medium margin-item-list">{{fixNum item.system.omcv}}</span>
</div>
{{/if}}
{{#if item}} {{#if item}}
<div class="flexrow"> <div class="flexrow">
<span class="item-field-label-long margin-item-list">{{upperFirst item.type}} - {{upperFirst item.name}}</span> <span class="item-field-label-long margin-item-list">{{upperFirst item.type}} - {{upperFirst item.name}}</span>

View File

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

View File

@ -7,21 +7,34 @@
<hr> <hr>
{{#if img}}
<div >
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
</div>
{{/if}}
<div class="flexcol"> <div class="flexcol">
</div> </div>
<div> <div>
<ul> <ul>
<li>Name : {{title}}</li> <li>Name : {{title}}</li>
<li>Damage Effect: {{upperFirst item.system.damageeffect}}</li>
<li>Damage formula : {{diceFormula}}</li> <li>Damage formula : {{diceFormula}}</li>
<li><strong>TOTAL : {{result}}</strong></li> <li><strong>Total formula : {{result}}</strong></li>
{{#if (eq item.system.damageeffect "normal")}}
<li><strong>BODY : {{bodyValue}}</strong></li> <li><strong>BODY : {{bodyValue}}</strong></li>
{{/if}}
{{#if (eq item.system.damageeffect "killing")}}
<li><strong>1d3 result + STUNx : {{killingMultiplier}} + {{item.system.stunx}} = {{add killingMultiplier item.system.stunx}}</strong></li>
<li><strong>STUN : {{stunValue}}</strong></li>
<li><strong>BODY : {{result}}</strong></li>
<li><strong>Penetrating 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 : {{bodyValue}}</strong></li>
{{/if}}
</ul> </ul>
</div> </div>

View File

@ -7,12 +7,6 @@
<hr> <hr>
{{#if img}}
<div >
<img class="chat-icon" src="{{img}}" alt="{{name}}" />
</div>
{{/if}}
<div class="flexcol"> <div class="flexcol">
</div> </div>
@ -23,6 +17,21 @@
</li> </li>
{{/if}} {{/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}} {{#if rollSource}}
<li>Roll : {{rollSource}}</li> <li>Roll : {{rollSource}}</li>
{{/if}} {{/if}}
@ -48,7 +57,7 @@
<li><strong>TOTAL : {{result}}</strong> <li><strong>TOTAL : {{result}}</strong>
{{#if (exists margin)}} {{#if (exists margin)}}
({{#if isSuccess}}Success!!{{else}}Failure!{{/if}}) (<strong>{{#if isSuccess}}Success!!{{else}}Failure!{{/if}}</strong>)
{{/if}} {{/if}}
</li> </li>
@ -57,8 +66,16 @@
{{/if}} {{/if}}
{{#if (exists margin)}} {{#if (exists margin)}}
{{#if (eq subMode "normal")}}
<li><strong>Margin : {{margin}}</strong> <li><strong>Margin : {{margin}}</strong>
{{/if}} {{/if}}
{{#if (eq subMode "ocv")}}
<li><strong>Margin (DCV Hit): {{margin}}</strong>
{{/if}}
{{#if (eq subMode "omcv")}}
<li><strong>Margin (DMCV Hit): {{margin}}</strong>
{{/if}}
{{/if}}
</ul> </ul>
</div> </div>

View File

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

View File

@ -37,14 +37,21 @@
<input type="text" class="item-field-label-medium" name="system.pha" value="{{system.pha}}" data-dtype="String"/> <input type="text" class="item-field-label-medium" name="system.pha" value="{{system.pha}}" data-dtype="String"/>
</li> </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> <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"/> <input type="text" class="item-field-label-medium" name="system.ocv" value="{{system.ocv}}" data-dtype="String"/>
</li> </li>
<li class="flexrow"><label class="item-field-label-medium">DCV</label> <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"/> <input type="text" class="item-field-label-medium" name="system.dcv" value="{{system.dcv}}" data-dtype="String"/>
</li> </li>
{{/if}}
<li class="flexrow"><label class="item-field-label-medium">Effects</label> <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"/> <input type="text" class="item-field-label-long" name="system.effects" value="{{system.effects}}" data-dtype="String"/>
</li> </li>

View File

@ -52,22 +52,21 @@
data-dtype="Number"/> data-dtype="Number"/>
</li> </li>
<li class="flexrow"><label class="item-field-label-long">Familiarity only</label> <li class="flexrow"><label class="item-field-label-long">Proficency</label>
<input type="checkbox" class="item-field-label-medium item-skill-familiarity" name="system.skillfamiliarity" {{checked system.skillfamiliarity}} <input type="checkbox" class="item-field-label-medium item-skill-profiency" name="system.skillprofiency" {{checked system.skillprofiency}}
{{#if (or system.skillprofiency system.skilllevelonly)}}disabled{{/if}} data-dtype="Number"/>
</li>
{{#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"/> data-dtype="Number"/>
</li> </li>
{{#if system.skillfamiliarity}}
<li class="flexrow"><label class="item-field-label-long">Everyman skill</label> <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"/> <input type="checkbox" class="item-field-label-medium item-skill-everyman" name="system.skilleveryman" {{checked system.skilleveryman}} data-dtype="Number"/>
</li> </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")}} {{#if (ne system.skilltype "combat")}}
<li class="flexrow"><label class="item-field-label-long">Levels Cost</label> <li class="flexrow"><label class="item-field-label-long">Levels Cost</label>

View File

@ -39,7 +39,7 @@
<label class="item-field-label-very-short">rMod</label> <label class="item-field-label-very-short">rMod</label>
</span> </span>
<span class="item-field-label-very-short"> <span class="item-field-label-very-short">
<label class="item-field-label-very-short">&nbsp;</label> <label class="item-field-label-very-short">Rng</label>
</span> </span>
<span class="item-field-label-very-short"> <span class="item-field-label-very-short">
<label class="item-field-label-very-short">&nbsp;</label> <label class="item-field-label-very-short">&nbsp;</label>

View File

@ -1,9 +1,15 @@
<li class="item flexrow list-item list-item-shadow" data-item-id="{{equip._id}}"> <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> <a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img" src="{{equip.img}}" /></a>
<span class="item-field-label-very-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-long2">{{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>
{{#if (or (eq equip.system.subtype "money") (eq equip.system.subtype "equipment"))}} {{#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>
@ -14,27 +20,27 @@
{{/if}} {{/if}}
{{#if (eq equip.system.subtype "weapon")}} {{#if (eq equip.system.subtype "weapon")}}
<span class="item-field-label-very-short"><label>{{equip.system.ocv}}</label> </span> <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"><label>{{equip.system.omcv}}</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"><label>{{equip.system.rmod}}</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"><label>&nbsp;</label> </span> <span class="item-field-label-very-short content-center"><label>{{equip.system.range}}</label> </span>
<span class="item-field-label-very-short"><label>&nbsp;</label> </span> <span class="item-field-label-very-short content-center"><label>&nbsp;</label> </span>
{{/if}} {{/if}}
{{#if (eq equip.system.subtype "shield")}} {{#if (eq equip.system.subtype "shield")}}
<span class="item-field-label-very-short"><label>{{equip.system.ocv}}</label> </span> <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"><label>{{equip.system.omcv}}</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"><label>{{equip.system.dcv}}</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"><label>{{equip.system.dmcv}}</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"><label>&nbsp;</label> </span> <span class="item-field-label-very-short content-center"><label>&nbsp;</label> </span>
{{/if}} {{/if}}
{{#if (eq equip.system.subtype "armor")}} {{#if (eq equip.system.subtype "armor")}}
<span class="item-field-label-very-short"><label>{{equip.system.pd}}</label> </span> <span class="item-field-label-very-short content-center"><label>{{equip.system.pd}}</label> </span>
<span class="item-field-label-very-short"><label>{{equip.system.ed}}</label> </span> <span class="item-field-label-very-short content-center"><label>{{equip.system.ed}}</label> </span>
<span class="item-field-label-very-short"><label>{{equip.system.rpd}}</label> </span> <span class="item-field-label-very-short content-center"><label>{{equip.system.rpd}}</label> </span>
<span class="item-field-label-very-short"><label>{{equip.system.red}}</label> </span> <span class="item-field-label-very-short content-center"><label>{{equip.system.red}}</label> </span>
<span class="item-field-label-very-short"><label>{{equip.system.dcv}}</label> </span> <span class="item-field-label-very-short content-center"><label>{{numberFormat (fixNum equip.system.dcv) decimals=0 sign=true}}</label> </span>
{{/if}} {{/if}}
<span class="item-field-label-long2"><label>{{equip.system.displayname}} <span class="item-field-label-long2"><label>{{equip.system.displayname}}
@ -55,11 +61,11 @@
<span class="item-field-label-short">&nbsp;</span> <span class="item-field-label-short">&nbsp;</span>
{{/if}} {{/if}}
<span class="item-field-label-very-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-very-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-controls item-controls-fixed"> <div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>

View File

@ -1,9 +1,9 @@
<li class="item stat flexrow list-item list-item-shadow" data-attr-key="{{key}}"> <li class="item stat flexrow list-item list-item-shadow" data-attr-key="{{key}}">
<input type="text" class="item-field-label-medium" name="system.characteristics.{{key}}.value" <input type="text" class="item-field-label-short" name="system.characteristics.{{key}}.value"
value="{{charac.value}}" data-dtype="Number" /> value="{{charac.value}}" data-dtype="Number" />
<span class="item-field-label-medium" name="{{key}}"> <span class="item-field-label-medium margin-space-4" name="{{key}}">
<h4 class="item-field-label-medium margin-item-list">{{charac.label}}</a></h4> <h4 class="item-field-label-medium margin-item-list">{{charac.label}}</a></h4>
</span> </span>

View File

@ -18,6 +18,18 @@
</select> </select>
</li> </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> <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> <label class="item-field-label-medium"><input type="checkbox" name="system.senseaffecting" {{checked system.senseaffecting}}/></label>
</li> </li>
@ -26,9 +38,27 @@
<li class="flexrow"><label class="item-field-label-long">Range</label> <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"/> <input type="text" class="item-field-label-medium" name="system.range" value="{{system.range}}" data-dtype="String"/>
</li> </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> <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"/> <input type="text" class="item-field-label-medium" name="system.damage" value="{{system.damage}}" data-dtype="String"/>
</li> </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}} {{/if}}
<li class="flexrow"><label class="item-field-label-long">Endurance</label> <li class="flexrow"><label class="item-field-label-long">Endurance</label>