Compare commits

...

39 Commits

Author SHA1 Message Date
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
f5c0faffd3 Equipment management 2023-08-24 15:59:54 +02:00
3f0e0a41b8 Update equipments type 2023-08-22 23:30:31 +02:00
20c49eb48c Fix Maneuvers 2023-08-15 22:12:02 +02:00
6275319164 Various fixes 2023-08-10 13:06:16 +02:00
19fb872824 Various fixes 2023-08-10 13:05:56 +02:00
002d6f4fbd Various fixes 2023-08-09 18:05:16 +02:00
114 changed files with 1245 additions and 594 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.

43
changelog.md Normal file
View File

@ -0,0 +1,43 @@
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

@ -1,19 +1,22 @@
{ {
"ACTOR": { "TYPES": {
"TypeCharacter": "Character" "Actor": {
"character": "Character",
"minion": "Minion"
}, },
"ITEM": { "Item": {
"TypeSkill": "Skill", "skill": "Skill",
"TypePerk": "Perk", "perk": "Perk",
"TypePower": "Power", "power": "Power",
"TypeTalent": "Talent", "talent": "Talent",
"TypeAdvantage": "Advantage", "advantage": "Advantage",
"TypeMartialart": "Martial art", "martialart": "Martial art",
"TypeLimitation": "Limitation", "limitation": "Limitation",
"TypeComplication": "Complication", "complication": "Complication",
"TypeEquipment": "Equipment", "equipment": "Equipment",
"TypeCurrency": "Currency", "currency": "Currency",
"TypeManeuver": "Maneuver" "maneuver": "Maneuver"
}
}, },
"COMBAT": { "COMBAT": {
"TurnPrev": "Previous initiative", "TurnPrev": "Previous initiative",

View File

@ -46,10 +46,12 @@ export class Hero6ActorSheet extends ActorSheet {
complications: this.actor.getComplications( ), complications: this.actor.getComplications( ),
maneuvers: this.actor.getManeuvers( ), maneuvers: this.actor.getManeuvers( ),
nonstockmaneuvers: this.actor.getNonStockManeuvers(), nonstockmaneuvers: this.actor.getNonStockManeuvers(),
allmaneuvers: this.actor.getAllManeuvers(),
weapons: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getWeapons()) ), weapons: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getWeapons()) ),
armors: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getArmors())), armors: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getArmors())),
shields: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getShields())), shields: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getShields())),
equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipmentsMoneys()) ), moneys: this.actor.checkAndPrepareEquipments( duplicate(this.actor.getMoneys())),
equipments: this.actor.checkAndPrepareEquipments(duplicate(this.actor.getEquipments()) ),
subActors: duplicate(this.actor.getSubActors()), subActors: duplicate(this.actor.getSubActors()),
race: duplicate(this.actor.getRace()), race: duplicate(this.actor.getRace()),
encCapacity: this.actor.getEncumbranceCapacity(), encCapacity: this.actor.getEncumbranceCapacity(),
@ -74,7 +76,9 @@ export class Hero6ActorSheet extends ActorSheet {
editScore: this.options.editScore, editScore: this.options.editScore,
isGM: game.user.isGM isGM: game.user.isGM
} }
this.formData = formData; this.formData = formData;
this.stockManeuverDisplayed = false
console.log("PC : ", formData, this.object); console.log("PC : ", formData, this.object);
return formData; return formData;
@ -89,9 +93,9 @@ export class Hero6ActorSheet extends ActorSheet {
// Everything below here is only needed if the sheet is editable // Everything below here is only needed if the sheet is editable
if (!this.options.editable) return; if (!this.options.editable) return;
html.bind("keydown", function(e) { // Ignore Enter in actores sheet /*html.bind("keydown", function(e) { // Ignore Enter in actores sheet
if (e.keyCode === 13) return false; if (e.keyCode === 13) return false;
}); });*/
// Update Inventory Item // Update Inventory Item
html.find('.item-edit').click(ev => { html.find('.item-edit').click(ev => {
@ -158,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")
@ -180,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()
@ -198,6 +198,16 @@ export class Hero6ActorSheet extends ActorSheet {
this.actor.abortAction() this.actor.abortAction()
}); });
html.find(".show-stock-maneuver").click((event) => {
if ( !this.stockManeuverDisplayed) {
$('div .maneuver-list').removeClass('maneuver-is-stock');
this.stockManeuverDisplayed = true
} else {
$('div .maneuver-list').addClass('maneuver-is-stock');
this.stockManeuverDisplayed = false
}
});
html.find('.lock-unlock-sheet').click((event) => { html.find('.lock-unlock-sheet').click((event) => {
this.options.editScore = !this.options.editScore; this.options.editScore = !this.options.editScore;
this.render(true); this.render(true);

View File

@ -40,13 +40,11 @@ export class Hero6Actor extends Actor {
return actor; return actor;
} }
if (data.type == 'character') { if (data.type == 'character' || data.type == 'minion') {
const maneuvers = await Hero6Utility.loadCompendium("fvtt-hero-system-6.maneuvers") const maneuvers = await Hero6Utility.loadCompendium("fvtt-hero-system-6.maneuvers")
let maneuversObj = maneuvers.map(i => i.toObject()) let maneuversObj = maneuvers.map(i => i.toObject())
data.items = maneuversObj.filter(m => m.system.isstock) data.items = maneuversObj.filter(m => m.system.isstock)
} }
if (data.type == 'npc') {
}
return super.create(data, options); return super.create(data, options);
} }
@ -62,14 +60,11 @@ export class Hero6Actor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
computeDerivatedData() { computeDerivatedData() {
if (this.type == "character") {
let newSTREND = this.computeSTREND() let newSTREND = this.computeSTREND()
if (newSTREND != this.system.characteristics.str.strend) { if (newSTREND != this.system.characteristics.str.strend) {
this.update({ 'system.characteristics.str.strend': newSTREND }) this.update({ 'system.characteristics.str.strend': newSTREND })
} }
} }
}
/* -------------------------------------------- */ /* -------------------------------------------- */
performMigration() { performMigration() {
// Fix OCV/OMCV rollable // Fix OCV/OMCV rollable
@ -172,6 +167,19 @@ export class Hero6Actor extends Actor {
} }
return item; return item;
} }
/* -------------------------------------------- */
async _preCreate(data, options, user) {
await super._preCreate(data, options, user);
// Configure prototype token settings
const prototypeToken = {};
if (this.type === "character") Object.assign(prototypeToken, {
sight: { enabled: true }, actorLink: true, disposition: CONST.TOKEN_DISPOSITIONS.FRIENDLY
});
this.updateSource({ prototypeToken });
}
/* -------------------------------------------- */ /* -------------------------------------------- */
prepareSkill(skill) { prepareSkill(skill) {
skill.roll = 0 skill.roll = 0
@ -208,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
} }
@ -216,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() {
@ -296,11 +315,18 @@ 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
}
getAllManeuvers() {
let maneuvers = this.items.filter(item => item.type == "maneuver")
Hero6Utility.sortArrayObjectsByName(maneuvers)
return maneuvers return maneuvers
} }
getNonStockManeuvers() { getNonStockManeuvers() {
@ -313,6 +339,11 @@ export class Hero6Actor extends Actor {
Hero6Utility.sortArrayObjectsByName(list) Hero6Utility.sortArrayObjectsByName(list)
return list return list
} }
getMoneys() {
let list = this.items.filter(item => item.type == "equipment" && item.system.subtype == "money");
Hero6Utility.sortArrayObjectsByName(list)
return list
}
getWeapons() { getWeapons() {
let list = this.items.filter(item => item.type == "equipment" && item.system.subtype == "weapon"); let list = this.items.filter(item => item.type == "equipment" && item.system.subtype == "weapon");
Hero6Utility.sortArrayObjectsByName(list) Hero6Utility.sortArrayObjectsByName(list)
@ -516,9 +547,14 @@ export class Hero6Actor extends Actor {
/* -------------------------------------------- */ /* -------------------------------------------- */
prepareCharacValues(charac) { prepareCharacValues(charac) {
if (charac.label == "OCV" || charac.label == "OMCV" ) {
charac.total = charac.value
charac.roll = 11 + charac.value
} else {
charac.total = charac.value charac.total = charac.value
charac.roll = 9 + Math.round((charac.value) / 5) charac.roll = 9 + Math.round((charac.value) / 5)
} }
}
prepareCharac() { prepareCharac() {
let characs = duplicate(this.system.characteristics) let characs = duplicate(this.system.characteristics)
for (let key in characs) { for (let key in characs) {
@ -605,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)
@ -623,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)
@ -639,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) {
@ -652,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
@ -663,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)
} }
@ -681,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)
@ -720,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) {
@ -765,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",
@ -53,6 +65,5 @@ export const Hero6_CONFIG = {
"standard": "Standard", "standard": "Standard",
"normal": "Normal", "normal": "Normal",
"killing": "Killing", "killing": "Killing",
"countbody": "Killing (Count BODY)"
} }
} }

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

@ -61,7 +61,7 @@ Hooks.once("init", async function () {
// Register sheet application classes // Register sheet application classes
Actors.unregisterSheet("core", ActorSheet); Actors.unregisterSheet("core", ActorSheet);
Actors.registerSheet("fvtt-hero-system-6", Hero6ActorSheet, { types: ["character"], makeDefault: true }); Actors.registerSheet("fvtt-hero-system-6", Hero6ActorSheet, { types: ["character"], makeDefault: true });
Actors.registerSheet("fvtt-hero-system-6", Hero6NPCSheet, { types: ["npc"], makeDefault: false }); Actors.registerSheet("fvtt-hero-system-6", Hero6ActorSheet, { types: ["minion"], makeDefault: false });
Items.unregisterSheet("core", ItemSheet); Items.unregisterSheet("core", ItemSheet);
Items.registerSheet("fvtt-hero-system-6", Hero6ItemSheet, { makeDefault: true }); Items.registerSheet("fvtt-hero-system-6", Hero6ItemSheet, { makeDefault: true });

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
@ -163,6 +169,7 @@ export class Hero6Utility {
'systems/fvtt-hero-system-6/templates/partials/partial-options-abilities.hbs', 'systems/fvtt-hero-system-6/templates/partials/partial-options-abilities.hbs',
'systems/fvtt-hero-system-6/templates/partials/partial-item-nav.hbs', 'systems/fvtt-hero-system-6/templates/partials/partial-item-nav.hbs',
'systems/fvtt-hero-system-6/templates/partials/partial-item-description.hbs', 'systems/fvtt-hero-system-6/templates/partials/partial-item-description.hbs',
'systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs',
'systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment.hbs', 'systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment.hbs',
'systems/fvtt-hero-system-6/templates/partials/partial-item-cost.hbs', 'systems/fvtt-hero-system-6/templates/partials/partial-item-cost.hbs',
'systems/fvtt-hero-system-6/templates/partials/partial-power-equipment-cost.hbs', 'systems/fvtt-hero-system-6/templates/partials/partial-power-equipment-cost.hbs',
@ -342,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
} }
@ -351,11 +359,11 @@ 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 })
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode")) //await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"))
} }
rollData.roll = myRoll rollData.roll = myRoll
@ -366,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-000046 MANIFEST-000168

View File

@ -1,8 +1,8 @@
2023/08/08-08:16:25.461187 7f5afd5f96c0 Recovering log #44 2023/09/01-20:34:49.006564 7fc3c77fe6c0 Recovering log #166
2023/08/08-08:16:25.474679 7f5afd5f96c0 Delete type=3 #42 2023/09/01-20:34:49.017049 7fc3c77fe6c0 Delete type=3 #164
2023/08/08-08:16:25.474715 7f5afd5f96c0 Delete type=0 #44 2023/09/01-20:34:49.017109 7fc3c77fe6c0 Delete type=0 #166
2023/08/08-08:17:06.635707 7f58677fe6c0 Level-0 table #49: started 2023/09/01-20:46:07.499525 7fc1463ff6c0 Level-0 table #171: started
2023/08/08-08:17:06.635749 7f58677fe6c0 Level-0 table #49: 0 bytes OK 2023/09/01-20:46:07.499548 7fc1463ff6c0 Level-0 table #171: 0 bytes OK
2023/08/08-08:17:06.642802 7f58677fe6c0 Delete type=0 #47 2023/09/01-20:46:07.507013 7fc1463ff6c0 Delete type=0 #169
2023/08/08-08:17:06.643044 7f58677fe6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.524943 7fc1463ff6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)
2023/08/08-08:17:06.643110 7f58677fe6c0 Manual compaction at level-1 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.525029 7fc1463ff6c0 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/07-22:18:14.000526 7f5afddfa6c0 Recovering log #40 2023/08/30-20:10:47.117841 7fa55e7fc6c0 Recovering log #162
2023/08/07-22:18:14.012956 7f5afddfa6c0 Delete type=3 #38 2023/08/30-20:10:47.323059 7fa55e7fc6c0 Delete type=3 #160
2023/08/07-22:18:14.012989 7f5afddfa6c0 Delete type=0 #40 2023/08/30-20:10:47.323156 7fa55e7fc6c0 Delete type=0 #162
2023/08/07-23:27:51.013130 7f58677fe6c0 Level-0 table #45: started 2023/08/30-20:19:02.780276 7fa55d3ff6c0 Level-0 table #167: started
2023/08/07-23:27:51.013173 7f58677fe6c0 Level-0 table #45: 0 bytes OK 2023/08/30-20:19:02.780299 7fa55d3ff6c0 Level-0 table #167: 0 bytes OK
2023/08/07-23:27:51.019258 7f58677fe6c0 Delete type=0 #43 2023/08/30-20:19:02.786823 7fa55d3ff6c0 Delete type=0 #165
2023/08/07-23:27:51.040432 7f58677fe6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.807165 7fa55d3ff6c0 Manual compaction at level-0 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end)
2023/08/07-23:27:51.040586 7f58677fe6c0 Manual compaction at level-1 from '!items!05yAsPAteobyHoVT' @ 72057594037927935 : 1 .. '!items!yFhVFTqzLKcqApBr' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.807232 7fa55d3ff6c0 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.

BIN
packs/equipment/000099.ldb Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000046 MANIFEST-000170

View File

@ -1,7 +1,8 @@
2023/08/08-08:16:25.435366 7f5afcdf86c0 Recovering log #44 2023/09/01-20:34:48.990689 7fc3c7fff6c0 Recovering log #168
2023/08/08-08:16:25.445289 7f5afcdf86c0 Delete type=3 #42 2023/09/01-20:34:49.001225 7fc3c7fff6c0 Delete type=3 #166
2023/08/08-08:16:25.445363 7f5afcdf86c0 Delete type=0 #44 2023/09/01-20:34:49.001331 7fc3c7fff6c0 Delete type=0 #168
2023/08/08-08:17:06.600288 7f58677fe6c0 Level-0 table #49: started 2023/09/01-20:46:07.461246 7fc1463ff6c0 Level-0 table #173: started
2023/08/08-08:17:06.600344 7f58677fe6c0 Level-0 table #49: 0 bytes OK 2023/09/01-20:46:07.461298 7fc1463ff6c0 Level-0 table #173: 0 bytes OK
2023/08/08-08:17:06.607987 7f58677fe6c0 Delete type=0 #47 2023/09/01-20:46:07.467444 7fc1463ff6c0 Delete type=0 #171
2023/08/08-08:17:06.615309 7f58677fe6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.467589 7fc1463ff6c0 Manual compaction at level-0 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)
2023/09/01-20:46:07.491206 7fc1463ff6c0 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/07-22:18:13.969369 7f5afd5f96c0 Recovering log #40 2023/08/30-20:10:46.913567 7fa55effd6c0 Recovering log #164
2023/08/07-22:18:13.978774 7f5afd5f96c0 Delete type=3 #38 2023/08/30-20:10:47.085816 7fa55effd6c0 Delete type=3 #162
2023/08/07-22:18:13.978872 7f5afd5f96c0 Delete type=0 #40 2023/08/30-20:10:47.085887 7fa55effd6c0 Delete type=0 #164
2023/08/07-23:27:50.976450 7f58677fe6c0 Level-0 table #45: started 2023/08/30-20:19:02.772964 7fa55d3ff6c0 Level-0 table #169: started
2023/08/07-23:27:50.976502 7f58677fe6c0 Level-0 table #45: 0 bytes OK 2023/08/30-20:19:02.773053 7fa55d3ff6c0 Level-0 table #169: 0 bytes OK
2023/08/07-23:27:50.982719 7f58677fe6c0 Delete type=0 #43 2023/08/30-20:19:02.779629 7fa55d3ff6c0 Delete type=0 #167
2023/08/07-23:27:50.982828 7f58677fe6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.780116 7fa55d3ff6c0 Manual compaction at level-0 from '!folders!48DCB6UNXCsERTXK' @ 72057594037927935 : 1 .. '!items!zFQRJSrYV4E12NgW' @ 0 : 0; will stop at (end)
2023/08/30-20:19:02.780129 7fa55d3ff6c0 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-000038 MANIFEST-000162

View File

@ -1,8 +1,8 @@
2023/08/08-08:16:25.461251 7f5afddfa6c0 Recovering log #36 2023/09/01-20:34:49.019182 7fc3dcdfa6c0 Recovering log #160
2023/08/08-08:16:25.477680 7f5afddfa6c0 Delete type=3 #34 2023/09/01-20:34:49.041348 7fc3dcdfa6c0 Delete type=3 #158
2023/08/08-08:16:25.477718 7f5afddfa6c0 Delete type=0 #36 2023/09/01-20:34:49.041405 7fc3dcdfa6c0 Delete type=0 #160
2023/08/08-08:17:06.629201 7f58677fe6c0 Level-0 table #41: started 2023/09/01-20:46:07.491542 7fc1463ff6c0 Level-0 table #165: started
2023/08/08-08:17:06.629246 7f58677fe6c0 Level-0 table #41: 0 bytes OK 2023/09/01-20:46:07.491644 7fc1463ff6c0 Level-0 table #165: 0 bytes OK
2023/08/08-08:17:06.635576 7f58677fe6c0 Delete type=0 #39 2023/09/01-20:46:07.499417 7fc1463ff6c0 Delete type=0 #163
2023/08/08-08:17:06.643022 7f58677fe6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.524909 7fc1463ff6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)
2023/08/08-08:17:06.643086 7f58677fe6c0 Manual compaction at level-1 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.525011 7fc1463ff6c0 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/07-22:18:14.000527 7f5afd5f96c0 Recovering log #32 2023/08/30-20:10:47.287095 7fa55f7fe6c0 Recovering log #156
2023/08/07-22:18:14.012956 7f5afd5f96c0 Delete type=3 #30 2023/08/30-20:10:47.496255 7fa55f7fe6c0 Delete type=3 #154
2023/08/07-22:18:14.012992 7f5afd5f96c0 Delete type=0 #32 2023/08/30-20:10:47.496306 7fa55f7fe6c0 Delete type=0 #156
2023/08/07-23:27:51.026690 7f58677fe6c0 Level-0 table #37: started 2023/08/30-20:19:02.786933 7fa55d3ff6c0 Level-0 table #161: started
2023/08/07-23:27:51.026730 7f58677fe6c0 Level-0 table #37: 0 bytes OK 2023/08/30-20:19:02.786958 7fa55d3ff6c0 Level-0 table #161: 0 bytes OK
2023/08/07-23:27:51.033892 7f58677fe6c0 Delete type=0 #35 2023/08/30-20:19:02.793209 7fa55d3ff6c0 Delete type=0 #159
2023/08/07-23:27:51.040520 7f58677fe6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.807175 7fa55d3ff6c0 Manual compaction at level-0 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end)
2023/08/07-23:27:51.040625 7f58677fe6c0 Manual compaction at level-1 from '!items!0HeZcvevni63brWf' @ 72057594037927935 : 1 .. '!items!yAT32VYV2aIWOBkK' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.807218 7fa55d3ff6c0 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-000046 MANIFEST-000168

View File

@ -1,8 +1,8 @@
2023/08/08-08:16:25.476569 7f5afd5f96c0 Recovering log #44 2023/09/01-20:34:49.021891 7fc3c7fff6c0 Recovering log #166
2023/08/08-08:16:25.493410 7f5afd5f96c0 Delete type=3 #42 2023/09/01-20:34:49.046208 7fc3c7fff6c0 Delete type=3 #164
2023/08/08-08:16:25.493503 7f5afd5f96c0 Delete type=0 #44 2023/09/01-20:34:49.046276 7fc3c7fff6c0 Delete type=0 #166
2023/08/08-08:17:06.643184 7f58677fe6c0 Level-0 table #49: started 2023/09/01-20:46:07.525125 7fc1463ff6c0 Level-0 table #171: started
2023/08/08-08:17:06.643236 7f58677fe6c0 Level-0 table #49: 0 bytes OK 2023/09/01-20:46:07.525186 7fc1463ff6c0 Level-0 table #171: 0 bytes OK
2023/08/08-08:17:06.650531 7f58677fe6c0 Delete type=0 #47 2023/09/01-20:46:07.532898 7fc1463ff6c0 Delete type=0 #169
2023/08/08-08:17:06.658850 7f58677fe6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.542291 7fc1463ff6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)
2023/08/08-08:17:06.658878 7f58677fe6c0 Manual compaction at level-1 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.542317 7fc1463ff6c0 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/07-22:18:14.015482 7f5afcdf86c0 Recovering log #40 2023/08/30-20:10:47.325002 7fa55effd6c0 Recovering log #162
2023/08/07-22:18:14.031405 7f5afcdf86c0 Delete type=3 #38 2023/08/30-20:10:47.532075 7fa55effd6c0 Delete type=3 #160
2023/08/07-22:18:14.031513 7f5afcdf86c0 Delete type=0 #40 2023/08/30-20:10:47.532180 7fa55effd6c0 Delete type=0 #162
2023/08/07-23:27:51.019445 7f58677fe6c0 Level-0 table #45: started 2023/08/30-20:19:02.800848 7fa55d3ff6c0 Level-0 table #167: started
2023/08/07-23:27:51.019492 7f58677fe6c0 Level-0 table #45: 0 bytes OK 2023/08/30-20:19:02.800897 7fa55d3ff6c0 Level-0 table #167: 0 bytes OK
2023/08/07-23:27:51.026550 7f58677fe6c0 Delete type=0 #43 2023/08/30-20:19:02.807064 7fa55d3ff6c0 Delete type=0 #165
2023/08/07-23:27:51.040470 7f58677fe6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.807205 7fa55d3ff6c0 Manual compaction at level-0 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end)
2023/08/07-23:27:51.040607 7f58677fe6c0 Manual compaction at level-1 from '!items!L3vwlIh3oloE6A8W' @ 72057594037927935 : 1 .. '!items!yWTR7MCOtGWm1KCz' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.807225 7fa55d3ff6c0 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-000168 Normal file

Binary file not shown.

Binary file not shown.

BIN
packs/powers/000165.ldb Normal file

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000046 MANIFEST-000170

View File

@ -1,8 +1,8 @@
2023/08/08-08:16:25.447883 7f5afddfa6c0 Recovering log #44 2023/09/01-20:34:49.006555 7fc3c6ffd6c0 Recovering log #168
2023/08/08-08:16:25.457469 7f5afddfa6c0 Delete type=3 #42 2023/09/01-20:34:49.017044 7fc3c6ffd6c0 Delete type=3 #166
2023/08/08-08:16:25.457528 7f5afddfa6c0 Delete type=0 #44 2023/09/01-20:34:49.017107 7fc3c6ffd6c0 Delete type=0 #168
2023/08/08-08:17:06.621801 7f58677fe6c0 Level-0 table #49: started 2023/09/01-20:46:07.516008 7fc1463ff6c0 Level-0 table #173: started
2023/08/08-08:17:06.621842 7f58677fe6c0 Level-0 table #49: 0 bytes OK 2023/09/01-20:46:07.516052 7fc1463ff6c0 Level-0 table #173: 0 bytes OK
2023/08/08-08:17:06.629025 7f58677fe6c0 Delete type=0 #47 2023/09/01-20:46:07.524696 7fc1463ff6c0 Delete type=0 #171
2023/08/08-08:17:06.642970 7f58677fe6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.524991 7fc1463ff6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)
2023/08/08-08:17:06.643067 7f58677fe6c0 Manual compaction at level-1 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.525070 7fc1463ff6c0 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/07-22:18:13.982354 7f5afd5f96c0 Recovering log #40 2023/08/30-20:10:47.089737 7fa55dffb6c0 Recovering log #163
2023/08/07-22:18:13.997957 7f5afd5f96c0 Delete type=3 #38 2023/08/30-20:10:47.283952 7fa55dffb6c0 Delete type=3 #161
2023/08/07-22:18:13.998008 7f5afd5f96c0 Delete type=0 #40 2023/08/30-20:10:47.284018 7fa55dffb6c0 Delete type=0 #163
2023/08/07-23:27:51.005564 7f58677fe6c0 Level-0 table #45: started 2023/08/30-20:19:02.793322 7fa55d3ff6c0 Level-0 table #169: started
2023/08/07-23:27:51.005735 7f58677fe6c0 Level-0 table #45: 0 bytes OK 2023/08/30-20:19:02.793349 7fa55d3ff6c0 Level-0 table #169: 0 bytes OK
2023/08/07-23:27:51.012861 7f58677fe6c0 Delete type=0 #43 2023/08/30-20:19:02.800604 7fa55d3ff6c0 Delete type=0 #167
2023/08/07-23:27:51.013069 7f58677fe6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.807184 7fa55d3ff6c0 Manual compaction at level-0 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end)
2023/08/07-23:27:51.013100 7f58677fe6c0 Manual compaction at level-1 from '!items!3vinyVxuFdrQDCBo' @ 72057594037927935 : 1 .. '!items!zpF2QY4tx7qdBomQ' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.807212 7fa55d3ff6c0 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-000046 MANIFEST-000170

View File

@ -1,8 +1,8 @@
2023/08/08-08:16:25.447873 7f5afcdf86c0 Recovering log #44 2023/09/01-20:34:48.990681 7fc3c77fe6c0 Recovering log #168
2023/08/08-08:16:25.457419 7f5afcdf86c0 Delete type=3 #42 2023/09/01-20:34:49.001230 7fc3c77fe6c0 Delete type=3 #166
2023/08/08-08:16:25.457478 7f5afcdf86c0 Delete type=0 #44 2023/09/01-20:34:49.001299 7fc3c77fe6c0 Delete type=0 #168
2023/08/08-08:17:06.615328 7f58677fe6c0 Level-0 table #49: started 2023/09/01-20:46:07.507230 7fc1463ff6c0 Level-0 table #173: started
2023/08/08-08:17:06.615361 7f58677fe6c0 Level-0 table #49: 0 bytes OK 2023/09/01-20:46:07.507266 7fc1463ff6c0 Level-0 table #173: 0 bytes OK
2023/08/08-08:17:06.621611 7f58677fe6c0 Delete type=0 #47 2023/09/01-20:46:07.515830 7fc1463ff6c0 Delete type=0 #171
2023/08/08-08:17:06.629182 7f58677fe6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.524965 7fc1463ff6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)
2023/08/08-08:17:06.643000 7f58677fe6c0 Manual compaction at level-1 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.525047 7fc1463ff6c0 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/07-22:18:13.982353 7f5afddfa6c0 Recovering log #40 2023/08/30-20:10:46.913667 7fa55f7fe6c0 Recovering log #164
2023/08/07-22:18:13.997971 7f5afddfa6c0 Delete type=3 #38 2023/08/30-20:10:47.114760 7fa55f7fe6c0 Delete type=3 #162
2023/08/07-22:18:13.998032 7f5afddfa6c0 Delete type=0 #40 2023/08/30-20:10:47.114894 7fa55f7fe6c0 Delete type=0 #164
2023/08/07-23:27:50.999438 7f58677fe6c0 Level-0 table #45: started 2023/08/30-20:19:02.757545 7fa55d3ff6c0 Level-0 table #169: started
2023/08/07-23:27:50.999471 7f58677fe6c0 Level-0 table #45: 0 bytes OK 2023/08/30-20:19:02.757594 7fa55d3ff6c0 Level-0 table #169: 0 bytes OK
2023/08/07-23:27:51.005436 7f58677fe6c0 Delete type=0 #43 2023/08/30-20:19:02.765676 7fa55d3ff6c0 Delete type=0 #167
2023/08/07-23:27:51.013039 7f58677fe6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.780087 7fa55d3ff6c0 Manual compaction at level-0 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end)
2023/08/07-23:27:51.013085 7f58677fe6c0 Manual compaction at level-1 from '!items!0663RVbZRl0oZ0Dr' @ 72057594037927935 : 1 .. '!items!zLKcnLGEcMwECjni' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.780123 7fa55d3ff6c0 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-000046 MANIFEST-000168

View File

@ -1,8 +1,8 @@
2023/08/08-08:16:25.478881 7f5afddfa6c0 Recovering log #44 2023/09/01-20:34:49.047409 7fc3c7fff6c0 Recovering log #166
2023/08/08-08:16:25.496212 7f5afddfa6c0 Delete type=3 #42 2023/09/01-20:34:49.060677 7fc3c7fff6c0 Delete type=3 #164
2023/08/08-08:16:25.496252 7f5afddfa6c0 Delete type=0 #44 2023/09/01-20:34:49.060778 7fc3c7fff6c0 Delete type=0 #166
2023/08/08-08:17:06.650728 7f58677fe6c0 Level-0 table #49: started 2023/09/01-20:46:07.533009 7fc1463ff6c0 Level-0 table #171: started
2023/08/08-08:17:06.650795 7f58677fe6c0 Level-0 table #49: 0 bytes OK 2023/09/01-20:46:07.533036 7fc1463ff6c0 Level-0 table #171: 0 bytes OK
2023/08/08-08:17:06.658621 7f58677fe6c0 Delete type=0 #47 2023/09/01-20:46:07.542144 7fc1463ff6c0 Delete type=0 #169
2023/08/08-08:17:06.658890 7f58677fe6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.542308 7fc1463ff6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)
2023/08/08-08:17:06.658907 7f58677fe6c0 Manual compaction at level-1 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end) 2023/09/01-20:46:07.542326 7fc1463ff6c0 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/07-22:18:14.015482 7f5afd5f96c0 Recovering log #40 2023/08/30-20:10:47.498427 7fa55dffb6c0 Recovering log #162
2023/08/07-22:18:14.034395 7f5afd5f96c0 Delete type=3 #38 2023/08/30-20:10:47.619622 7fa55dffb6c0 Delete type=3 #160
2023/08/07-22:18:14.034433 7f5afd5f96c0 Delete type=0 #40 2023/08/30-20:10:47.619685 7fa55dffb6c0 Delete type=0 #162
2023/08/07-23:27:51.034000 7f58677fe6c0 Level-0 table #45: started 2023/08/30-20:19:02.807339 7fa55d3ff6c0 Level-0 table #167: started
2023/08/07-23:27:51.034031 7f58677fe6c0 Level-0 table #45: 0 bytes OK 2023/08/30-20:19:02.807359 7fa55d3ff6c0 Level-0 table #167: 0 bytes OK
2023/08/07-23:27:51.040235 7f58677fe6c0 Delete type=0 #43 2023/08/30-20:19:02.814782 7fa55d3ff6c0 Delete type=0 #165
2023/08/07-23:27:51.040547 7f58677fe6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.814992 7fa55d3ff6c0 Manual compaction at level-0 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end)
2023/08/07-23:27:51.040656 7f58677fe6c0 Manual compaction at level-1 from '!items!1oojD2KMJsxNlMez' @ 72057594037927935 : 1 .. '!items!znoFgVzNQOCTGUBl' @ 0 : 0; will stop at (end) 2023/08/30-20:19:02.815017 7fa55d3ff6c0 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

@ -1 +1 @@
MANIFEST-000046 MANIFEST-000086

View File

@ -1,7 +1,7 @@
2023/08/08-08:16:25.435335 7f5afddfa6c0 Recovering log #44 2023/08/24-15:57:43.392826 7fab4affd6c0 Recovering log #84
2023/08/08-08:16:25.445302 7f5afddfa6c0 Delete type=3 #42 2023/08/24-15:57:43.403060 7fab4affd6c0 Delete type=3 #82
2023/08/08-08:16:25.445339 7f5afddfa6c0 Delete type=0 #44 2023/08/24-15:57:43.403157 7fab4affd6c0 Delete type=0 #84
2023/08/08-08:17:06.608167 7f58677fe6c0 Level-0 table #49: started 2023/08/24-15:59:11.995583 7fab497fa6c0 Level-0 table #89: started
2023/08/08-08:17:06.608235 7f58677fe6c0 Level-0 table #49: 0 bytes OK 2023/08/24-15:59:11.995614 7fab497fa6c0 Level-0 table #89: 0 bytes OK
2023/08/08-08:17:06.615092 7f58677fe6c0 Delete type=0 #47 2023/08/24-15:59:12.004480 7fab497fa6c0 Delete type=0 #87
2023/08/08-08:17:06.621758 7f58677fe6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) 2023/08/24-15:59:12.025495 7fab497fa6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2023/08/07-22:18:13.969369 7f5afddfa6c0 Recovering log #40 2023/08/24-15:09:37.452353 7fab4b7fe6c0 Recovering log #80
2023/08/07-22:18:13.978774 7f5afddfa6c0 Delete type=3 #38 2023/08/24-15:09:37.462595 7fab4b7fe6c0 Delete type=3 #78
2023/08/07-22:18:13.978889 7f5afddfa6c0 Delete type=0 #40 2023/08/24-15:09:37.462673 7fab4b7fe6c0 Delete type=0 #80
2023/08/07-23:27:50.992870 7f58677fe6c0 Level-0 table #45: started 2023/08/24-15:56:20.976153 7fab497fa6c0 Level-0 table #85: started
2023/08/07-23:27:50.992899 7f58677fe6c0 Level-0 table #45: 0 bytes OK 2023/08/24-15:56:20.976179 7fab497fa6c0 Level-0 table #85: 0 bytes OK
2023/08/07-23:27:50.999291 7f58677fe6c0 Delete type=0 #43 2023/08/24-15:56:20.984268 7fab497fa6c0 Delete type=0 #83
2023/08/07-23:27:51.013019 7f58677fe6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) 2023/08/24-15:56:20.984458 7fab497fa6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)

Binary file not shown.

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;
} }
@ -1147,8 +1155,8 @@ ul, li {
} }
#logo { #logo {
content : url(../images/ui/crucible_game_logo.png); content : url(../images/ui/logo_hex_yellow_01.webp);
width: 100px; width: 60px;
height: 60px; height: 60px;
} }
@ -1360,6 +1368,7 @@ Focus FOC: #ff0084
flex-grow:1; flex-grow:1;
max-width: 8rem; max-width: 8rem;
min-width: 8rem; min-width: 8rem;
text-align: start;
} }
.item-field-text-long { .item-field-text-long {
flex-grow:1; flex-grow:1;
@ -1389,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;
} }
@ -1410,7 +1422,12 @@ Focus FOC: #ff0084
} }
.item-controls-fixed { .item-controls-fixed {
min-width:2rem; min-width:2rem;
max-width: 2rem; /*max-width: 2rem;*/
}
.item-controls-fixed-small {
min-width:1rem;
font-size: 0.8rem;
/*max-width: 2rem;*/
} }
.biodata-portrait { .biodata-portrait {
min-height: 512px; min-height: 512px;
@ -1426,3 +1443,10 @@ Focus FOC: #ff0084
.margin-left-8 { .margin-left-8 {
margin-left: 8px; margin-left: 8px;
} }
.maneuver-is-stock {
display: none;
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": [
{ {
@ -30,15 +30,6 @@
"private": false, "private": false,
"flags": {} "flags": {}
}, },
{
"type": "Item",
"label": "Weapons",
"name": "weapons",
"path": "packs/weapons.db",
"system": "fvtt-hero-system-6",
"private": false,
"flags": {}
},
{ {
"type": "Item", "type": "Item",
"label": "Skills", "label": "Skills",
@ -100,15 +91,15 @@
"styles": [ "styles": [
"styles/simple.css" "styles/simple.css"
], ],
"version": "11.0.3", "version": "11.0.22",
"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.3.zip", "download": "https://www.uberwald.me/gitea/public/fvtt-hero-system-6/archive/fvtt-hero-system-6-v11.0.22.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

@ -1,7 +1,8 @@
{ {
"Actor": { "Actor": {
"types": [ "types": [
"character" "character",
"minion"
], ],
"templates": { "templates": {
"biodata": { "biodata": {
@ -309,6 +310,15 @@
"movements" "movements"
], ],
"subactors": [] "subactors": []
},
"minion": {
"templates": [
"biodata",
"characteristics",
"defenses",
"movements"
],
"subactors": []
} }
}, },
"Item": { "Item": {
@ -344,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,
@ -365,6 +378,8 @@
"pha": "", "pha": "",
"ocv": "", "ocv": "",
"dcv" : "", "dcv" : "",
"omcv": "",
"dmcv" : "",
"isstock": false, "isstock": false,
"active": false "active": false
}, },
@ -406,7 +421,19 @@
"subtype": "equipment", "subtype": "equipment",
"value": 0, "value": 0,
"weight": 0, "weight": 0,
"moneycost": 0 "moneycost": 0,
"ocv": 0,
"omcv": 0,
"dmcv": 0,
"rmod": 0,
"pd": 0,
"ed": 0,
"rpd": 0,
"red": 0,
"mentaldefense": 0,
"powerdefense": 0,
"flashdefense": 0,
"otherdefense": 0
}, },
"attack": { "attack": {
"templates": [ "templates": [

View File

@ -18,8 +18,8 @@
<ul class="item-list alternate-list"> <ul class="item-list alternate-list">
<li class="item flexrow"> <li class="item flexrow">
<label class="item-field-label-medium">Alternate IDs</label> <label class="item-field-label-medium">Alternate IDs</label>
<input type="text" class="item-field-label-long4" name="system.biodata.alternateids" value="{{system.biodata.origin}}" <input type="text" class="item-field-label-long4" name="system.biodata.alternateids"
data-dtype="String" /> value="{{system.biodata.origin}}" data-dtype="String" />
</li> </li>
</ul> </ul>
</div> </div>
@ -29,21 +29,23 @@
<ul class="item-list alternate-list"> <ul class="item-list alternate-list">
<li class="flexrow item"> <li class="flexrow item">
<label class="item-field-label-medium">Campaign</label> <label class="item-field-label-medium">Campaign</label>
<input type="text" class="item-field-label-long3" name="system.biodata.campaign" value="{{system.biodata.campaign}}" data-dtype="String" /> <input type="text" class="item-field-label-long3" name="system.biodata.campaign"
value="{{system.biodata.campaign}}" data-dtype="String" />
</li> </li>
<li class="flexrow item"> <li class="flexrow item">
<label class="item-field-label-medium">Player</label> <label class="item-field-label-medium">Player</label>
<input type="text" class="item-field-label-long3" name="system.biodata.player" value="{{system.biodata.player}}" <input type="text" class="item-field-label-long3" name="system.biodata.player"
data-dtype="String" /> value="{{system.biodata.player}}" data-dtype="String" />
</li> </li>
<li class="flexrow item"> <li class="flexrow item">
<label class="item-field-label-medium">GM</label> <label class="item-field-label-medium">GM</label>
<input type="text" class="item-field-label-long3" name="system.biodata.gm" value="{{system.biodata.gm}}" <input type="text" class="item-field-label-long3" name="system.biodata.gm"
data-dtype="String" /> value="{{system.biodata.gm}}" data-dtype="String" />
</li> </li>
<li class="item flexrow"> <li class="item flexrow">
<label class="item-field-label-medium">Hair</label> <label class="item-field-label-medium">Hair</label>
<input type="text" class="item-field-label-long3" name="system.biodata.hair" value="{{system.biodata.hair}}" data-dtype="String" /> <input type="text" class="item-field-label-long3" name="system.biodata.hair"
value="{{system.biodata.hair}}" data-dtype="String" />
</li> </li>
</ul> </ul>
</div> </div>
@ -51,19 +53,23 @@
<ul class="item-list alternate-list"> <ul class="item-list alternate-list">
<li class="flexrow item"> <li class="flexrow item">
<label class="item-field-label-medium">Gender</label> <label class="item-field-label-medium">Gender</label>
<input type="text" class="item-field-label-medium" name="system.biodata.gender" value="{{system.biodata.gender}}" data-dtype="String" /> <input type="text" class="item-field-label-medium" name="system.biodata.gender"
value="{{system.biodata.gender}}" data-dtype="String" />
</li> </li>
<li class="item flexrow"> <li class="item flexrow">
<label class="item-field-label-medium">Height</label> <label class="item-field-label-medium">Height</label>
<input type="text" class="item-field-label-medium" name="system.biodata.height" value="{{system.biodata.height}}" data-dtype="String" /> <input type="text" class="item-field-label-medium" name="system.biodata.height"
value="{{system.biodata.height}}" data-dtype="String" />
</li> </li>
<li class="item flexrow"> <li class="item flexrow">
<label class="item-field-label-medium">Mass</label> <label class="item-field-label-medium">Mass</label>
<input type="text" class="item-field-label-medium" name="system.biodata.mass" value="{{system.biodata.mass}}" data-dtype="String" /> <input type="text" class="item-field-label-medium" name="system.biodata.mass"
value="{{system.biodata.mass}}" data-dtype="String" />
</li> </li>
<li class="item flexrow"> <li class="item flexrow">
<label class="item-field-label-medium">Eyes</label> <label class="item-field-label-medium">Eyes</label>
<input type="text" class="item-field-label-medium" name="system.biodata.eyes" value="{{system.biodata.eyes}}" data-dtype="String" /> <input type="text" class="item-field-label-medium" name="system.biodata.eyes"
value="{{system.biodata.eyes}}" data-dtype="String" />
</li> </li>
</ul> </ul>
</div> </div>
@ -73,19 +79,23 @@
<ul class="item-list alternate-list"> <ul class="item-list alternate-list">
<li class="item flexrow"> <li class="item flexrow">
<label class="item-field-label-medium">Points</label> <label class="item-field-label-medium">Points</label>
<input type="text" class="item-field-label-short" name="system.biodata.points" value="{{system.biodata.origin}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.biodata.points"
value="{{system.biodata.origin}}" data-dtype="Number" />
<label class="">&nbsp;</label> <label class="">&nbsp;</label>
<label class="item-field-label-medium">Complications</label> <label class="item-field-label-medium">Complications</label>
<input type="text" class="item-field-label-short" name="system.biodata.complications" value="{{system.biodata.complications}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.biodata.complications"
value="{{system.biodata.complications}}" data-dtype="Number" />
<label class="">&nbsp;</label> <label class="">&nbsp;</label>
<label class="item-field-label-medium">XP Earned</label> <label class="item-field-label-medium">XP Earned</label>
<input type="text" class="item-field-label-short" name="system.biodata.xpearned" value="{{system.biodata.xpearned}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.biodata.xpearned"
value="{{system.biodata.xpearned}}" data-dtype="Number" />
<label class="">&nbsp;</label> <label class="">&nbsp;</label>
<label class="item-field-label-medium">XP Spent</label> <label class="item-field-label-medium">XP Spent</label>
<input type="text" class="item-field-label-short" name="system.biodata.xpspent" value="{{system.biodata.xpspent}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.biodata.xpspent"
value="{{system.biodata.xpspent}}" data-dtype="Number" />
<label class="">&nbsp;</label> <label class="">&nbsp;</label>
</li> </li>
</ul> </ul>
@ -127,29 +137,44 @@
<label class="item-field-label-short">&nbsp;</label> <label class="item-field-label-short">&nbsp;</label>
<label class="item-field-label-medium">Lift</label> <label class="item-field-label-medium">Lift</label>
<input type="text" class="item-field-label-short update-field" disabled data-field-name="system.characteristics.str.lift" value="{{characteristics.str.lift}}" data-dtype="String" /> <input type="text" class="item-field-label-short update-field" disabled
data-field-name="system.characteristics.str.lift" value="{{characteristics.str.lift}}"
data-dtype="String" />
<label class="item-field-label-short">&nbsp;</label> <label class="item-field-label-short">&nbsp;</label>
<label class="item-field-label-medium">STR END</label> <label class="item-field-label-medium">STR END</label>
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.str.strend" disabled value="{{characteristics.str.strend}}" data-dtype="Number" /> <input type="text" class="item-field-label-short update-field"
data-field-name="system.characteristics.str.strend" disabled value="{{characteristics.str.strend}}"
data-dtype="Number" />
</li> </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>
@ -157,27 +182,31 @@
{{#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}}" />
<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> <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}}
<a class="roll-direct" data-roll-source="Maneuver {{maneuver.name}}" data-roll-formula="{{maneuver.system.effectrollformula}}"> <a class="roll-direct" data-roll-source="Maneuver {{maneuver.name}}"
data-roll-formula="{{maneuver.system.effectrollformula}}">
<i class="fas fa-dice"></i>{{maneuver.system.effectrollformula}} <i class="fas fa-dice"></i>{{maneuver.system.effectrollformula}}
</a> </a>
{{/if}} {{/if}}
</span> </span>
<span class="">&nbsp;</span>
<div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li> </li>
{{/each}} {{/each}}
</ul> </ul>
@ -189,16 +218,23 @@
<li class="flexrow item"> <li class="flexrow item">
<label class="item-packed">Initiative</label> <label class="item-packed">Initiative</label>
<input type="text" class="margin-left-4item-packed item-field-label-very-short update-field" data-field-name="system.characteristics.dex.initiative" value="{{characteristics.dex.initiative}}" data-dtype="Number" /> <input type="text" class="margin-left-4item-packed item-field-label-very-short update-field"
data-field-name="system.characteristics.dex.initiative" value="{{characteristics.dex.initiative}}"
data-dtype="Number" />
<label class="items-title-text item-packed margin-left-8">SPD</label> <label class="items-title-text item-packed margin-left-8">SPD</label>
<input type="text" class="item-field-label-very-short margin-left-4 update-field item-packed" data-field-name="system.characteristics.spd.value" value="{{characteristics.spd.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-very-short margin-left-4 update-field item-packed"
data-field-name="system.characteristics.spd.value" value="{{characteristics.spd.value}}"
data-dtype="Number" />
<button class="chat-card-small-button item-field-label-short margin-left-8 hold-action item-packed">{{#if isHold}}Unhold{{else}}Hold{{/if}}</button> <button class="chat-card-small-button item-field-label-short margin-left-8 hold-action item-packed">{{#if
<button class="chat-card-small-button item-field-label-short margin-left-4 abort-action item-packed">{{#if isAbort}}Unabort{{else}}Abort{{/if}}</button> isHold}}Unhold{{else}}Hold{{/if}}</button>
<button class="chat-card-small-button item-field-label-short margin-left-4 abort-action item-packed">{{#if
isAbort}}Unabort{{else}}Abort{{/if}}</button>
<label class="items-title-text margin-left-8">Presence attack</label> <label class="items-title-text margin-left-8">Presence attack</label>
<a class="roll-direct" data-roll-source="Presence attack" data-roll-formula="{{system.biodata.presenceattack.rollFormula}}"> <a class="roll-direct" data-roll-source="Presence attack"
data-roll-formula="{{system.biodata.presenceattack.rollFormula}}">
<i class="fas fa-dice"></i>{{system.biodata.presenceattack.displayFormula}} <i class="fas fa-dice"></i>{{system.biodata.presenceattack.displayFormula}}
</a> </a>
@ -223,8 +259,10 @@
{{#if char.isvital}} {{#if char.isvital}}
<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" data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short update-field"
<input type="text" class="item-field-label-short" name="system.characteristics.{{key}}.damage" value="{{char.damage}}" data-dtype="Number" /> data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.characteristics.{{key}}.damage"
value="{{char.damage}}" data-dtype="Number" />
</li> </li>
{{/if}} {{/if}}
{{/each}} {{/each}}
@ -250,43 +288,59 @@
{{#if char.isdefense}} {{#if char.isdefense}}
<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" data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short update-field"
<input type="text" class="item-field-label-short" name="system.characteristics.{{key}}.resistant" value="{{char.resistant}}" data-dtype="Number" /> data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.characteristics.{{key}}.resistant"
value="{{char.resistant}}" data-dtype="Number" />
</li> </li>
{{/if}} {{/if}}
{{/each}} {{/each}}
{{#each defenses as |def key|}} {{#each defenses as |def key|}}
<li class="item flexrow list-item list-item-shadow" data-defense-key="{{key}}"> <li class="item flexrow list-item list-item-shadow" data-defense-key="{{key}}">
{{#if def.iseditable}} {{#if def.iseditable}}
<input type="text" class="item-field-label-long update-field" data-field-name="system.defenses.{{key}}.label" value="{{def.label}}" data-dtype="String" /> <input type="text" class="item-field-label-long update-field"
data-field-name="system.defenses.{{key}}.label" value="{{def.label}}" data-dtype="String" />
{{else}} {{else}}
<span class="item-field-label-long">{{def.label}}</span> <span class="item-field-label-long">{{def.label}}</span>
{{/if}} {{/if}}
<input type="text" class="item-field-label-short update-field" data-field-name="system.defenses.{{key}}.value" value="{{def.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short update-field"
<input type="text" class="item-field-label-short" name="system.defenses.{{key}}.resistant" value="{{def.resistant}}" data-dtype="Number" /> data-field-name="system.defenses.{{key}}.value" value="{{def.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.defenses.{{key}}.resistant"
value="{{def.resistant}}" data-dtype="Number" />
</li> </li>
{{/each}} {{/each}}
</ul> </ul>
</div> </div>
</div> </div>
<div class="item"> <div class="item">
<label class="item-field-label-short">OCV</label> <label class="item-field-label-short">
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.ocv.value" value="{{characteristics.ocv.value}}" data-dtype="Number" /> <a class="roll-charac" data-charac-key="ocv"><i class="fas fa-dice"></i>OCV</a>
</label>
<input type="text" class="item-field-label-short update-field"
data-field-name="system.characteristics.ocv.value" value="{{characteristics.ocv.value}}"
data-dtype="Number" />
<label class="item-field-label-short">&nbsp;</label> <label class="item-field-label-short">&nbsp;</label>
<label class="item-field-label-short">DCV</label> <label class="item-field-label-short">DCV</label>
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.dcv.value" value="{{characteristics.dcv.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short update-field"
data-field-name="system.characteristics.dcv.value" value="{{characteristics.dcv.value}}"
data-dtype="Number" />
<label class="item-field-label-short">&nbsp;</label> <label class="item-field-label-short">&nbsp;</label>
<label class="item-field-label-short">OMCV</label> <label class="item-field-label-short">
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.omcv.value" value="{{characteristics.omcv.value}}" data-dtype="Number" /> <a class="roll-charac" data-charac-key="omcv"><i class="fas fa-dice"></i>OMCV</a>
</label>
<input type="text" class="item-field-label-short update-field"
data-field-name="system.characteristics.omcv.value" value="{{characteristics.omcv.value}}"
data-dtype="Number" />
<label class="item-field-label-short">&nbsp;</label> <label class="item-field-label-short">&nbsp;</label>
<label class="item-field-label-short">DMCV</label> <label class="item-field-label-short">DMCV</label>
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.dmcv.value" value="{{characteristics.dmcv.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short update-field"
data-field-name="system.characteristics.dmcv.value" value="{{characteristics.dmcv.value}}"
data-dtype="Number" />
</div> </div>
<div class="flexrow"> <div class="flexrow">
@ -309,10 +363,13 @@
<span class="item-field-label-long"> <span class="item-field-label-long">
<a class="roll-perception"><i class="fas fa-dice"></i>Perception Roll</a> <a class="roll-perception"><i class="fas fa-dice"></i>Perception Roll</a>
</span> </span>
<input type="text" class="item-field-label-short update-field" data-field-name="system.characteristics.int.perceptionroll" value="{{characteristics.int.perceptionroll}}" data-dtype="Number" /> <input type="text" class="item-field-label-short update-field"
data-field-name="system.characteristics.int.perceptionroll"
value="{{characteristics.int.perceptionroll}}" data-dtype="Number" />
</li> </li>
</ul> </ul>
<textarea type="text" class="textarea-full-height padd-right" name="system.biodata.combatnotes1" data-dtype="String">{{system.biodata.combatnotes1}}</textarea> <textarea rows="20" type="text" class="textarea-full-height padd-right" name="system.biodata.combatnotes1"
data-dtype="String">{{system.biodata.combatnotes1}}</textarea>
</div> </div>
<div> <div>
@ -332,20 +389,26 @@
{{#if char.ismovement}} {{#if char.ismovement}}
<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" data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" /> <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}}.ncvalue" value="{{char.ncvalue}}" data-dtype="Number" /> data-field-name="system.characteristics.{{key}}.value" value="{{char.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short update-field"
data-field-name="system.characteristics.{{key}}.ncvalue" value="{{char.ncvalue}}"
data-dtype="Number" />
</li> </li>
{{/if}} {{/if}}
{{/each}} {{/each}}
{{#each movements as |move key|}} {{#each movements as |move key|}}
<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}}">
{{#if move.iseditable}} {{#if move.iseditable}}
<input type="text" class="item-field-label-long update-field" data-field-name="system.movements.{{key}}.label" value="{{move.label}}" data-dtype="String" /> <input type="text" class="item-field-label-long update-field"
data-field-name="system.movements.{{key}}.label" value="{{move.label}}" data-dtype="String" />
{{else}} {{else}}
<span class="item-field-label-long">{{move.label}}</span> <span class="item-field-label-long">{{move.label}}</span>
{{/if}} {{/if}}
<input type="text" class="item-field-label-short update-field" data-field-name="system.movements.{{key}}.value" value="{{move.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short update-field"
<input type="text" class="item-field-label-short" value="{{mul move.value 2}}" disabled data-dtype="Number" /> data-field-name="system.movements.{{key}}.value" value="{{move.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" value="{{mul move.value 2}}" disabled
data-dtype="Number" />
</li> </li>
{{/each}} {{/each}}
</ul> </ul>
@ -363,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">
@ -411,7 +474,8 @@
src="{{skill.img}}" /></a> src="{{skill.img}}" /></a>
<span class="item-field-label-long">{{skill.name}}</span> <span class="item-field-label-long">{{skill.name}}</span>
<span class="item-field-label-medium">{{upper skill.charac}}</span> <span class="item-field-label-medium">{{upper skill.charac}}</span>
<span class="item-field-label-short"><a class="roll-item" data-type="skill"><i class="fas fa-dice"></i>{{skill.roll}}-</a></span> <span class="item-field-label-short"><a class="roll-item" data-type="skill"><i
class="fas fa-dice"></i>{{skill.roll}}-</a></span>
<div class="item-filler">&nbsp;</div> <div class="item-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>
@ -439,7 +503,8 @@
src="{{perk.img}}" /></a> src="{{perk.img}}" /></a>
<span class="item-name-label">{{perk.name}}</span> <span class="item-name-label">{{perk.name}}</span>
{{#if perk.system.hasroll}} {{#if perk.system.hasroll}}
<span class="item-field-label-short"><a class="roll-item" data-type="perk"><i class="fas fa-dice"></i>{{perk.system.roll}}-</a></span> <span class="item-field-label-short"><a class="roll-item" data-type="perk"><i
class="fas fa-dice"></i>{{perk.system.roll}}-</a></span>
{{else}} {{else}}
<span class="item-field-label-short">&nbsp;</span> <span class="item-field-label-short">&nbsp;</span>
{{/if}} {{/if}}
@ -470,7 +535,8 @@
src="{{talent.img}}" /></a> src="{{talent.img}}" /></a>
<span class="item-name-label">{{talent.name}}</span> <span class="item-name-label">{{talent.name}}</span>
{{#if talent.system.hasroll}} {{#if talent.system.hasroll}}
<span class="item-field-label-short"><a class="roll-item" data-type="perk"><i class="fas fa-dice"></i>{{talent.system.roll}}-</a></span> <span class="item-field-label-short"><a class="roll-item" data-type="perk"><i
class="fas fa-dice"></i>{{talent.system.roll}}-</a></span>
{{else}} {{else}}
<span class="item-field-label-short">&nbsp;</span> <span class="item-field-label-short">&nbsp;</span>
{{/if}} {{/if}}
@ -486,6 +552,10 @@
{{!-- Maneuvers Tab --}} {{!-- Maneuvers Tab --}}
<div class="tab maneuver" data-group="primary" data-tab="maneuver"> <div class="tab maneuver" data-group="primary" data-tab="maneuver">
<div>
<button class="show-stock-maneuver">Show/Hide stock maneuvers</button>
</div>
<ul class="stat-list alternate-list item-list"> <ul class="stat-list alternate-list item-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">
@ -500,29 +570,80 @@
<span class="item-field-label-short"> <span class="item-field-label-short">
<label class="short-label">DCV</label> <label class="short-label">DCV</label>
</span> </span>
<span class="item-field-label-long"> <span class="item-field-label-long3">
<label class="short-label">Effects</label> <label class="short-label">Effects</label>
</span> </span>
</li> </li>
{{#each nonstockmaneuvers 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}}">
<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>
<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-long">{{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>
{{/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 --}}
@ -548,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|}}
@ -557,15 +678,26 @@
<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 class="fas fa-dice"></i>{{power.system.damage}}</a></span> <span class="item-field-label-medium"><a class="roll-damage" data-type="power"><i
class="fas fa-dice"></i>{{power.system.damage}}</a></span>
{{#if power.system.hasroll}} {{#if power.system.hasroll}}
<span class="item-field-label-short"><a class="roll-item" data-type="power"><i class="fas fa-dice"></i>{{power.system.roll}}-</a></span> <span class="item-field-label-short"><a class="roll-item" data-type="power"><i
class="fas fa-dice"></i>{{power.system.roll}}-</a></span>
{{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>
@ -593,7 +725,8 @@
src="{{comp.img}}" /></a> src="{{comp.img}}" /></a>
<span class="item-name-label">{{comp.name}}</span> <span class="item-name-label">{{comp.name}}</span>
{{#if comp.system.hasroll}} {{#if comp.system.hasroll}}
<span class="item-field-label-short"><a class="roll-item" data-type="perk"><i class="fas fa-dice"></i>{{comp.system.roll}}-</a></span> <span class="item-field-label-short"><a class="roll-item" data-type="perk"><i
class="fas fa-dice"></i>{{comp.system.roll}}-</a></span>
{{else}} {{else}}
<span class="item-field-label-short">&nbsp;</span> <span class="item-field-label-short">&nbsp;</span>
{{/if}} {{/if}}
@ -616,13 +749,19 @@
<span class="small-label">Total value : {{totalValue}}</span> <span class="small-label">Total value : {{totalValue}}</span>
</div> </div>
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Weapons" items=weapons}} {{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Money"
items=moneys}}
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Weapons"
items=weapons}}
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Armor" items=armors}} {{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Armor" items=armors}}
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Shields" items=shields}} {{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Shields"
items=shields}}
{{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Equipment" items=equipments}} {{> systems/fvtt-hero-system-6/templates/partials/partial-actor-equipment-section.hbs title="Equipment"
items=equipments}}
<hr> <hr>

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}}
@ -33,6 +42,12 @@
{{#if item}} {{#if item}}
<li>{{item.name}} ({{upperFirst item.type}})</li> <li>{{item.name}} ({{upperFirst item.type}})</li>
{{#if (eq item.type "maneuver")}}
<li>{{item.system.effects}}</li>
{{#if item.system.haseffectroll}}
<li>{{item.system.effectrollformula}}</li>
{{/if}}
{{/if}}
{{/if}} {{/if}}
{{#if (exists bonusMalus)}} {{#if (exists bonusMalus)}}
@ -42,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>
@ -51,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

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

View File

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

View File

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

View File

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

View File

@ -56,8 +56,88 @@
</select> </select>
</li> </li>
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-hasroll.hbs}} {{#if (eq system.subtype "weapon") }}
<li class="flexrow"><label class="item-field-label-long">OCV</label>
<input type="text" class="item-field-label-short" name="system.ocv" value="{{system.ocv}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">OMCV</label>
<input type="text" class="item-field-label-short" name="system.omcv" value="{{system.omcv}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">RMod</label>
<input type="text" class="item-field-label-short" name="system.rmod" value="{{system.rmod}}"
data-dtype="Number" />
</li>
{{/if}}
{{#if (eq system.subtype "shield") }}
<li class="flexrow"><label class="item-field-label-long">OCV</label>
<input type="text" class="item-field-label-short" name="system.ocv" value="{{system.ocv}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">DCV</label>
<input type="text" class="item-field-label-short" name="system.dcv" value="{{system.dcv}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">OMCV</label>
<input type="text" class="item-field-label-short" name="system.omcv" value="{{system.omcv}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">DMCV</label>
<input type="text" class="item-field-label-short" name="system.dmcv" value="{{system.dmcv}}"
data-dtype="Number" />
</li>
{{/if}}
{{#if (eq system.subtype "armor") }}
<li class="flexrow"><label class="item-field-label-long">DCV</label>
<input type="text" class="item-field-label-short" name="system.dcv" value="{{system.dcv}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">DMCV</label>
<input type="text" class="item-field-label-short" name="system.dmcv" value="{{system.dmcv}}"
data-dtype="Number" />
</li>
{{/if}}
{{#if (or (eq system.subtype "armor") (eq system.subtype "shield")) }}
<li class="flexrow"><label class="item-field-label-long">PD</label>
<input type="text" class="item-field-label-short" name="system.pd" value="{{system.pd}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">ED</label>
<input type="text" class="item-field-label-short" name="system.ed" value="{{system.ed}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">rPD</label>
<input type="text" class="item-field-label-short" name="system.rpd" value="{{system.rpd}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">rED</label>
<input type="text" class="item-field-label-short" name="system.red" value="{{system.red}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">Mental Defense</label>
<input type="text" class="item-field-label-short" name="system.mentaldefense" value="{{system.mentaldefense}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">Power Defense</label>
<input type="text" class="item-field-label-short" name="system.powerdefense" value="{{system.powerdefense}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">Flash Defense</label>
<input type="text" class="item-field-label-short" name="system.flashdefense" value="{{system.flashdefense}}"
data-dtype="Number" />
</li>
<li class="flexrow"><label class="item-field-label-long">Other Defense</label>
<input type="text" class="item-field-label-short" name="system.otherdefense" value="{{system.otherdefense}}"
data-dtype="Number" />
</li>
{{/if}}
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-hasroll.hbs}}
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-cost.hbs}} {{> systems/fvtt-hero-system-6/templates/partials/partial-item-cost.hbs}}
@ -65,5 +145,7 @@
</ul> </ul>
</div> </div>
{{> systems/fvtt-hero-system-6/templates/partials/partial-item-notes.hbs}}
</section> </section>
</form> </form>

Some files were not shown because too many files have changed in this diff Show More