5 Commits

Author SHA1 Message Date
7d27562bb4 Fix DR and defense values
All checks were successful
Release Creation / build (release) Successful in 1m7s
2025-12-08 11:54:36 +01:00
64f2efdcb9 Fix last HD Roll
All checks were successful
Release Creation / build (release) Successful in 1m35s
2025-11-07 07:58:58 +01:00
66f7aade25 Fix jog + update compendiums
All checks were successful
Release Creation / build (release) Successful in 52s
2025-10-17 20:06:49 +02:00
8f682a1458 Auto-publish package on releas 2025-10-01 17:26:29 +02:00
fa3054f24b Some granted dice/favor fixes
All checks were successful
Release Creation / build (release) Successful in 2m48s
2025-10-01 17:17:33 +02:00
45 changed files with 916 additions and 473 deletions

View File

@@ -1,6 +1,6 @@
name: Release Creation
on:
on:
release:
types: [published]
@@ -8,45 +8,56 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo "💡 The ${{ gitea.repository }} repository will cloned to the runner."
#- uses: actions/checkout@v3
- uses: RouxAntoine/checkout@v3.5.4
- run: echo "💡 The ${{ gitea.repository }} repository will cloned to the runner."
# get part of the tag after the `v`
- name: Extract tag version number
id: get_version
uses: battila7/get-version-action@v2
#- uses: actions/checkout@v3
- uses: RouxAntoine/checkout@v3.5.4
# Substitute the Manifest and Download URLs in the module.json
- name: Substitute Manifest and Download Links For Versioned Ones
id: sub_manifest_link_version
uses: microsoft/variable-substitution@v1
with:
files: 'system.json'
env:
version: ${{steps.get_version.outputs.version-without-v}}
url: https://www.uberwald.me/gitea/${{gitea.repository}}
manifest: https://www.uberwald.me/gitea/public/${{gitea.repository}}/releases/download/latest/system.json
download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-lethal-fantasy-${{github.event.release.tag_name}}.zip
# Create a zip file with all files required by the module to add to the release
- run: |
apt update -y
apt install -y zip
# get part of the tag after the `v`
- name: Extract tag version number
id: get_version
uses: battila7/get-version-action@v2
- run: zip -r ./fvtt-lethal-fantasy-${{github.event.release.tag_name}}.zip system.json README.md LICENSE assets/ css/ lang/ module/ packs-system/ templates/ lethal-fantasy.mjs
- name: setup go
uses: https://github.com/actions/setup-go@v4
with:
go-version: '>=1.20.1'
- name: Use Go Action
id: use-go-action
uses: https://gitea.com/actions/release-action@main
with:
files: |-
./fvtt-lethal-fantasy-${{github.event.release.tag_name}}.zip
system.json
api_key: '${{secrets.ALLOW_PUSH_RELEASE}}'
# Substitute the Manifest and Download URLs in the module.json
- name: Substitute Manifest and Download Links For Versioned Ones
id: sub_manifest_link_version
uses: microsoft/variable-substitution@v1
with:
files: "system.json"
env:
version: ${{steps.get_version.outputs.version-without-v}}
url: https://www.uberwald.me/gitea/${{gitea.repository}}
manifest: https://www.uberwald.me/gitea/public/${{gitea.repository}}/releases/download/latest/system.json
download: https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/fvtt-lethal-fantasy-${{github.event.release.tag_name}}.zip
# Create a zip file with all files required by the module to add to the release
- run: |
apt update -y
apt install -y zip
- run: zip -r ./fvtt-lethal-fantasy-${{github.event.release.tag_name}}.zip system.json README.md LICENSE assets/ css/ lang/ module/ packs-system/ templates/ lethal-fantasy.mjs
- name: setup go
uses: https://github.com/actions/setup-go@v4
with:
go-version: ">=1.20.1"
- name: Use Go Action
id: use-go-action
uses: https://gitea.com/actions/release-action@main
with:
files: |-
./fvtt-lethal-fantasy-${{github.event.release.tag_name}}.zip
system.json
api_key: "${{secrets.ALLOW_PUSH_RELEASE}}"
- name: Publish to Foundry server
uses: djlechuck/foundryvtt-publish-package-action@v1
with:
token: ${{ secrets.FOUNDRY_PUBLISH_KEY }}
id: "fvtt-lethal-fantasy"
version: ${{github.event.release.tag_name}}
manifest: "https://www.uberwald.me/gitea/${{gitea.repository}}/releases/download/${{github.event.release.tag_name}}/system.json"
notes: "https://www.uberwald.me/gitea/public/fvtt-lethal-fantasy/raw/branch/main/changelog.md"
compatibility-minimum: "13"
compatibility-verified: "13"

5
changelog.md Normal file
View File

@@ -0,0 +1,5 @@
## v13.0.12
- Fix favor/disfavor
- Fix granted dice
- Cosmetic fixes

View File

@@ -521,6 +521,9 @@ i.lethalfantasy {
min-width: 2.5rem;
max-width: 2.5rem;
}
.lethalfantasy .tab.character-combat .main-div .combat-details .combat-detail .ranged-attack-button {
font-size: 0.8rem;
}
.lethalfantasy .tab.character-combat .main-div .combat-details .combat-detail button {
min-width: 9rem;
}

View File

@@ -95,6 +95,9 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
const doc = this.document
switch (partId) {
case "main":
context.armorDR = this.actor.getArmorDR()
context.damageReduction = this.actor.computeDamageReduction()
context.damageReductionShield = this.actor.getShieldDR()
break
case "skills":
context.tab = context.tabs.skills
@@ -246,7 +249,6 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
async _onRoll(event, target) {
if (this.isEditMode) return
console.log("Roll event", event)
const rollType = event.target.dataset.rollType
let rollKey = event.target.dataset.rollKey;
let rollDice = event.target.dataset?.rollDice;

View File

@@ -104,6 +104,18 @@ export const SPELL_LETHARGY_DICE = [
{ dice: "D20", value: "20", level: "21-25", maxLevel: 25 }
]
export const GRANTED_DICE_CHOICES = {
"0": { label: "None", value: "0" },
"D2": { label: "D2", value: "D2" },
"D3": { label: "D3", value: "D3" },
"D4": { label: "D4", value: "D4" },
"D6": { label: "D6", value: "D6" },
"D8": { label: "D8", value: "D8" },
"D10": { label: "D10", value: "D10" },
"D12": { label: "D12", value: "D12" },
"D20": { label: "D20", value: "D20" }
}
export const INITIATIVE_DICE_CHOICES_PER_CLASS = {
"untrained": [
{ "name": "Asleep or totally distracted (2D12)", "value": "2D12" },
@@ -310,5 +322,6 @@ export const SYSTEM = {
MORTAL_CHOICES,
SPELL_CRITICAL,
MIRACLE_TYPES,
SPELL_LETHARGY_DICE
SPELL_LETHARGY_DICE,
GRANTED_DICE_CHOICES
}

View File

@@ -79,7 +79,48 @@ export default class LethalFantasyActor extends Actor {
}
/* *************************************************/
async prepareRoll(rollType, rollKey, rollDice ) {
computeDamageReduction() {
let naturalDR = Number(this.system.biodata.naturalDR) || 0
let magicDR = Number(this.system.biodata.magicDR) || 0
let armorDR = this.getArmorDR()
return naturalDR + magicDR + armorDR
}
/* *************************************************/
getShieldDR() {
let dr = 0
for (let item of this.items) {
if (item.type === "shield" && item.system.equipped) {
dr += Number(item.system.damageReduction)
}
}
return dr
}
/* *************************************************/
getArmorDR() {
let dr = 0
for (let item of this.items) {
if (item.type === "armor" && item.system.equipped) {
dr += Number(item.system.damageReduction)
}
}
return dr
}
/* *************************************************/
getArmorDefenseValue() {
let defenseValue = 0
for (let item of this.items) {
if (item.type === "armor" && item.system.equipped) {
defenseValue += Number(item.system.defense)
}
}
return defenseValue
}
/* *************************************************/
async prepareRoll(rollType, rollKey, rollDice) {
console.log("Preparing roll", rollType, rollKey, rollDice)
let rollTarget
switch (rollType) {
@@ -89,7 +130,7 @@ export default class LethalFantasyActor extends Actor {
formula: foundry.utils.duplicate(this.system.granted[rollKey]),
rollKey: rollKey
}
if ( rollTarget.formula === "" || rollTarget.formula === undefined) {
if (rollTarget.formula === "" || rollTarget.formula === undefined) {
rollTarget.formula = 0
}
break;
@@ -126,60 +167,61 @@ export default class LethalFantasyActor extends Actor {
rollTarget.rollKey = rollKey
break
case "shield-roll": {
rollTarget = this.items.find((i) => i.type === "shield" && i.id === rollKey)
let shieldSkill = this.items.find((i) => i.type === "skill" && i.name.toLowerCase() === rollTarget.name.toLowerCase())
rollTarget.skill = shieldSkill
rollTarget.rollKey = rollKey
}
rollTarget = this.items.find((i) => i.type === "shield" && i.id === rollKey)
let shieldSkill = this.items.find((i) => i.type === "skill" && i.name.toLowerCase() === rollTarget.name.toLowerCase())
rollTarget.skill = shieldSkill
rollTarget.rollKey = rollKey
}
break;
case "weapon-damage-small":
case "weapon-damage-medium":
case "weapon-attack":
case "weapon-defense": {
let weapon = this.items.find((i) => i.type === "weapon" && i.id === rollKey)
let skill
let skills = this.items.filter((i) => i.type === "skill" && i.name.toLowerCase() === weapon.name.toLowerCase())
let weapon = this.items.find((i) => i.type === "weapon" && i.id === rollKey)
let skill
let skills = this.items.filter((i) => i.type === "skill" && i.name.toLowerCase() === weapon.name.toLowerCase())
if (skills.length > 0) {
skill = this.getBestWeaponClassSkill(skills, rollType, 1.0)
} else {
skills = this.items.filter((i) => i.type === "skill" && i.name.toLowerCase().replace(" skill", "") === weapon.name.toLowerCase())
if (skills.length > 0) {
skill = this.getBestWeaponClassSkill(skills, rollType, 1.0)
} else {
skills = this.items.filter((i) => i.type === "skill" && i.name.toLowerCase().replace(" skill", "") === weapon.name.toLowerCase())
skills = this.items.filter((i) => i.type === "skill" && i.system.weaponClass === weapon.system.weaponClass)
if (skills.length > 0) {
skill = this.getBestWeaponClassSkill(skills, rollType, 1.0)
skill = this.getBestWeaponClassSkill(skills, rollType, 0.5)
} else {
skills = this.items.filter((i) => i.type === "skill" && i.system.weaponClass === weapon.system.weaponClass)
skills = this.items.filter((i) => i.type === "skill" && i.system.weaponClass.includes(SYSTEM.WEAPON_CATEGORIES[weapon.system.weaponClass]))
if (skills.length > 0) {
skill = this.getBestWeaponClassSkill(skills, rollType, 0.5)
skill = this.getBestWeaponClassSkill(skills, rollType, 0.25)
} else {
skills = this.items.filter((i) => i.type === "skill" && i.system.weaponClass.includes(SYSTEM.WEAPON_CATEGORIES[weapon.system.weaponClass]))
if (skills.length > 0) {
skill = this.getBestWeaponClassSkill(skills, rollType, 0.25)
} else {
ui.notifications.warn(game.i18n.localize("LETHALFANTASY.Notifications.skillNotFound"))
return
}
ui.notifications.warn(game.i18n.localize("LETHALFANTASY.Notifications.skillNotFound"))
return
}
}
}
if (!weapon || !skill) {
console.error("Weapon or skill not found", weapon, skill)
ui.notifications.warn(game.i18n.localize("LETHALFANTASY.Notifications.skillNotFound"))
return
}
rollTarget = skill
rollTarget.weapon = weapon
rollTarget.weaponSkillModifier = skill.weaponSkillModifier
rollTarget.rollKey = rollKey
rollTarget.combat = foundry.utils.duplicate(this.system.combat)
if ( rollType === "weapon-damage-small" || rollType === "weapon-damage-medium") {
rollTarget.grantedDice = this.system.granted.damageDice
}
if ( rollType === "weapon-attack") {
rollTarget.grantedDice = this.system.granted.attackDice
}
if ( rollType === "weapon-defense") {
rollTarget.grantedDice = this.system.granted.defenseDice
}
}
if (!weapon || !skill) {
console.error("Weapon or skill not found", weapon, skill)
ui.notifications.warn(game.i18n.localize("LETHALFANTASY.Notifications.skillNotFound"))
return
}
rollTarget = skill
rollTarget.weapon = weapon
rollTarget.weaponSkillModifier = skill.weaponSkillModifier
rollTarget.rollKey = rollKey
rollTarget.combat = foundry.utils.duplicate(this.system.combat)
if (rollType === "weapon-damage-small" || rollType === "weapon-damage-medium") {
rollTarget.grantedDice = this.system.granted.damageDice
}
if (rollType === "weapon-attack") {
rollTarget.grantedDice = this.system.granted.attackDice
}
if (rollType === "weapon-defense") {
rollTarget.armorDefense = this.getArmorDefenseValue()
rollTarget.grantedDice = this.system.granted.defenseDice
}
}
break
default:
ui.notifications.error(game.i18n.localize("LETHALFANTASY.Notifications.rollTypeNotFound") + String(rollType))

View File

@@ -134,6 +134,7 @@ export default class LethalFantasyRoll extends Roll {
let beyondSkill = false
let hasStaticModifier = false
let hasExplode = true
let actor = game.actors.get(options.actorId)
if (options.rollType === "challenge" || options.rollType === "save") {
options.rollName = game.i18n.localize(`LETHALFANTASY.Label.${options.rollTarget.rollKey}`)
@@ -209,7 +210,7 @@ export default class LethalFantasyRoll extends Roll {
options.rollTarget.charModifier = options.rollTarget.combat.rangedAttackModifier
}
} else {
options.rollTarget.value = options.rollTarget.combat.defenseModifier + options.rollTarget.weaponSkillModifier + options.rollTarget.weapon.system.bonuses.defenseBonus
options.rollTarget.value = options.rollTarget.combat.defenseModifier + options.rollTarget.weaponSkillModifier + options.rollTarget.weapon.system.bonuses.defenseBonus + options.rollTarget.armorDefense
options.rollTarget.charModifier = options.rollTarget.combat.defenseModifier
}
@@ -358,7 +359,7 @@ export default class LethalFantasyRoll extends Roll {
],
actions: {
"selectGranted": (event, button, dialog) => {
hasGrantedDice = true
hasGrantedDice = event.target.checked
},
"selectBeyondSkill": (event, button, dialog) => {
beyondSkill = button.checked
@@ -502,15 +503,17 @@ export default class LethalFantasyRoll extends Roll {
if (rollContext.favor === "favor") {
rollFavor = new this(baseFormula, options.data, rollData)
await rollFavor.evaluate()
console.log("Rolling with favor", rollFavor)
if (game?.dice3d) {
game.dice3d.showForRoll(rollFavor, game.user, true)
}
if (rollFavor.result > rollBase.result) {
if (Number(rollFavor.result) > Number(rollBase.result)) {
badResult = rollBase.result
rollBase = rollFavor
} else {
badResult = rollFavor.result
}
rollFavor = null
}
if (rollContext.favor === "disfavor") {
@@ -519,12 +522,13 @@ export default class LethalFantasyRoll extends Roll {
if (game?.dice3d) {
game.dice3d.showForRoll(rollFavor, game.user, true)
}
if (rollFavor.result < rollBase.result) {
if (Number(rollFavor.result) < Number(rollBase.result)) {
badResult = rollBase.result
rollBase = rollFavor
} else {
badResult = rollFavor.result
}
rollFavor = null
}
if (hasD30) {
@@ -535,7 +539,7 @@ export default class LethalFantasyRoll extends Roll {
options.D30result = rollD30.total
}
let rollTotal = -1
let rollTotal = 0
let diceResults = []
let resultType
let diceSum = 0
@@ -560,7 +564,8 @@ export default class LethalFantasyRoll extends Roll {
}
}
if (hasGrantedDice) {
if (hasGrantedDice && options.rollTarget.grantedDice && options.rollTarget.grantedDice !== "") {
titleFormula += ` + ${options.rollTarget.grantedDice.toUpperCase()}`
let grantedRoll = new Roll(options.rollTarget.grantedDice)
await grantedRoll.evaluate()
if (game?.dice3d) {
@@ -573,12 +578,12 @@ export default class LethalFantasyRoll extends Roll {
if (fullModifier !== 0) {
diceResults.push({ dice: `${rollModifier.formula.toUpperCase()}`, value: rollModifier.total })
if (fullModifier < 0) {
rollTotal = Math.max(diceSum - rollModifier.total, 0)
rollTotal += Math.max(diceSum - rollModifier.total, 0)
} else {
rollTotal = diceSum + rollModifier.total
rollTotal += diceSum + rollModifier.total
}
} else {
rollTotal = diceSum
rollTotal += diceSum
}
rollBase.options.resultType = resultType

View File

@@ -90,9 +90,9 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
current: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 })
})
schema.granted = new fields.SchemaField({
attackDice: new fields.StringField({ required: true, nullable: false, initial: "" }),
defenseDice: new fields.StringField({ required: true, nullable: false, initial: "" }),
damageDice: new fields.StringField({ required: true, nullable: false, initial: "" })
attackDice: new fields.StringField({ required: true, nullable: false, initial: "0", choices: SYSTEM.GRANTED_DICE_CHOICES }),
defenseDice: new fields.StringField({ required: true, nullable: false, initial: "0", choices: SYSTEM.GRANTED_DICE_CHOICES }),
damageDice: new fields.StringField({ required: true, nullable: false, initial: "0", choices: SYSTEM.GRANTED_DICE_CHOICES })
})
schema.movement = new fields.SchemaField({
@@ -120,6 +120,8 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
magicUser: new fields.BooleanField({ initial: false }),
clericUser: new fields.BooleanField({ initial: false }),
hpPerLevel: new fields.StringField({ required: true, nullable: false, initial: "" }),
naturalDR: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
magicDR: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
})
schema.modifiers = new fields.SchemaField({
@@ -293,7 +295,6 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
let wisDef = SYSTEM.CHARACTERISTICS_TABLES.wis.find((c) => c.value === this.characteristics.wis.value)
let maxInit = Number(wisDef.init_cap) || 1000
console.log("Rolling initiative for", this)
let roll = await LethalFantasyRoll.promptInitiative({
actorId: this.parent.id,

View File

@@ -6,9 +6,10 @@ export default class LethalFantasyShield extends foundry.abstract.TypeDataModel
const requiredInteger = { required: true, nullable: false, integer: true }
schema.description = new fields.HTMLField({ required: true, textSearch: true })
schema.defense = new fields.StringField({required: true, initial: "d4", choices: SYSTEM.SHIELD_DEFENSE_DICE})
schema.defense = new fields.StringField({ required: true, initial: "d4", choices: SYSTEM.SHIELD_DEFENSE_DICE })
schema.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
schema.hascover = new fields.BooleanField({ required: true, initial: false })
schema.damageReduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
schema.standing = new fields.SchemaField({
min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),

View File

@@ -1 +1 @@
MANIFEST-000424
MANIFEST-000456

View File

@@ -1,8 +1,8 @@
2025/09/20-09:24:47.271364 7f7d00dfa6c0 Recovering log #422
2025/09/20-09:24:47.284417 7f7d00dfa6c0 Delete type=3 #420
2025/09/20-09:24:47.284476 7f7d00dfa6c0 Delete type=0 #422
2025/09/20-09:32:46.867336 7f7cf9fff6c0 Level-0 table #427: started
2025/09/20-09:32:46.867378 7f7cf9fff6c0 Level-0 table #427: 0 bytes OK
2025/09/20-09:32:46.873522 7f7cf9fff6c0 Delete type=0 #425
2025/09/20-09:32:46.886330 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/09/20-09:32:46.886530 7f7cf9fff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/12/06-15:17:13.631288 7f19dd7fa6c0 Recovering log #454
2025/12/06-15:17:13.737044 7f19dd7fa6c0 Delete type=3 #452
2025/12/06-15:17:13.737119 7f19dd7fa6c0 Delete type=0 #454
2025/12/06-16:41:02.244527 7f19dbff76c0 Level-0 table #459: started
2025/12/06-16:41:02.244570 7f19dbff76c0 Level-0 table #459: 0 bytes OK
2025/12/06-16:41:02.281825 7f19dbff76c0 Delete type=0 #457
2025/12/06-16:41:02.281990 7f19dbff76c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/12/06-16:41:02.282024 7f19dbff76c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2025/09/19-21:01:58.948341 7f7cfaffd6c0 Recovering log #418
2025/09/19-21:01:58.990053 7f7cfaffd6c0 Delete type=3 #416
2025/09/19-21:01:58.990118 7f7cfaffd6c0 Delete type=0 #418
2025/09/19-22:28:27.055322 7f7cf9fff6c0 Level-0 table #423: started
2025/09/19-22:28:27.055429 7f7cf9fff6c0 Level-0 table #423: 0 bytes OK
2025/09/19-22:28:27.062766 7f7cf9fff6c0 Delete type=0 #421
2025/09/19-22:28:27.082558 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/09/19-22:28:27.082605 7f7cf9fff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/11/07-07:57:26.850226 7f14baffd6c0 Recovering log #450
2025/11/07-07:57:26.860132 7f14baffd6c0 Delete type=3 #448
2025/11/07-07:57:26.860209 7f14baffd6c0 Delete type=0 #450
2025/11/07-07:58:43.705140 7f14b8ff96c0 Level-0 table #455: started
2025/11/07-07:58:43.705171 7f14b8ff96c0 Level-0 table #455: 0 bytes OK
2025/11/07-07:58:43.711108 7f14b8ff96c0 Delete type=0 #453
2025/11/07-07:58:43.724495 7f14b8ff96c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
2025/11/07-07:58:43.724532 7f14b8ff96c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000424
MANIFEST-000456

View File

@@ -1,8 +1,8 @@
2025/09/20-09:24:47.288998 7f7cfb7fe6c0 Recovering log #422
2025/09/20-09:24:47.299397 7f7cfb7fe6c0 Delete type=3 #420
2025/09/20-09:24:47.299460 7f7cfb7fe6c0 Delete type=0 #422
2025/09/20-09:32:46.860990 7f7cf9fff6c0 Level-0 table #427: started
2025/09/20-09:32:46.861071 7f7cf9fff6c0 Level-0 table #427: 0 bytes OK
2025/09/20-09:32:46.867149 7f7cf9fff6c0 Delete type=0 #425
2025/09/20-09:32:46.886314 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/09/20-09:32:46.886448 7f7cf9fff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/12/06-15:17:13.747297 7f19dc7f86c0 Recovering log #454
2025/12/06-15:17:13.857630 7f19dc7f86c0 Delete type=3 #452
2025/12/06-15:17:13.857707 7f19dc7f86c0 Delete type=0 #454
2025/12/06-16:41:02.159042 7f19dbff76c0 Level-0 table #459: started
2025/12/06-16:41:02.159069 7f19dbff76c0 Level-0 table #459: 0 bytes OK
2025/12/06-16:41:02.201619 7f19dbff76c0 Delete type=0 #457
2025/12/06-16:41:02.281970 7f19dbff76c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
2025/12/06-16:41:02.282008 7f19dbff76c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2025/09/19-21:01:58.995284 7f7cfbfff6c0 Recovering log #418
2025/09/19-21:01:59.036400 7f7cfbfff6c0 Delete type=3 #416
2025/09/19-21:01:59.036480 7f7cfbfff6c0 Delete type=0 #418
2025/09/19-22:28:27.076046 7f7cf9fff6c0 Level-0 table #423: started
2025/09/19-22:28:27.076085 7f7cf9fff6c0 Level-0 table #423: 0 bytes OK
2025/09/19-22:28:27.082428 7f7cf9fff6c0 Delete type=0 #421
2025/09/19-22:28:27.082612 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/09/19-22:28:27.082639 7f7cf9fff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/11/07-07:57:26.863923 7f14b9ffb6c0 Recovering log #450
2025/11/07-07:57:26.873909 7f14b9ffb6c0 Delete type=3 #448
2025/11/07-07:57:26.873962 7f14b9ffb6c0 Delete type=0 #450
2025/11/07-07:58:43.711204 7f14b8ff96c0 Level-0 table #455: started
2025/11/07-07:58:43.711230 7f14b8ff96c0 Level-0 table #455: 0 bytes OK
2025/11/07-07:58:43.718265 7f14b8ff96c0 Delete type=0 #453
2025/11/07-07:58:43.724502 7f14b8ff96c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
2025/11/07-07:58:43.724539 7f14b8ff96c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000424
MANIFEST-000458

View File

@@ -1,8 +1,8 @@
2025/09/20-09:24:47.256899 7f7cfaffd6c0 Recovering log #422
2025/09/20-09:24:47.266896 7f7cfaffd6c0 Delete type=3 #420
2025/09/20-09:24:47.267003 7f7cfaffd6c0 Delete type=0 #422
2025/09/20-09:32:46.873729 7f7cf9fff6c0 Level-0 table #427: started
2025/09/20-09:32:46.873757 7f7cf9fff6c0 Level-0 table #427: 0 bytes OK
2025/09/20-09:32:46.880314 7f7cf9fff6c0 Delete type=0 #425
2025/09/20-09:32:46.886342 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/09/20-09:32:46.886583 7f7cf9fff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/12/06-15:17:13.504137 7f19ddffb6c0 Recovering log #456
2025/12/06-15:17:13.609897 7f19ddffb6c0 Delete type=3 #454
2025/12/06-15:17:13.609952 7f19ddffb6c0 Delete type=0 #456
2025/12/06-16:41:02.201733 7f19dbff76c0 Level-0 table #461: started
2025/12/06-16:41:02.201761 7f19dbff76c0 Level-0 table #461: 0 bytes OK
2025/12/06-16:41:02.244399 7f19dbff76c0 Delete type=0 #459
2025/12/06-16:41:02.281980 7f19dbff76c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/12/06-16:41:02.282016 7f19dbff76c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2025/09/19-21:01:58.905694 7f7d00dfa6c0 Recovering log #418
2025/09/19-21:01:58.943958 7f7d00dfa6c0 Delete type=3 #416
2025/09/19-21:01:58.944064 7f7d00dfa6c0 Delete type=0 #418
2025/09/19-22:28:27.069590 7f7cf9fff6c0 Level-0 table #423: started
2025/09/19-22:28:27.069620 7f7cf9fff6c0 Level-0 table #423: 0 bytes OK
2025/09/19-22:28:27.075890 7f7cf9fff6c0 Delete type=0 #421
2025/09/19-22:28:27.082581 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/09/19-22:28:27.082657 7f7cf9fff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/11/07-07:57:26.836688 7f14b97fa6c0 Recovering log #451
2025/11/07-07:57:26.847365 7f14b97fa6c0 Delete type=3 #449
2025/11/07-07:57:26.847456 7f14b97fa6c0 Delete type=0 #451
2025/11/07-07:58:43.699007 7f14b8ff96c0 Level-0 table #457: started
2025/11/07-07:58:43.699056 7f14b8ff96c0 Level-0 table #457: 0 bytes OK
2025/11/07-07:58:43.705029 7f14b8ff96c0 Delete type=0 #455
2025/11/07-07:58:43.724484 7f14b8ff96c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/11/07-07:58:43.724525 7f14b8ff96c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@@ -1 +1 @@
MANIFEST-000124
MANIFEST-000156

View File

@@ -1,8 +1,8 @@
2025/09/20-09:24:47.318521 7f7cfaffd6c0 Recovering log #122
2025/09/20-09:24:47.328528 7f7cfaffd6c0 Delete type=3 #120
2025/09/20-09:24:47.328622 7f7cfaffd6c0 Delete type=0 #122
2025/09/20-09:32:46.909549 7f7cf9fff6c0 Level-0 table #127: started
2025/09/20-09:32:46.909792 7f7cf9fff6c0 Level-0 table #127: 0 bytes OK
2025/09/20-09:32:46.915753 7f7cf9fff6c0 Delete type=0 #125
2025/09/20-09:32:46.934449 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/09/20-09:32:46.934489 7f7cf9fff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/12/06-15:17:13.990000 7f19dcff96c0 Recovering log #154
2025/12/06-15:17:14.078163 7f19dcff96c0 Delete type=3 #152
2025/12/06-15:17:14.078227 7f19dcff96c0 Delete type=0 #154
2025/12/06-16:41:02.444766 7f19dbff76c0 Level-0 table #159: started
2025/12/06-16:41:02.444810 7f19dbff76c0 Level-0 table #159: 0 bytes OK
2025/12/06-16:41:02.474131 7f19dbff76c0 Delete type=0 #157
2025/12/06-16:41:02.619626 7f19dbff76c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/12/06-16:41:02.668537 7f19dbff76c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2025/09/19-21:01:59.113262 7f7cfaffd6c0 Recovering log #118
2025/09/19-21:01:59.152822 7f7cfaffd6c0 Delete type=3 #116
2025/09/19-21:01:59.152924 7f7cfaffd6c0 Delete type=0 #118
2025/09/19-22:28:27.089546 7f7cf9fff6c0 Level-0 table #123: started
2025/09/19-22:28:27.089602 7f7cf9fff6c0 Level-0 table #123: 0 bytes OK
2025/09/19-22:28:27.095855 7f7cf9fff6c0 Delete type=0 #121
2025/09/19-22:28:27.116632 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/09/19-22:28:27.145745 7f7cf9fff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/11/07-07:57:26.889185 7f14ba7fc6c0 Recovering log #150
2025/11/07-07:57:26.898546 7f14ba7fc6c0 Delete type=3 #148
2025/11/07-07:57:26.898639 7f14ba7fc6c0 Delete type=0 #150
2025/11/07-07:58:43.718395 7f14b8ff96c0 Level-0 table #155: started
2025/11/07-07:58:43.718429 7f14b8ff96c0 Level-0 table #155: 0 bytes OK
2025/11/07-07:58:43.724414 7f14b8ff96c0 Delete type=0 #153
2025/11/07-07:58:43.724518 7f14b8ff96c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
2025/11/07-07:58:43.724544 7f14b8ff96c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000423
MANIFEST-000455

View File

@@ -1,8 +1,8 @@
2025/09/20-09:24:47.303028 7f7d00dfa6c0 Recovering log #421
2025/09/20-09:24:47.316425 7f7d00dfa6c0 Delete type=3 #419
2025/09/20-09:24:47.316502 7f7d00dfa6c0 Delete type=0 #421
2025/09/20-09:32:46.880413 7f7cf9fff6c0 Level-0 table #426: started
2025/09/20-09:32:46.880437 7f7cf9fff6c0 Level-0 table #426: 0 bytes OK
2025/09/20-09:32:46.886234 7f7cf9fff6c0 Delete type=0 #424
2025/09/20-09:32:46.886455 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/09/20-09:32:46.886560 7f7cf9fff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/12/06-15:17:13.870724 7f19ddffb6c0 Recovering log #453
2025/12/06-15:17:13.958289 7f19ddffb6c0 Delete type=3 #451
2025/12/06-15:17:13.958388 7f19ddffb6c0 Delete type=0 #453
2025/12/06-16:41:02.118716 7f19dbff76c0 Level-0 table #458: started
2025/12/06-16:41:02.121944 7f19dbff76c0 Level-0 table #458: 0 bytes OK
2025/12/06-16:41:02.158936 7f19dbff76c0 Delete type=0 #456
2025/12/06-16:41:02.281954 7f19dbff76c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/12/06-16:41:02.282000 7f19dbff76c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)

View File

@@ -1,8 +1,8 @@
2025/09/19-21:01:59.044069 7f7cfb7fe6c0 Recovering log #417
2025/09/19-21:01:59.110180 7f7cfb7fe6c0 Delete type=3 #415
2025/09/19-21:01:59.110282 7f7cfb7fe6c0 Delete type=0 #417
2025/09/19-22:28:27.062900 7f7cf9fff6c0 Level-0 table #422: started
2025/09/19-22:28:27.062937 7f7cf9fff6c0 Level-0 table #422: 0 bytes OK
2025/09/19-22:28:27.069460 7f7cf9fff6c0 Delete type=0 #420
2025/09/19-22:28:27.082570 7f7cf9fff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/09/19-22:28:27.082620 7f7cf9fff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/11/07-07:57:26.876181 7f14b97fa6c0 Recovering log #449
2025/11/07-07:57:26.886933 7f14b97fa6c0 Delete type=3 #447
2025/11/07-07:57:26.887010 7f14b97fa6c0 Delete type=0 #449
2025/11/07-07:58:43.747501 7f14b8ff96c0 Level-0 table #454: started
2025/11/07-07:58:43.747545 7f14b8ff96c0 Level-0 table #454: 0 bytes OK
2025/11/07-07:58:43.754307 7f14b8ff96c0 Delete type=0 #452
2025/11/07-07:58:43.772388 7f14b8ff96c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/11/07-07:58:43.785957 7f14b8ff96c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)

View File

@@ -375,6 +375,9 @@
min-width: 2.5rem;
max-width: 2.5rem;
}
.ranged-attack-button {
font-size: 0.8rem;
}
button {
min-width: 9rem;
}

View File

@@ -1,97 +1,180 @@
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
<section
class="tab character-{{tab.id}} {{tab.cssClass}}"
data-tab="{{tab.id}}"
data-group="{{tab.group}}"
>
<div class="main-div">
<fieldset>
<legend>{{localize "LETHALFANTASY.Label.biodata"}}</legend>
<div class="biodata">
<div class="biodata-elem">
<span class="name">Class</span>
{{formInput systemFields.biodata.fields.class value=system.biodata.class }}
</div>
<div class="biodata-elem">
<span class="name">Level</span>
{{formInput systemFields.biodata.fields.level value=system.biodata.level }}
</div>
<div class="biodata-elem">
<span class="name">Mortal</span>
{{formInput systemFields.biodata.fields.mortal value=system.biodata.mortal }}
</div>
<div class="biodata-elem">
<span class="name">Alignment</span>
{{formInput systemFields.biodata.fields.alignment value=system.biodata.alignment }}
</div>
<div class="biodata-elem">
<span class="name">Age</span>
{{formInput systemFields.biodata.fields.age value=system.biodata.age }}
</div>
<div class="biodata-elem">
<span class="name">Height</span>
{{formInput systemFields.biodata.fields.height value=system.biodata.height }}
</div>
<div class="biodata-elem">
<span class="name">Weight</span>
{{formInput systemFields.biodata.fields.weight value=system.biodata.weight }}
</div>
<div class="biodata-elem">
<span class="name">Eyes</span>
{{formInput systemFields.biodata.fields.eyes value=system.biodata.eyes }}
</div>
<div class="biodata-elem">
<span class="name">Hair</span>
{{formInput systemFields.biodata.fields.hair value=system.biodata.hair }}
</div>
<div class="biodata-elem">
<span class="name">Dev. Points (Total)</span>
{{formInput systemFields.developmentPoints.fields.total value=system.developmentPoints.total }}
</div>
<div class="biodata-elem">
<span class="name">Dev. Points (Rem.)</span>
{{formInput systemFields.developmentPoints.fields.remaining value=system.developmentPoints.remaining }}
</div>
<div class="biodata-elem">
<span class="name">Magic User</span>
{{formInput systemFields.biodata.fields.magicUser value=system.biodata.magicUser }}
</div>
<div class="biodata-elem">
<span class="name">Cleric User</span>
{{formInput systemFields.biodata.fields.clericUser value=system.biodata.clericUser }}
</div>
<div class="biodata-elem">
<span class="name">Save bonus (1/5levels)</span>
{{formInput systemFields.modifiers.fields.saveModifier value=system.modifiers.saveModifier disabled=true}}
</div>
<fieldset>
<legend>{{localize "LETHALFANTASY.Label.biodata"}}</legend>
<div class="biodata">
<div class="biodata-elem">
<span class="name">Class</span>
{{formInput
systemFields.biodata.fields.class
value=system.biodata.class
}}
</div>
<div class="biodata-elem">
<span class="name">Level</span>
{{formInput
systemFields.biodata.fields.level
value=system.biodata.level
}}
</div>
<div class="biodata-elem">
<span class="name">Mortal</span>
{{formInput
systemFields.biodata.fields.mortal
value=system.biodata.mortal
}}
</div>
<div class="biodata-elem">
<span class="name">Alignment</span>
{{formInput
systemFields.biodata.fields.alignment
value=system.biodata.alignment
}}
</div>
<div class="biodata-elem">
<span class="name">Age</span>
{{formInput systemFields.biodata.fields.age value=system.biodata.age}}
</div>
<div class="biodata-elem">
<span class="name">Height</span>
{{formInput
systemFields.biodata.fields.height
value=system.biodata.height
}}
</div>
<div class="biodata-elem">
<span class="name">Weight</span>
{{formInput
systemFields.biodata.fields.weight
value=system.biodata.weight
}}
</div>
<div class="biodata-elem">
<span class="name">Eyes</span>
{{formInput
systemFields.biodata.fields.eyes
value=system.biodata.eyes
}}
</div>
<div class="biodata-elem">
<span class="name">Hair</span>
{{formInput
systemFields.biodata.fields.hair
value=system.biodata.hair
}}
</div>
<div class="biodata-elem">
<span class="name">Dev. Points (Total)</span>
{{formInput
systemFields.developmentPoints.fields.total
value=system.developmentPoints.total
}}
</div>
<div class="biodata-elem">
<span class="name">Dev. Points (Rem.)</span>
{{formInput
systemFields.developmentPoints.fields.remaining
value=system.developmentPoints.remaining
}}
</div>
<div class="biodata-elem">
<span class="name">Magic User</span>
{{formInput
systemFields.biodata.fields.magicUser
value=system.biodata.magicUser
}}
</div>
<div class="biodata-elem">
<span class="name">Cleric User</span>
{{formInput
systemFields.biodata.fields.clericUser
value=system.biodata.clericUser
}}
</div>
<div class="biodata-elem">
<span class="name">Save bonus (1/5levels)</span>
{{formInput
systemFields.modifiers.fields.saveModifier
value=system.modifiers.saveModifier
disabled=true
}}
</div>
{{#if system.biodata.magicUser}}
<div class="biodata-elem">
<span class="name">Spell bonus (1/5levels)</span>
{{formInput systemFields.modifiers.fields.levelSpellModifier value=system.modifiers.levelSpellModifier disabled=true}}
</div>
{{/if}}
{{#if system.biodata.clericUser}}
<div class="biodata-elem">
<span class="name">Miracle bonus (1/5levels)</span>
{{formInput systemFields.modifiers.fields.levelMiracleModifier value=system.modifiers.levelMiracleModifier disabled=true}}
</div>
{{/if}}
{{#if system.biodata.magicUser}}
<div class="biodata-elem">
<span class="name">Spell bonus (1/5levels)</span>
{{formInput
systemFields.modifiers.fields.levelSpellModifier
value=system.modifiers.levelSpellModifier
disabled=true
}}
</div>
{{/if}}
{{#if system.biodata.clericUser}}
<div class="biodata-elem">
<span class="name">Miracle bonus (1/5levels)</span>
{{formInput
systemFields.modifiers.fields.levelMiracleModifier
value=system.modifiers.levelMiracleModifier
disabled=true
}}
</div>
{{/if}}
<div class="biodata-elem">
<span class="name">Last HD roll</span>
{{formInput systemFields.biodata.fields.hpPerLevel value=system.biodata.hpPerLevel disabled=true}}
</div>
<div class="biodata-elem">
<span class="name">Last HD roll</span>
{{formInput
systemFields.biodata.fields.hpPerLevel
value=system.biodata.hpPerLevel
disabled=isPlayMode
}}
</div>
<div class="biodata-elem">
<span class="name">Natural DR</span>
{{formInput
systemFields.biodata.fields.naturalDR
value=system.biodata.naturalDR
disabled=isPlayMode
}}
</div>
</div>
</fieldset>
<div class="biodata-elem">
<span class="name">Magical DR</span>
{{formInput
systemFields.biodata.fields.magicDR
value=system.biodata.magicDR
disabled=isPlayMode
}}
</div>
<fieldset>
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description"
toggled=true}}
</fieldset>
</fieldset>
<fieldset>
<legend>{{localize "LETHALFANTASY.Label.notes"}}</legend>
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
</fieldset>
<fieldset>
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
{{formInput
systemFields.description
enriched=enrichedDescription
value=system.description
name="system.description"
toggled=true
}}
</fieldset>
<fieldset>
<legend>{{localize "LETHALFANTASY.Label.notes"}}</legend>
{{formInput
systemFields.notes
enriched=enrichedNotes
value=system.notes
name="system.notes"
toggled=true
}}
</fieldset>
</div>
</section>

View File

@@ -6,11 +6,11 @@
<div class="combat-details">
<div class="combat-detail">
<button class="action" data-action="rangedAttackDefense">
<button class="action ranged-attack-button" data-action="rangedAttackDefense">
{{localize "LETHALFANTASY.Label.rangedAttackDefense"}}
</button>
<button class="action" data-action="rollInitiative">
<button class="action ranged-attack-button" data-action="rollInitiative">
{{localize "LETHALFANTASY.Label.rollInitiative"}}
</button>
@@ -22,23 +22,20 @@
</div>
<div class="flexrow granted">
<span class=""><a class="rollable" data-roll-type="granted" data-roll-key="attackDice"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"LETHALFANTASY.Label.grantedAttackDice"}}</a></span>
<span class="">{{localize
"LETHALFANTASY.Label.grantedAttackDice"}}</a></span>
{{formInput systemFields.granted.fields.attackDice value=system.granted.attackDice disabled=isPlayMode }}
</div>
<div class="flexrow granted ">
<span class=""><a class="rollable" data-roll-type="granted" data-roll-key="defenseDice"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"LETHALFANTASY.Label.grantedDefenseDice"}}</a></span>
<span class="">{{localize
"LETHALFANTASY.Label.grantedDefenseDice"}}</a></span>
{{formInput systemFields.granted.fields.defenseDice value=system.granted.defenseDice disabled=isPlayMode }}
</div>
<div class="flexrow granted">
<span class=""><a class="rollable" data-roll-type="granted" data-roll-key="damageDice"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"LETHALFANTASY.Label.grantedDamageDice"}}</a></span>
<span class="">{{localize
"LETHALFANTASY.Label.grantedDamageDice"}}</a></span>
{{formInput systemFields.granted.fields.damageDice value=system.granted.damageDice disabled=isPlayMode }}
</div>
@@ -69,8 +66,7 @@
<div class="weapon" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true"
data-drag-type="damage">
{{#if (ne item.img "icons/svg/item-bag.svg")}}
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}"
/>
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
{{/if}}
<div class="name" data-tooltip="{{item.system.description}}">
{{item.name}}
@@ -124,6 +120,7 @@
<div class="item-detail" data-tooltip="Maximum movement">{{item.system.maximumMovement}}</div>
<div class="item-detail" data-tooltip="HP">{{item.system.hp}}</div>
<div class="item-detail" data-tooltip="Damage Reduction">{{item.system.damageReduction}}</div>
<div class="item-detail" data-tooltip={{#if item.system.equipped}}"Equipped"{{else}}"Not Equipped"{{/if}}>{{#if item.system.equipped}}<i class="fas fa-check"></i>{{else}}<i class="fas fa-times"></i>{{/if}}</div>
<div class="controls">
<a data-tooltip="{{localize 'LETHALFANTASY.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
@@ -153,7 +150,7 @@
</div>
<div class="item-detail" data-tooltip="Movement reduction">{{item.system.movementreduction}}</div>
<div class="item-detail" data-tooltip="Has cover">{{#if item.system.hascover}}Cover{{/if}}</div>
<div class="item-detail" data-tooltip={{#if item.system.equipped}}"Equipped"{{else}}"Not Equipped"{{/if}}>{{#if item.system.equipped}}<i class="fas fa-check"></i>{{else}}<i class="fas fa-times"></i>{{/if}}</div>
<div class="controls">
<a data-tooltip="{{localize 'LETHALFANTASY.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>

View File

@@ -1,4 +1,6 @@
<section class="character-main character-main-{{ifThen isPlayMode 'play' 'edit'}}">
<section
class="character-main character-main-{{ifThen isPlayMode 'play' 'edit'}}"
>
{{log "character-main" this}}
<fieldset>
@@ -6,99 +8,189 @@
<div class="character-pc character-pc-{{ifThen isPlayMode 'play' 'edit'}}">
<div class="character-left">
<div class="character-left-image">
<img class="character-img" src="{{actor.img}}" data-edit="img" data-action="editImage"
data-tooltip="{{actor.name}}" />
<img
class="character-img"
src="{{actor.img}}"
data-edit="img"
data-action="editImage"
data-tooltip="{{actor.name}}"
/>
</div>
<fieldset class="">
<div class="flexrow character-hp">
<span class="name">{{localize "LETHALFANTASY.Label.HP"}}</span>
{{formInput systemFields.hp.fields.value value=system.hp.value disabled=isPlayMode
classes="character-hp-value"}}
{{formInput
systemFields.hp.fields.value
value=system.hp.value
disabled=isPlayMode
classes="character-hp-value"
}}
&nbsp;/&nbsp;
{{formInput systemFields.hp.fields.max value=system.hp.max disabled=isPlayMode
classes="character-hp-value"}}
{{formInput
systemFields.hp.fields.max
value=system.hp.max
disabled=isPlayMode
classes="character-hp-value"
}}
</div>
<div class="flexrow character-hp">
<span class="name">{{localize "LETHALFANTASY.Label.grit"}}</span>
{{formInput systemFields.grit.fields.current value=system.grit.current disabled=isPlayMode
classes="character-hp"}}
{{formInput
systemFields.grit.fields.current
value=system.grit.current
disabled=isPlayMode
classes="character-hp"
}}
<span class="name">{{localize "LETHALFANTASY.Label.earned"}}</span>
{{formInput systemFields.grit.fields.earned value=system.grit.earned disabled=isPlayMode
classes="character-hp"}}
{{formInput
systemFields.grit.fields.earned
value=system.grit.earned
disabled=isPlayMode
classes="character-hp"
}}
</div>
<div class="flexrow character-hp">
<span class="name">{{localize "LETHALFANTASY.Label.luck"}}</span>
{{formInput systemFields.luck.fields.current value=system.luck.current disabled=isPlayMode
classes="character-hp"}}
{{formInput
systemFields.luck.fields.current
value=system.luck.current
disabled=isPlayMode
classes="character-hp"
}}
<span class="name">{{localize "LETHALFANTASY.Label.earned"}}</span>
{{formInput systemFields.luck.fields.earned value=system.luck.earned disabled=isPlayMode
classes="character-hp"}}
{{formInput
systemFields.luck.fields.earned
value=system.luck.earned
disabled=isPlayMode
classes="character-hp"
}}
</div>
<div class="flexrow ">
<span class="">{{localize "LETHALFANTASY.Label.damageResistanceShort"}}</span>
{{formInput systemFields.hp.fields.damageResistance value=system.hp.fields.damageResistance
disabled=isPlayMode classes="character-hp"}}
</div>
<div class="flexrow">
<span class="" data-tooltip="Damage reduction">{{localize
"LETHALFANTASY.Label.damageResistanceShort"
}}
</span>
<input
type="text"
class="character-damage-reduction"
data-tooltip="DR (armor+natural+magical)"
disabled
value={{damageReduction}}
/>
<input
type="text"
class="character-damage-reduction"
data-tooltip="DR (shield)"
disabled
value={{damageReductionShield}}
/>
</div>
</fieldset>
</div>
<div class="character-right">
<div class="character-name">
{{formInput fields.name value=source.name rootId=partId disabled=isPlayMode}}
<a class="control" data-action="toggleSheet" data-tooltip="LETHALFANTASY.ToggleSheet"
data-tooltip-direction="UP">
{{formInput
fields.name
value=source.name
rootId=partId
disabled=isPlayMode
}}
<a
class="control"
data-action="toggleSheet"
data-tooltip="LETHALFANTASY.ToggleSheet"
data-tooltip-direction="UP"
>
<i class="fa-solid fa-user-{{ifThen isPlayMode 'lock' 'pen'}}"></i>
</a>
</div>
<fieldset class="character-characteristics character-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
<fieldset
class="character-characteristics character-characteristics-{{ifThen
isPlayMode
'play'
'edit'
}}"
>
<legend>{{localize "LETHALFANTASY.Label.Saves"}}</legend>
<div class="character-saves">
<div class="character-save">
<span class="name"><a class="rollable" data-roll-type="save" data-roll-key="will"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>
<span class="name"><a
class="rollable"
data-roll-type="save"
data-roll-key="will"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
{{localize "LETHALFANTASY.Label.saves.will"}}
</a></span>
{{formField systemFields.saves.fields.will.fields.value value=system.saves.will.value disabled=true}}
{{formField
systemFields.saves.fields.will.fields.value
value=system.saves.will.value
disabled=true
}}
<span class="name">
<a class="rollable" data-roll-type="save" data-roll-key="dodge"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>
<a
class="rollable"
data-roll-type="save"
data-roll-key="dodge"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
{{localize "LETHALFANTASY.Label.saves.dodge"}}
</a>
</span>
{{formField systemFields.saves.fields.dodge.fields.value value=system.saves.dodge.value
disabled=true}}
{{formField
systemFields.saves.fields.dodge.fields.value
value=system.saves.dodge.value
disabled=true
}}
<span class="name">
<a class="rollable" data-roll-type="save" data-roll-key="toughness"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>
<a
class="rollable"
data-roll-type="save"
data-roll-key="toughness"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
{{localize "LETHALFANTASY.Label.saves.toughness"}}
</a>
</span>
{{formField systemFields.saves.fields.toughness.fields.value value=system.saves.toughness.value
disabled=true}}
{{formField
systemFields.saves.fields.toughness.fields.value
value=system.saves.toughness.value
disabled=true
}}
</div>
<div class="character-save">
<span class="name">
<a class="rollable" data-roll-type="save" data-roll-key="contagion"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>
<a
class="rollable"
data-roll-type="save"
data-roll-key="contagion"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
{{localize "LETHALFANTASY.Label.saves.contagion"}}
</a>
</span>
{{formField systemFields.saves.fields.contagion.fields.value value=system.saves.contagion.value
disabled=true}}
{{formField
systemFields.saves.fields.contagion.fields.value
value=system.saves.contagion.value
disabled=true
}}
<span class="name">
<a class="rollable" data-roll-type="save" data-roll-key="poison"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>
<a
class="rollable"
data-roll-type="save"
data-roll-key="poison"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>
{{localize "LETHALFANTASY.Label.saves.poison"}}
</a>
</span>
{{formField systemFields.saves.fields.poison.fields.value value=system.saves.poison.value
disabled=true }}
{{formField
systemFields.saves.fields.poison.fields.value
value=system.saves.poison.value
disabled=true
}}
<!--
<span class="name-pain">
@@ -125,51 +217,124 @@
</div>
</fieldset>
<fieldset class="character-characteristics character-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
<fieldset
class="character-characteristics character-characteristics-{{ifThen
isPlayMode
'play'
'edit'
}}"
>
<legend>{{localize "LETHALFANTASY.Label.Challenges"}}</legend>
<div class="character-challenges">
<div class="character-challenge">
<span class="name"><a class="rollable" data-roll-type="challenge" data-roll-key="str"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"LETHALFANTASY.Label.challenges.strength"}}</a></span>
{{formField systemFields.challenges.fields.str.fields.value value=system.challenges.str.value
disabled=true
<span class="name"><a
class="rollable"
data-roll-type="challenge"
data-roll-key="str"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"LETHALFANTASY.Label.challenges.strength"
}}</a></span>
{{formField
systemFields.challenges.fields.str.fields.value
value=system.challenges.str.value
disabled=true
}}
<span class="name"><a class="rollable" data-roll-type="challenge" data-roll-key="agility"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"LETHALFANTASY.Label.challenges.agility"}}</a></span>
{{formField systemFields.challenges.fields.agility.fields.value value=system.challenges.agility.value
disabled=true
<span class="name"><a
class="rollable"
data-roll-type="challenge"
data-roll-key="agility"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"LETHALFANTASY.Label.challenges.agility"
}}</a></span>
{{formField
systemFields.challenges.fields.agility.fields.value
value=system.challenges.agility.value
disabled=true
}}
<span class="name"><a
class="rollable"
data-roll-type="challenge"
data-roll-key="dying"
><i class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"LETHALFANTASY.Label.challenges.dying"
}}</a></span>
{{formField
systemFields.challenges.fields.dying.fields.value
value=system.challenges.dying.value
disabled=true
}}
<span class="name"><a class="rollable" data-roll-type="challenge" data-roll-key="dying"><i
class="lf-roll-small fa-solid fa-dice-d20"></i>{{localize
"LETHALFANTASY.Label.challenges.dying"}}</a></span>
{{formField systemFields.challenges.fields.dying.fields.value value=system.challenges.dying.value
disabled=true }}
</div>
</div>
</fieldset>
<fieldset class="character-characteristics character-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
<fieldset
class="character-characteristics character-characteristics-{{ifThen
isPlayMode
'play'
'edit'
}}"
>
<legend>{{localize "LETHALFANTASY.Label.Movement"}}</legend>
<div class="character-movements">
<div class="character-movement">
<span class="name">{{localize "LETHALFANTASY.Label.movement.walk"}}</span>
{{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}}
<span class="name">{{localize "LETHALFANTASY.Label.movement.jog"}}</span>
{{formField systemFields.movement.fields.jog value=system.movement.jog disabled=isPlayMode}}
<span class="name">{{localize "LETHALFANTASY.Label.movement.run"}}</span>
{{formField systemFields.movement.fields.run value=system.movement.run disabled=isPlayMode}}
<span class="name">{{localize "LETHALFANTASY.Label.movement.sprint"}}</span>
{{formField systemFields.movement.fields.sprint value=system.movement.sprint disabled=isPlayMode}}
<span class="name">{{localize
"LETHALFANTASY.Label.movement.walk"
}}</span>
{{formField
systemFields.movement.fields.walk
value=system.movement.walk
disabled=isPlayMode
}}
<span class="name">{{localize
"LETHALFANTASY.Label.movement.jog"
}}</span>
{{formField
systemFields.movement.fields.jog
value=system.movement.jog
disabled=isPlayMode
}}
<span class="name">{{localize
"LETHALFANTASY.Label.movement.run"
}}</span>
{{formField
systemFields.movement.fields.run
value=system.movement.run
disabled=isPlayMode
}}
<span class="name">{{localize
"LETHALFANTASY.Label.movement.sprint"
}}</span>
{{formField
systemFields.movement.fields.sprint
value=system.movement.sprint
disabled=isPlayMode
}}
</div>
<div class="character-movement">
<span class="name">{{localize "LETHALFANTASY.Label.movement.jumpBroad"}}</span>
{{formField systemFields.jump.fields.broad value=system.jump.broad disabled=isPlayMode}}
<span class="name">{{localize "LETHALFANTASY.Label.movement.jumpRunning"}}</span>
{{formField systemFields.jump.fields.running value=system.jump.running disabled=isPlayMode}}
<span class="name">{{localize "LETHALFANTASY.Label.movement.jumpVertical"}}</span>
{{formField systemFields.jump.fields.vertical value=system.jump.vertical disabled=isPlayMode}}
<span class="name">{{localize
"LETHALFANTASY.Label.movement.jumpBroad"
}}</span>
{{formField
systemFields.jump.fields.broad
value=system.jump.broad
disabled=isPlayMode
}}
<span class="name">{{localize
"LETHALFANTASY.Label.movement.jumpRunning"
}}</span>
{{formField
systemFields.jump.fields.running
value=system.jump.running
disabled=isPlayMode
}}
<span class="name">{{localize
"LETHALFANTASY.Label.movement.jumpVertical"
}}</span>
{{formField
systemFields.jump.fields.vertical
value=system.jump.vertical
disabled=isPlayMode
}}
</div>
</div>
</fieldset>
@@ -178,62 +343,124 @@
</div>
</fieldset>
<fieldset class="character-characteristics character-characteristics-{{ifThen isPlayMode 'play' 'edit'}}">
<fieldset
class="character-characteristics character-characteristics-{{ifThen
isPlayMode
'play'
'edit'
}}"
>
<legend>{{localize "LETHALFANTASY.Label.characteristics"}}</legend>
<div class="character-characteristic">
<span>{{localize "LETHALFANTASY.Label.str"}}</span>
{{formField systemFields.characteristics.fields.str.fields.value value=system.characteristics.str.value
disabled=isPlayMode data-char-id="str" }}
{{formField systemFields.characteristics.fields.str.fields.percent value=system.characteristics.str.percent
disabled=isPlayMode type="number"}}
{{formField
systemFields.characteristics.fields.str.fields.value
value=system.characteristics.str.value
disabled=isPlayMode
data-char-id="str"
}}
{{formField
systemFields.characteristics.fields.str.fields.percent
value=system.characteristics.str.percent
disabled=isPlayMode
type="number"
}}
</div>
<div class="character-characteristic">
<span>{{localize "LETHALFANTASY.Label.int"}}</span>
{{formField systemFields.characteristics.fields.int.fields.value value=system.characteristics.int.value
disabled=isPlayMode data-char-id="int" }}
{{formField
systemFields.characteristics.fields.int.fields.value
value=system.characteristics.int.value
disabled=isPlayMode
data-char-id="int"
}}
{{formField systemFields.characteristics.fields.int.fields.percent value=system.characteristics.int.percent
disabled=isPlayMode type="number" }}
{{formField
systemFields.characteristics.fields.int.fields.percent
value=system.characteristics.int.percent
disabled=isPlayMode
type="number"
}}
</div>
<div class="character-characteristic">
<span>{{localize "LETHALFANTASY.Label.wis"}}</span>
{{formField systemFields.characteristics.fields.wis.fields.value value=system.characteristics.wis.value
disabled=isPlayMode data-char-id="wis" }}
{{formField
systemFields.characteristics.fields.wis.fields.value
value=system.characteristics.wis.value
disabled=isPlayMode
data-char-id="wis"
}}
{{formField systemFields.characteristics.fields.wis.fields.percent value=system.characteristics.wis.percent
disabled=isPlayMode type="number"}}
{{formField
systemFields.characteristics.fields.wis.fields.percent
value=system.characteristics.wis.percent
disabled=isPlayMode
type="number"
}}
</div>
<div class="character-characteristic">
<span>{{localize "LETHALFANTASY.Label.dex"}}</span>
{{formField systemFields.characteristics.fields.dex.fields.value value=system.characteristics.dex.value
disabled=isPlayMode data-char-id="wis" }}
{{formField
systemFields.characteristics.fields.dex.fields.value
value=system.characteristics.dex.value
disabled=isPlayMode
data-char-id="wis"
}}
{{formField systemFields.characteristics.fields.dex.fields.percent value=system.characteristics.dex.percent
disabled=isPlayMode type="number" }}
{{formField
systemFields.characteristics.fields.dex.fields.percent
value=system.characteristics.dex.percent
disabled=isPlayMode
type="number"
}}
</div>
<div class="character-characteristic">
<span>{{localize "LETHALFANTASY.Label.con"}}</span>
{{formField systemFields.characteristics.fields.con.fields.value value=system.characteristics.con.value
disabled=isPlayMode data-char-id="con" }}
{{formField
systemFields.characteristics.fields.con.fields.value
value=system.characteristics.con.value
disabled=isPlayMode
data-char-id="con"
}}
{{formField systemFields.characteristics.fields.con.fields.percent value=system.characteristics.con.percent
disabled=isPlayMode type="number"}}
{{formField
systemFields.characteristics.fields.con.fields.percent
value=system.characteristics.con.percent
disabled=isPlayMode
type="number"
}}
</div>
<div class="character-characteristic">
<span>{{localize "LETHALFANTASY.Label.cha"}}</span>
{{formField systemFields.characteristics.fields.cha.fields.value value=system.characteristics.cha.value
disabled=isPlayMode data-char-id="cha" }}
{{formField
systemFields.characteristics.fields.cha.fields.value
value=system.characteristics.cha.value
disabled=isPlayMode
data-char-id="cha"
}}
{{formField systemFields.characteristics.fields.cha.fields.percent value=system.characteristics.cha.percent
disabled=isPlayMode type="number"}}
{{formField
systemFields.characteristics.fields.cha.fields.percent
value=system.characteristics.cha.percent
disabled=isPlayMode
type="number"
}}
</div>
<div class="character-characteristic">
<span>{{localize "LETHALFANTASY.Label.luc"}}</span>
{{formField systemFields.characteristics.fields.luc.fields.value value=system.characteristics.luc.value
disabled=isPlayMode data-char-id="luc" }}
{{formField
systemFields.characteristics.fields.luc.fields.value
value=system.characteristics.luc.value
disabled=isPlayMode
data-char-id="luc"
}}
{{formField systemFields.characteristics.fields.luc.fields.percent value=system.characteristics.luc.percent
disabled=isPlayMode type="number"}}
{{formField
systemFields.characteristics.fields.luc.fields.percent
value=system.characteristics.luc.percent
disabled=isPlayMode
type="number"
}}
</div>
</fieldset>

View File

@@ -147,7 +147,7 @@
<span class="name">{{localize "LETHALFANTASY.Label.movement.walk"}}</span>
{{formField systemFields.movement.fields.walk value=system.movement.walk disabled=isPlayMode}}
<span class="name">{{localize "LETHALFANTASY.Label.movement.jog"}}</span>
{{formField systemFields.movement.fields.jog value=system.challenges.movement.jog disabled=isPlayMode}}
{{formField systemFields.movement.fields.jog value=system.movement.jog disabled=isPlayMode}}
<span class="name">{{localize "LETHALFANTASY.Label.movement.run"}}</span>
{{formField systemFields.movement.fields.run value=system.movement.run disabled=isPlayMode}}
<span class="name">{{localize "LETHALFANTASY.Label.movement.sprint"}}</span>

View File

@@ -1,111 +1,148 @@
<div class="lethalfantasy-roll-dialog">
<fieldSet class="">
<legend>{{localize (concat "LETHALFANTASY.Label." rollType)}} - {{actorName}}</legend>
<legend>{{localize (concat "LETHALFANTASY.Label." rollType)}}
-
{{actorName}}</legend>
{{#if rollTarget.tokenId}}
<div class="dialog-save">
<a class="goto-token-button" data-action="gotoToken" data-token-id="{{rollTarget.tokenId}}">{{localize
"LETHALFANTASY.Label.gotoToken"}} </a>
</div>
<div class="dialog-save">
<a
class="goto-token-button"
data-action="gotoToken"
data-token-id="{{rollTarget.tokenId}}"
>{{localize "LETHALFANTASY.Label.gotoToken"}} </a>
</div>
{{/if}}
{{#if (match rollType "attack")}}
<div class="dialog-save">Attack roll ! - {{rollTarget.name}}</div>
<div class="dialog-save">Attack roll ! - {{rollTarget.name}}</div>
{{/if}}
{{#if (match rollType "defense")}}
<div class="dialog-save">Defense roll ! - {{rollTarget.name}}</div>
<div class="dialog-save">Defense roll ! - {{rollTarget.name}}</div>
{{/if}}
{{#if hasModifier}}
<div class="dialog-save">{{upperFirst rollName}} : {{baseFormula}} + {{baseValue}}</div>
<div class="dialog-save">{{upperFirst rollName}}
:
{{baseFormula}}
+
{{baseValue}}</div>
{{else}}
<div class="dialog-save">{{upperFirst rollName}} : {{baseFormula}}</div>
<div class="dialog-save">{{upperFirst rollName}} : {{baseFormula}}</div>
{{/if}}
{{#if rollTarget.weapon}}
<div class="dialog-save">{{localize "LETHALFANTASY.Label.baseModifier"}} : {{rollTarget.charModifier}}</div>
<div class="dialog-save">{{localize "LETHALFANTASY.Label.weapon"}} : {{rollTarget.weapon.name}}</div>
<div class="dialog-save">{{localize "LETHALFANTASY.Label.skill"}} : {{rollTarget.name}}</div>
<div class="dialog-save">{{localize "LETHALFANTASY.Label.skillBonus"}} : {{rollTarget.weaponSkillModifier}}</div>
<div class="dialog-save">{{localize "LETHALFANTASY.Label.baseModifier"}}
:
{{rollTarget.charModifier}}</div>
{{#if (match rollType "defense")}}
<div class="dialog-save">Armor defense modifier :
{{rollTarget.armorDefense}}</div>
{{/if}}
<div class="dialog-save">{{localize "LETHALFANTASY.Label.weapon"}}
:
{{rollTarget.weapon.name}}</div>
<div class="dialog-save">{{localize "LETHALFANTASY.Label.skill"}}
:
{{rollTarget.name}}</div>
<div class="dialog-save">{{localize "LETHALFANTASY.Label.skillBonus"}}
:
{{rollTarget.weaponSkillModifier}}</div>
{{/if}}
{{#if (match rollType "attack")}}
<div class="dialog-save">Add Granted Attack Dice
<input type="checkbox" data-action="selectGranted" name="granted">
</div>
{{#if rollTarget.weapon}}
{{#if (eq rollTarget.weapon.system.weaponType "melee")}}
{{else}}
<div class="dialog-save">Point Blank Range Attack
<input type="checkbox" data-action="selectPointBlank" name="pointBlankV">
</div>
<div class="dialog-save">Beyond Skill Range Attack
<input type="checkbox" data-action="selectBeyondSkill" name="beyondSkillV">
</div>
<div class="dialog-save">Let it Fly (Pure D20E)
<input type="checkbox" data-action="selectLetItFly" name="letItFlyV">
</div>
<div class="dialog-save">Aiming
<select name="attackerAim" data-tooltip-direction="UP">
{{selectOptions attackerAimChoices selected=attackerAim}}
</select>
</div>
{{/if}}
{{/if}}
<div class="dialog-save">Add Granted Attack Dice
<input type="checkbox" data-action="selectGranted" name="granted" />
</div>
{{#if rollTarget.weapon}}
{{#if (eq rollTarget.weapon.system.weaponType "melee")}}{{else}}
<div class="dialog-save">Point Blank Range Attack
<input
type="checkbox"
data-action="selectPointBlank"
name="pointBlankV"
/>
</div>
<div class="dialog-save">Beyond Skill Range Attack
<input
type="checkbox"
data-action="selectBeyondSkill"
name="beyondSkillV"
/>
</div>
<div class="dialog-save">Let it Fly (Pure D20E)
<input
type="checkbox"
data-action="selectLetItFly"
name="letItFlyV"
/>
</div>
<div class="dialog-save">Aiming
<select name="attackerAim" data-tooltip-direction="UP">
{{selectOptions attackerAimChoices selected=attackerAim}}
</select>
</div>
{{/if}}
{{/if}}
{{/if}}
{{#if (match rollType "defense")}}
<div class="dialog-save">Add Granted Defense Dice
<input type="checkbox" data-action="selectGranted" name="granted">
</div>
<div class="dialog-save">Add Granted Defense Dice
<input type="checkbox" data-action="selectGranted" name="granted" />
</div>
{{/if}}
{{#if (match rollType "damage")}}
<div class="dialog-save">Add Granted Damage Dice
<input type="checkbox" data-action="selectGranted" name="granted">
</div>
<div class="dialog-save">Add Granted Damage Dice
<input type="checkbox" data-action="selectGranted" name="granted" />
</div>
{{/if}}
{{#if rollTarget.staticModifier}}
<div class="dialog-save">Static modifier : +{{rollTarget.staticModifier}}</div>
<div class="dialog-save">Static modifier : +{{rollTarget.staticModifier}}</div>
{{/if}}
</fieldSet>
{{#if hasFavor}}
<fieldSet class="dialog-favor">
<legend>{{localize "LETHALFANTASY.Roll.favorDisfavor"}}</legend>
<select name="favor" class="favor-choice" data-tooltip-direction="UP">
{{selectOptions choiceFavor selected=favor}}
</select>
</fieldSet>
<fieldSet class="dialog-favor">
<legend>{{localize "LETHALFANTASY.Roll.favorDisfavor"}}</legend>
<select name="favor" class="favor-choice" data-tooltip-direction="UP">
{{selectOptions choiceFavor selected=favor}}
</select>
</fieldSet>
{{/if}}
{{#if hasModifier}}
<fieldSet class="dialog-modifier">
<legend>{{localize "LETHALFANTASY.Roll.modifierBonusMalus"}}</legend>
<select name="modifier" data-tooltip-direction="UP">
{{selectOptions choiceModifier selected=modifier}}
</select>
<fieldSet class="dialog-modifier">
<legend>{{localize "LETHALFANTASY.Roll.modifierBonusMalus"}}</legend>
<select name="modifier" data-tooltip-direction="UP">
{{selectOptions choiceModifier selected=modifier}}
</select>
{{#if (eq rollType "save")}}
{{#if rollTarget.magicUser}}
<div>
<span>Save against spell (+{{rollTarget.actorModifiers.saveModifier}}) ?</span>
<input type="checkbox" name="saveSpellCheck" data-action="saveSpellCheck">
</div>
{{/if}}
{{/if}}
</fieldSet>
{{#if (eq rollType "save")}}
{{#if rollTarget.magicUser}}
<div>
<span>Save against spell (+{{rollTarget.actorModifiers.saveModifier}})
?</span>
<input
type="checkbox"
name="saveSpellCheck"
data-action="saveSpellCheck"
/>
</div>
{{/if}}
{{/if}}
</fieldSet>
{{/if}}
{{#if hasChangeDice}}
<fieldSet class="dialog-modifier">
<legend>{{localize "LETHALFANTASY.Roll.changeDice"}}</legend>
<select name="changeDice" data-tooltip-direction="UP">
{{selectOptions choiceDice selected=changeDice}}
</select>
</fieldSet>
<fieldSet class="dialog-modifier">
<legend>{{localize "LETHALFANTASY.Roll.changeDice"}}</legend>
<select name="changeDice" data-tooltip-direction="UP">
{{selectOptions choiceDice selected=changeDice}}
</select>
</fieldSet>
{{/if}}
<fieldSet>
@@ -115,5 +152,4 @@
</select>
</fieldSet>
</div>

View File

@@ -1,6 +1,12 @@
<section>
<div class="header">
<img class="item-img" src="{{item.img}}" data-edit="img" data-action="editImage" data-tooltip="{{item.name}}" />
<img
class="item-img"
src="{{item.img}}"
data-edit="img"
data-action="editImage"
data-tooltip="{{item.name}}"
/>
{{formInput fields.name value=source.name}}
</div>
@@ -8,23 +14,32 @@
<div class="align-top">
{{formField systemFields.defense value=system.defense}}
{{formField systemFields.damageReduction value=system.damageReduction}}
<div class="shift-right">&nbsp;
</div>
{{formField systemFields.hascover value=system.hascover}}
{{#if system.hascover}}
<label>Cover vs ranged attacks</label>
<div class="shift-right">
<label>Standing </label>
<div class="flexrow">{{formField systemFields.standing.fields.min value=system.standing.min}} &nbsp;...&nbsp;30
<label>Cover vs ranged attacks</label>
<div class="shift-right">
<label>Standing </label>
<div class="flexrow">{{formField
systemFields.standing.fields.min
value=system.standing.min
}}
&nbsp;...&nbsp;30
</div>
</div>
<div class="shift-right">
<label>Crouching</label>
<div class="flexrow">{{formField
systemFields.crouching.fields.min
value=system.crouching.min
}}
&nbsp;...&nbsp;30</div>
</div>
</div>
<div class="shift-right">
<label>Crouching</label>
<div class="flexrow">{{formField systemFields.crouching.fields.min value=system.crouching.min}}
&nbsp;...&nbsp;30</div>
</div>
{{/if}}
</div>
@@ -53,15 +68,14 @@
</div>
</div>
<fieldset>
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
{{formInput
systemFields.description
enriched=enrichedDescription
value=system.description
name="system.description"
toggled="false"
systemFields.description
enriched=enrichedDescription
value=system.description
name="system.description"
toggled="false"
}}
</fieldset>
</section>