Compare commits

..

29 Commits

Author SHA1 Message Date
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
89 changed files with 551 additions and 293 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.

33
changelog.md Normal file
View File

@ -0,0 +1,33 @@
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,13 +223,25 @@ 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") {
if (Number(maneuver.system.ocv)) { maneuver.roll = 11 + (Number(this.system.characteristics.omcv.value) || 0)
maneuver.roll += Number(maneuver.system.ocv) subMode = "omcv"
if (Number(maneuver.system.omcv)) {
maneuver.roll += (Number(maneuver.system.omcv) || 0)
} else {
maneuver.noOMCV = true
}
} else { } else {
maneuver.noOCV = true maneuver.roll = 11 + (Number(this.system.characteristics.ocv.value) || 0)
subMode = "ocv"
if (Number(maneuver.system.ocv)) {
maneuver.roll += (Number(maneuver.system.ocv) || 0)
} else {
maneuver.noOCV = true
}
} }
return subMode
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
@ -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,11 +721,20 @@ 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({
@ -716,6 +742,11 @@ export class Hero6Actor extends Actor {
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,57 @@ 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.roll = 11 + (Number(this.system.characteristics.ocv.value) || 0) + (Number(weapon.system.ocv) || 0)
skill = duplicate(skill) rollData.subMode = "ocv"
Hero6Utility.updateSkill(skill) rollData.mode = "weapon"
let abilityKey = skill.system.ability rollData.item = weapon
let rollData = this.getCommonRollData(abilityKey) rollData.img = weapon.img
rollData.mode = "weapon" this.startRoll(rollData)
rollData.skill = skill } else {
rollData.weapon = weapon ui.notifications.warn("Unable to find the weapon " + weapon.name)
rollData.img = weapon.img }
if (!rollData.forceDisadvantage) { // This is an attack, check if disadvantaged }
rollData.forceDisadvantage = this.isAttackDisadvantage() /* -------------------------------------------- */
} rollMentalManeuver(maneuverId) {
/*if (rollData.weapon.system.isranged && rollData.tokensDistance > Hero6Utility.getWeaponMaxRange(rollData.weapon) ) { let maneuver = this.items.get(maneuverId)
ui.notifications.warn(`Your target is out of range of your weapon (max: ${Hero6Utility.getWeaponMaxRange(rollData.weapon)} - current : ${rollData.tokensDistance})` ) if (maneuver) {
return maneuver = duplicate(maneuver)
}*/ let rollData = this.getCommonRollData()
this.startRoll(rollData) rollData.roll = 11 + (Number(this.system.characteristics.omcv.value) || 0) + (Number(maneuver.system.omcv) || 0)
} else { rollData.mode = "mentalmaneuver"
ui.notifications.warn("Unable to find the relevant skill for weapon " + weapon.name) 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()
if (power.system.attackvalue == "ocv") {
rollData.roll = 11 + (Number(this.system.characteristics.ocv.value) || 0) + (Number(power.system.ocv) || 0)
rollData.subMode = "ocv"
} else {
rollData.roll = 11 + (Number(this.system.characteristics.omcv.value) || 0) + (Number(power.system.omcv) || 0)
rollData.subMode = "omcv"
}
rollData.mode = "powerattack"
rollData.item = power
rollData.img = power.img
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...")
await super._onCreateEmbeddedDocuments(type, documents, result, options, userId) if (game.user.isGM) {
await this.rebuildInitiative() await super._onCreateEmbeddedDocuments(type, documents, result, options, userId)
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
} }

View File

@ -1 +1 @@
MANIFEST-000090 MANIFEST-000156

View File

@ -1,8 +1,8 @@
2023/08/24-18:30:54.212207 7fda7abfd6c0 Recovering log #88 2023/08/29-16:25:42.990569 7f2deaffd6c0 Recovering log #154
2023/08/24-18:30:54.368586 7fda7abfd6c0 Delete type=3 #86 2023/08/29-16:25:43.182272 7f2deaffd6c0 Delete type=3 #152
2023/08/24-18:30:54.368669 7fda7abfd6c0 Delete type=0 #88 2023/08/29-16:25:43.182363 7f2deaffd6c0 Delete type=0 #154
2023/08/24-18:45:24.019963 7fda79bfb6c0 Level-0 table #93: started 2023/08/29-16:40:28.792648 7f2b69bff6c0 Level-0 table #159: started
2023/08/24-18:45:24.020009 7fda79bfb6c0 Level-0 table #93: 0 bytes OK 2023/08/29-16:40:28.792681 7f2b69bff6c0 Level-0 table #159: 0 bytes OK
2023/08/24-18:45:24.029692 7fda79bfb6c0 Delete type=0 #91 2023/08/29-16:40:28.800879 7f2b69bff6c0 Delete type=0 #157
2023/08/24-18:45:24.041058 7fda79bfb6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.808756 7f2b69bff6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)
2023/08/24-18:45:24.041153 7fda79bfb6c0 Manual compaction at level-1 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.808800 7f2b69bff6c0 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:57:43.426826 7fab4a7fc6c0 Recovering log #84 2023/08/29-16:09:59.520040 7f2deb7fe6c0 Recovering log #150
2023/08/24-15:57:43.443955 7fab4a7fc6c0 Delete type=3 #82 2023/08/29-16:09:59.534549 7f2deb7fe6c0 Delete type=3 #148
2023/08/24-15:57:43.444078 7fab4a7fc6c0 Delete type=0 #84 2023/08/29-16:09:59.534629 7f2deb7fe6c0 Delete type=0 #150
2023/08/24-15:59:12.025522 7fab497fa6c0 Level-0 table #89: started 2023/08/29-16:24:59.318786 7f2b69bff6c0 Level-0 table #155: started
2023/08/24-15:59:12.025554 7fab497fa6c0 Level-0 table #89: 0 bytes OK 2023/08/29-16:24:59.318844 7f2b69bff6c0 Level-0 table #155: 0 bytes OK
2023/08/24-15:59:12.034739 7fab497fa6c0 Delete type=0 #87 2023/08/29-16:24:59.325770 7f2b69bff6c0 Delete type=0 #153
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/08/29-16:24:59.342348 7f2b69bff6c0 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/08/29-16:24:59.342392 7f2b69bff6c0 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-000090 MANIFEST-000158

View File

@ -1,15 +1,8 @@
2023/08/24-18:30:54.111924 7fda7abfd6c0 Recovering log #88 2023/08/29-16:25:42.891384 7f2deb7fe6c0 Recovering log #156
2023/08/24-18:30:54.191305 7fda7abfd6c0 Delete type=3 #86 2023/08/29-16:25:42.986762 7f2deb7fe6c0 Delete type=3 #154
2023/08/24-18:30:54.191378 7fda7abfd6c0 Delete type=0 #88 2023/08/29-16:25:42.986861 7f2deb7fe6c0 Delete type=0 #156
2023/08/24-18:45:23.947196 7fda79bfb6c0 Level-0 table #93: started 2023/08/29-16:40:28.741963 7f2b69bff6c0 Level-0 table #161: started
2023/08/24-18:45:23.953189 7fda79bfb6c0 Level-0 table #93: 61436 bytes OK 2023/08/29-16:40:28.742013 7f2b69bff6c0 Level-0 table #161: 0 bytes OK
2023/08/24-18:45:23.962337 7fda79bfb6c0 Delete type=0 #91 2023/08/29-16:40:28.749774 7f2b69bff6c0 Delete type=0 #159
2023/08/24-18:45:23.977821 7fda79bfb6c0 Manual compaction at level-0 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.776172 7f2b69bff6c0 Manual compaction at level-0 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)
2023/08/24-18:45:23.989245 7fda79bfb6c0 Manual compaction at level-1 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at '!items!zFQRJSrYV4E12NgW' @ 201 : 1 2023/08/29-16:40:28.776271 7f2b69bff6c0 Manual compaction at level-1 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)
2023/08/24-18:45:23.989266 7fda79bfb6c0 Compacting 1@1 + 1@2 files
2023/08/24-18:45:23.995572 7fda79bfb6c0 Generated table #94@1: 125 keys, 61436 bytes
2023/08/24-18:45:23.995615 7fda79bfb6c0 Compacted 1@1 + 1@2 files => 61436 bytes
2023/08/24-18:45:24.003268 7fda79bfb6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2023/08/24-18:45:24.003529 7fda79bfb6c0 Delete type=2 #89
2023/08/24-18:45:24.003780 7fda79bfb6c0 Delete type=2 #93
2023/08/24-18:45:24.019931 7fda79bfb6c0 Manual compaction at level-1 from '!items!zFQRJSrYV4E12NgW' @ 201 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,8 @@
2023/08/24-15:57:43.392816 7fab4a7fc6c0 Recovering log #84 2023/08/29-16:09:59.496232 7f2dea7fc6c0 Recovering log #152
2023/08/24-15:57:43.403164 7fab4a7fc6c0 Delete type=3 #82 2023/08/29-16:09:59.514894 7f2dea7fc6c0 Delete type=3 #150
2023/08/24-15:57:43.403305 7fab4a7fc6c0 Delete type=0 #84 2023/08/29-16:09:59.515025 7f2dea7fc6c0 Delete type=0 #152
2023/08/24-15:59:11.970493 7fab497fa6c0 Level-0 table #89: started 2023/08/29-16:24:59.281362 7f2b69bff6c0 Level-0 table #157: started
2023/08/24-15:59:11.975508 7fab497fa6c0 Level-0 table #89: 60925 bytes OK 2023/08/29-16:24:59.281398 7f2b69bff6c0 Level-0 table #157: 0 bytes OK
2023/08/24-15:59:11.983493 7fab497fa6c0 Delete type=0 #87 2023/08/29-16:24:59.289117 7f2b69bff6c0 Delete type=0 #155
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/08/29-16:24:59.305137 7f2b69bff6c0 Manual compaction at level-0 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)
2023/08/29-16:24:59.312278 7f2b69bff6c0 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-000082 MANIFEST-000150

View File

@ -1,8 +1,8 @@
2023/08/24-18:30:54.365286 7fda7b3fe6c0 Recovering log #80 2023/08/29-16:25:43.164843 7f2debfff6c0 Recovering log #148
2023/08/24-18:30:54.493542 7fda7b3fe6c0 Delete type=3 #78 2023/08/29-16:25:43.338845 7f2debfff6c0 Delete type=3 #146
2023/08/24-18:30:54.493606 7fda7b3fe6c0 Delete type=0 #80 2023/08/29-16:25:43.338920 7f2debfff6c0 Delete type=0 #148
2023/08/24-18:45:24.029921 7fda79bfb6c0 Level-0 table #85: started 2023/08/29-16:40:28.801017 7f2b69bff6c0 Level-0 table #153: started
2023/08/24-18:45:24.029963 7fda79bfb6c0 Level-0 table #85: 0 bytes OK 2023/08/29-16:40:28.801061 7f2b69bff6c0 Level-0 table #153: 0 bytes OK
2023/08/24-18:45:24.040806 7fda79bfb6c0 Delete type=0 #83 2023/08/29-16:40:28.808558 7f2b69bff6c0 Delete type=0 #151
2023/08/24-18:45:24.041133 7fda79bfb6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.808780 7f2b69bff6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)
2023/08/24-18:45:24.041173 7fda79bfb6c0 Manual compaction at level-1 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.808811 7f2b69bff6c0 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:57:43.429828 7fab4affd6c0 Recovering log #76 2023/08/29-16:09:59.537488 7f2debfff6c0 Recovering log #144
2023/08/24-15:57:43.446896 7fab4affd6c0 Delete type=3 #74 2023/08/29-16:09:59.555680 7f2debfff6c0 Delete type=3 #142
2023/08/24-15:57:43.447172 7fab4affd6c0 Delete type=0 #76 2023/08/29-16:09:59.555787 7f2debfff6c0 Delete type=0 #144
2023/08/24-15:59:12.034912 7fab497fa6c0 Level-0 table #81: started 2023/08/29-16:24:59.334341 7f2b69bff6c0 Level-0 table #149: started
2023/08/24-15:59:12.034942 7fab497fa6c0 Level-0 table #81: 0 bytes OK 2023/08/29-16:24:59.334391 7f2b69bff6c0 Level-0 table #149: 0 bytes OK
2023/08/24-15:59:12.043249 7fab497fa6c0 Delete type=0 #79 2023/08/29-16:24:59.342219 7f2b69bff6c0 Delete type=0 #147
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/08/29-16:24:59.342377 7f2b69bff6c0 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/08/29-16:24:59.342413 7f2b69bff6c0 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-000090 MANIFEST-000156

View File

@ -1,8 +1,8 @@
2023/08/24-18:30:54.389460 7fda7bbff6c0 Recovering log #88 2023/08/29-16:25:43.185065 7f2dea7fc6c0 Recovering log #154
2023/08/24-18:30:54.523665 7fda7bbff6c0 Delete type=3 #86 2023/08/29-16:25:43.371993 7f2dea7fc6c0 Delete type=3 #152
2023/08/24-18:30:54.523745 7fda7bbff6c0 Delete type=0 #88 2023/08/29-16:25:43.372074 7f2dea7fc6c0 Delete type=0 #154
2023/08/24-18:45:24.050952 7fda79bfb6c0 Level-0 table #93: started 2023/08/29-16:40:28.785308 7f2b69bff6c0 Level-0 table #159: started
2023/08/24-18:45:24.050983 7fda79bfb6c0 Level-0 table #93: 0 bytes OK 2023/08/29-16:40:28.785364 7f2b69bff6c0 Level-0 table #159: 0 bytes OK
2023/08/24-18:45:24.060808 7fda79bfb6c0 Delete type=0 #91 2023/08/29-16:40:28.792517 7f2b69bff6c0 Delete type=0 #157
2023/08/24-18:45:24.061224 7fda79bfb6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.808742 7f2b69bff6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)
2023/08/24-18:45:24.061243 7fda79bfb6c0 Manual compaction at level-1 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.808790 7f2b69bff6c0 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:57:43.446370 7fab4b7fe6c0 Recovering log #84 2023/08/29-16:09:59.537875 7f2dea7fc6c0 Recovering log #150
2023/08/24-15:57:43.467824 7fab4b7fe6c0 Delete type=3 #82 2023/08/29-16:09:59.558667 7f2dea7fc6c0 Delete type=3 #148
2023/08/24-15:57:43.467983 7fab4b7fe6c0 Delete type=0 #84 2023/08/29-16:09:59.558997 7f2dea7fc6c0 Delete type=0 #150
2023/08/24-15:59:12.043433 7fab497fa6c0 Level-0 table #89: started 2023/08/29-16:24:59.312392 7f2b69bff6c0 Level-0 table #155: started
2023/08/24-15:59:12.043465 7fab497fa6c0 Level-0 table #89: 0 bytes OK 2023/08/29-16:24:59.312430 7f2b69bff6c0 Level-0 table #155: 0 bytes OK
2023/08/24-15:59:12.050553 7fab497fa6c0 Delete type=0 #87 2023/08/29-16:24:59.318578 7f2b69bff6c0 Delete type=0 #153
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/08/29-16:24:59.342333 7f2b69bff6c0 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/08/29-16:24:59.342384 7f2b69bff6c0 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-000156 Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000091 MANIFEST-000157

View File

@ -1,8 +1,8 @@
2023/08/24-18:30:54.195844 7fda7a3fc6c0 Recovering log #89 2023/08/29-16:25:42.990448 7f2deb7fe6c0 Recovering log #155
2023/08/24-18:30:54.349634 7fda7a3fc6c0 Delete type=3 #87 2023/08/29-16:25:43.154128 7f2deb7fe6c0 Delete type=3 #153
2023/08/24-18:30:54.349691 7fda7a3fc6c0 Delete type=0 #89 2023/08/29-16:25:43.154225 7f2deb7fe6c0 Delete type=0 #155
2023/08/24-18:45:24.011039 7fda79bfb6c0 Level-0 table #94: started 2023/08/29-16:40:28.776406 7f2b69bff6c0 Level-0 table #160: started
2023/08/24-18:45:24.011085 7fda79bfb6c0 Level-0 table #94: 0 bytes OK 2023/08/29-16:40:28.776459 7f2b69bff6c0 Level-0 table #160: 0 bytes OK
2023/08/24-18:45:24.019660 7fda79bfb6c0 Delete type=0 #92 2023/08/29-16:40:28.785118 7f2b69bff6c0 Delete type=0 #158
2023/08/24-18:45:24.029903 7fda79bfb6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.808720 7f2b69bff6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)
2023/08/24-18:45:24.041115 7fda79bfb6c0 Manual compaction at level-1 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.808771 7f2b69bff6c0 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:57:43.407202 7fab49ffb6c0 Recovering log #85 2023/08/29-16:09:59.520160 7f2debfff6c0 Recovering log #151
2023/08/24-15:57:43.427049 7fab49ffb6c0 Delete type=3 #83 2023/08/29-16:09:59.534547 7f2debfff6c0 Delete type=3 #149
2023/08/24-15:57:43.427316 7fab49ffb6c0 Delete type=0 #85 2023/08/29-16:09:59.534665 7f2debfff6c0 Delete type=0 #151
2023/08/24-15:59:12.015422 7fab497fa6c0 Level-0 table #90: started 2023/08/29-16:24:59.305197 7f2b69bff6c0 Level-0 table #156: started
2023/08/24-15:59:12.015449 7fab497fa6c0 Level-0 table #90: 0 bytes OK 2023/08/29-16:24:59.305251 7f2b69bff6c0 Level-0 table #156: 0 bytes OK
2023/08/24-15:59:12.025372 7fab497fa6c0 Delete type=0 #88 2023/08/29-16:24:59.312157 7f2b69bff6c0 Delete type=0 #154
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/08/29-16:24:59.312296 7f2b69bff6c0 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/08/29-16:24:59.312312 7f2b69bff6c0 Manual compaction at level-1 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)

View File

@ -1 +1 @@
MANIFEST-000090 MANIFEST-000158

View File

@ -1,8 +1,8 @@
2023/08/24-18:30:54.111929 7fda7a3fc6c0 Recovering log #88 2023/08/29-16:25:42.891392 7f2dea7fc6c0 Recovering log #156
2023/08/24-18:30:54.191305 7fda7a3fc6c0 Delete type=3 #86 2023/08/29-16:25:42.986777 7f2dea7fc6c0 Delete type=3 #154
2023/08/24-18:30:54.191365 7fda7a3fc6c0 Delete type=0 #88 2023/08/29-16:25:42.986886 7f2dea7fc6c0 Delete type=0 #156
2023/08/24-18:45:24.003990 7fda79bfb6c0 Level-0 table #93: started 2023/08/29-16:40:28.763206 7f2b69bff6c0 Level-0 table #161: started
2023/08/24-18:45:24.004046 7fda79bfb6c0 Level-0 table #93: 0 bytes OK 2023/08/29-16:40:28.763254 7f2b69bff6c0 Level-0 table #161: 0 bytes OK
2023/08/24-18:45:24.010832 7fda79bfb6c0 Delete type=0 #91 2023/08/29-16:40:28.775955 7f2b69bff6c0 Delete type=0 #159
2023/08/24-18:45:24.029880 7fda79bfb6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.776250 7f2b69bff6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)
2023/08/24-18:45:24.041092 7fda79bfb6c0 Manual compaction at level-1 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.776293 7f2b69bff6c0 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:57:43.407080 7fab4b7fe6c0 Recovering log #84 2023/08/29-16:09:59.496231 7f2deb7fe6c0 Recovering log #152
2023/08/24-15:57:43.424160 7fab4b7fe6c0 Delete type=3 #82 2023/08/29-16:09:59.514870 7f2deb7fe6c0 Delete type=3 #150
2023/08/24-15:57:43.424263 7fab4b7fe6c0 Delete type=0 #84 2023/08/29-16:09:59.515006 7f2deb7fe6c0 Delete type=0 #152
2023/08/24-15:59:12.004782 7fab497fa6c0 Level-0 table #89: started 2023/08/29-16:24:59.297215 7f2b69bff6c0 Level-0 table #157: started
2023/08/24-15:59:12.004875 7fab497fa6c0 Level-0 table #89: 0 bytes OK 2023/08/29-16:24:59.297268 7f2b69bff6c0 Level-0 table #157: 0 bytes OK
2023/08/24-15:59:12.015289 7fab497fa6c0 Delete type=0 #87 2023/08/29-16:24:59.304916 7f2b69bff6c0 Delete type=0 #155
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/08/29-16:24:59.312266 7f2b69bff6c0 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/08/29-16:24:59.312303 7f2b69bff6c0 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-000090 MANIFEST-000156

View File

@ -1,8 +1,8 @@
2023/08/24-18:30:54.529513 7fda7a3fc6c0 Recovering log #88 2023/08/29-16:25:43.341031 7f2deb7fe6c0 Recovering log #154
2023/08/24-18:30:54.596503 7fda7a3fc6c0 Delete type=3 #86 2023/08/29-16:25:43.476661 7f2deb7fe6c0 Delete type=3 #152
2023/08/24-18:30:54.596581 7fda7a3fc6c0 Delete type=0 #88 2023/08/29-16:25:43.476735 7f2deb7fe6c0 Delete type=0 #154
2023/08/24-18:45:24.041224 7fda79bfb6c0 Level-0 table #93: started 2023/08/29-16:40:28.808880 7f2b69bff6c0 Level-0 table #159: started
2023/08/24-18:45:24.041255 7fda79bfb6c0 Level-0 table #93: 0 bytes OK 2023/08/29-16:40:28.808911 7f2b69bff6c0 Level-0 table #159: 0 bytes OK
2023/08/24-18:45:24.050828 7fda79bfb6c0 Delete type=0 #91 2023/08/29-16:40:28.815205 7f2b69bff6c0 Delete type=0 #157
2023/08/24-18:45:24.060947 7fda79bfb6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.815419 7f2b69bff6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)
2023/08/24-18:45:24.060979 7fda79bfb6c0 Manual compaction at level-1 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end) 2023/08/29-16:40:28.815460 7f2b69bff6c0 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:57:43.449295 7fab49ffb6c0 Recovering log #84 2023/08/29-16:09:59.560765 7f2deaffd6c0 Recovering log #150
2023/08/24-15:57:43.472616 7fab49ffb6c0 Delete type=3 #82 2023/08/29-16:09:59.570734 7f2deaffd6c0 Delete type=3 #148
2023/08/24-15:57:43.472750 7fab49ffb6c0 Delete type=0 #84 2023/08/29-16:09:59.570804 7f2deaffd6c0 Delete type=0 #150
2023/08/24-15:59:12.050764 7fab497fa6c0 Level-0 table #89: started 2023/08/29-16:24:59.325881 7f2b69bff6c0 Level-0 table #155: started
2023/08/24-15:59:12.050797 7fab497fa6c0 Level-0 table #89: 0 bytes OK 2023/08/29-16:24:59.325905 7f2b69bff6c0 Level-0 table #155: 0 bytes OK
2023/08/24-15:59:12.061012 7fab497fa6c0 Delete type=0 #87 2023/08/29-16:24:59.334131 7f2b69bff6c0 Delete type=0 #153
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/08/29-16:24:59.342366 7f2b69bff6c0 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/08/29-16:24:59.342401 7f2b69bff6c0 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

@ -821,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;
} }
@ -1441,6 +1444,6 @@ Focus FOC: #ff0084
display: none; display: none;
visibility: hidden; visibility: hidden;
} }
li.folder > .folder-header h3 { .compendium .directory-list .directory-item .folder-header h3 {
color:#000 color:#000
} }

View File

@ -5,7 +5,7 @@
"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"
], ],
@ -91,15 +91,15 @@
"styles": [ "styles": [
"styles/simple.css" "styles/simple.css"
], ],
"version": "11.0.11", "version": "11.0.20",
"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.11.zip", "download": "https://www.uberwald.me/gitea/public/fvtt-hero-system-6/archive/fvtt-hero-system-6-v11.0.20.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,36 +149,55 @@
</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>
</li> </li>
{{#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> <span class="item-field-label-long">
<a class="roll-item"><i class="fas fa-dice"></i></a>
<span class="item-field-label-very-short">{{maneuver.system.pha}}</span> {{maneuver.name}}
<span class="item-field-label-very-short">{{maneuver.system.ocv}}</span> </span>
<span class="item-field-label-very-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}} <span class="item-field-text-long">{{maneuver.system.effects}}
{{#if maneuver.system.haseffectroll}} {{#if maneuver.system.haseffectroll}}
<a class="roll-direct" data-roll-source="Maneuver {{maneuver.name}}" <a class="roll-direct" data-roll-source="Maneuver {{maneuver.name}}"
@ -556,26 +575,75 @@
</span> </span>
</li> </li>
{{#each allmaneuvers as |maneuver key|}} {{#each allmaneuvers as |maneuver key|}}
<div class="{{#if maneuver.system.isstock}}maneuver-list maneuver-is-stock{{/if}}"> {{#if (ne maneuver.system.maneuvertype "mental")}}
<li class="item stat flexrow list-item list-item-shadow " data-item-id="{{maneuver._id}}"> <div class="{{#if maneuver.system.isstock}}maneuver-list maneuver-is-stock{{/if}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img" <li class="item stat flexrow list-item list-item-shadow " data-item-id="{{maneuver._id}}">
src="{{maneuver.img}}" /></a> <a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
<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>{{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>
<span class="item-field-label-short">{{maneuver.system.dcv}}</span> <span class="item-field-label-short">{{maneuver.system.dcv}}</span>
<span class="item-field-label-long3">{{maneuver.system.effects}}</span> <span class="item-field-label-long3">{{maneuver.system.effects}}</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>
</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 --}}
@ -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>

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">
{{#if img}} <div class="flexrow">
<img class="actor-icon" src="{{img}}" data-edit="img" title="{{name}}" /> {{#if img}}
{{/if}} <img class="actor-icon" src="{{img}}" data-edit="img" title="{{name}}" />
<h1 class="dialog-roll-title roll-dialog-header">{{title}}</h1> {{/if}}
<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,22 +7,35 @@
<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,7 +66,15 @@
{{/if}} {{/if}}
{{#if (exists margin)}} {{#if (exists margin)}}
<li><strong>Margin : {{margin}}</strong> {{#if (eq subMode "normal")}}
<li><strong>Margin : {{margin}}</strong>
{{/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}} {{/if}}
</ul> </ul>

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"/> data-dtype="Number"/>
</li> </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> <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

@ -3,7 +3,13 @@
<span class="item-field-label-very-short content-center" ><label class="content-center">{{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,18 +20,18 @@
{{/if}} {{/if}}
{{#if (eq equip.system.subtype "weapon")}} {{#if (eq equip.system.subtype "weapon")}}
<span class="item-field-label-very-short content-center"><label>{{numberFormat equip.system.ocv decimals=0 sign=true}}</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 content-center"><label>{{numberFormat equip.system.omcv 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>{{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 content-center"><label>{{equip.system.range}}</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> <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 content-center"><label>{{numberFormat equip.system.ocv decimals=0 sign=true}}</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 content-center"><label>{{numberFormat equip.system.omcv 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 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 equip.system.dmcv 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> <span class="item-field-label-very-short content-center"><label>&nbsp;</label> </span>
{{/if}} {{/if}}
@ -34,7 +40,7 @@
<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.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.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>{{equip.system.red}}</label> </span>
<span class="item-field-label-very-short content-center"><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}}

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>