Fix DR and defense values
All checks were successful
Release Creation / build (release) Successful in 1m7s
All checks were successful
Release Creation / build (release) Successful in 1m7s
This commit is contained in:
@@ -95,6 +95,9 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
|||||||
const doc = this.document
|
const doc = this.document
|
||||||
switch (partId) {
|
switch (partId) {
|
||||||
case "main":
|
case "main":
|
||||||
|
context.armorDR = this.actor.getArmorDR()
|
||||||
|
context.damageReduction = this.actor.computeDamageReduction()
|
||||||
|
context.damageReductionShield = this.actor.getShieldDR()
|
||||||
break
|
break
|
||||||
case "skills":
|
case "skills":
|
||||||
context.tab = context.tabs.skills
|
context.tab = context.tabs.skills
|
||||||
|
|||||||
@@ -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)
|
console.log("Preparing roll", rollType, rollKey, rollDice)
|
||||||
let rollTarget
|
let rollTarget
|
||||||
switch (rollType) {
|
switch (rollType) {
|
||||||
@@ -89,7 +130,7 @@ export default class LethalFantasyActor extends Actor {
|
|||||||
formula: foundry.utils.duplicate(this.system.granted[rollKey]),
|
formula: foundry.utils.duplicate(this.system.granted[rollKey]),
|
||||||
rollKey: rollKey
|
rollKey: rollKey
|
||||||
}
|
}
|
||||||
if ( rollTarget.formula === "" || rollTarget.formula === undefined) {
|
if (rollTarget.formula === "" || rollTarget.formula === undefined) {
|
||||||
rollTarget.formula = 0
|
rollTarget.formula = 0
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -126,60 +167,61 @@ export default class LethalFantasyActor extends Actor {
|
|||||||
rollTarget.rollKey = rollKey
|
rollTarget.rollKey = rollKey
|
||||||
break
|
break
|
||||||
case "shield-roll": {
|
case "shield-roll": {
|
||||||
rollTarget = this.items.find((i) => i.type === "shield" && i.id === 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())
|
let shieldSkill = this.items.find((i) => i.type === "skill" && i.name.toLowerCase() === rollTarget.name.toLowerCase())
|
||||||
rollTarget.skill = shieldSkill
|
rollTarget.skill = shieldSkill
|
||||||
rollTarget.rollKey = rollKey
|
rollTarget.rollKey = rollKey
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "weapon-damage-small":
|
case "weapon-damage-small":
|
||||||
case "weapon-damage-medium":
|
case "weapon-damage-medium":
|
||||||
case "weapon-attack":
|
case "weapon-attack":
|
||||||
case "weapon-defense": {
|
case "weapon-defense": {
|
||||||
let weapon = this.items.find((i) => i.type === "weapon" && i.id === rollKey)
|
let weapon = this.items.find((i) => i.type === "weapon" && i.id === rollKey)
|
||||||
let skill
|
let skill
|
||||||
let skills = this.items.filter((i) => i.type === "skill" && i.name.toLowerCase() === weapon.name.toLowerCase())
|
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) {
|
if (skills.length > 0) {
|
||||||
skill = this.getBestWeaponClassSkill(skills, rollType, 1.0)
|
skill = this.getBestWeaponClassSkill(skills, rollType, 1.0)
|
||||||
} else {
|
} 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) {
|
if (skills.length > 0) {
|
||||||
skill = this.getBestWeaponClassSkill(skills, rollType, 1.0)
|
skill = this.getBestWeaponClassSkill(skills, rollType, 0.5)
|
||||||
} else {
|
} 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) {
|
if (skills.length > 0) {
|
||||||
skill = this.getBestWeaponClassSkill(skills, rollType, 0.5)
|
skill = this.getBestWeaponClassSkill(skills, rollType, 0.25)
|
||||||
} else {
|
} else {
|
||||||
skills = this.items.filter((i) => i.type === "skill" && i.system.weaponClass.includes(SYSTEM.WEAPON_CATEGORIES[weapon.system.weaponClass]))
|
ui.notifications.warn(game.i18n.localize("LETHALFANTASY.Notifications.skillNotFound"))
|
||||||
if (skills.length > 0) {
|
return
|
||||||
skill = this.getBestWeaponClassSkill(skills, rollType, 0.25)
|
|
||||||
} else {
|
|
||||||
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
|
break
|
||||||
default:
|
default:
|
||||||
ui.notifications.error(game.i18n.localize("LETHALFANTASY.Notifications.rollTypeNotFound") + String(rollType))
|
ui.notifications.error(game.i18n.localize("LETHALFANTASY.Notifications.rollTypeNotFound") + String(rollType))
|
||||||
|
|||||||
@@ -134,6 +134,7 @@ export default class LethalFantasyRoll extends Roll {
|
|||||||
let beyondSkill = false
|
let beyondSkill = false
|
||||||
let hasStaticModifier = false
|
let hasStaticModifier = false
|
||||||
let hasExplode = true
|
let hasExplode = true
|
||||||
|
let actor = game.actors.get(options.actorId)
|
||||||
|
|
||||||
if (options.rollType === "challenge" || options.rollType === "save") {
|
if (options.rollType === "challenge" || options.rollType === "save") {
|
||||||
options.rollName = game.i18n.localize(`LETHALFANTASY.Label.${options.rollTarget.rollKey}`)
|
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
|
options.rollTarget.charModifier = options.rollTarget.combat.rangedAttackModifier
|
||||||
}
|
}
|
||||||
} else {
|
} 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
|
options.rollTarget.charModifier = options.rollTarget.combat.defenseModifier
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -120,6 +120,8 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
|
|||||||
magicUser: new fields.BooleanField({ initial: false }),
|
magicUser: new fields.BooleanField({ initial: false }),
|
||||||
clericUser: new fields.BooleanField({ initial: false }),
|
clericUser: new fields.BooleanField({ initial: false }),
|
||||||
hpPerLevel: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
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({
|
schema.modifiers = new fields.SchemaField({
|
||||||
|
|||||||
@@ -6,9 +6,10 @@ export default class LethalFantasyShield extends foundry.abstract.TypeDataModel
|
|||||||
const requiredInteger = { required: true, nullable: false, integer: true }
|
const requiredInteger = { required: true, nullable: false, integer: true }
|
||||||
|
|
||||||
schema.description = new fields.HTMLField({ required: true, textSearch: 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.movementreduction = new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 })
|
||||||
schema.hascover = new fields.BooleanField({ required: true, initial: false })
|
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({
|
schema.standing = new fields.SchemaField({
|
||||||
min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
|
min: new fields.NumberField({ ...requiredInteger, required: true, initial: 0, min: 0 }),
|
||||||
|
|||||||
0
packs-system/lf-equipment/000458.log
Normal file
0
packs-system/lf-equipment/000458.log
Normal file
@@ -1 +1 @@
|
|||||||
MANIFEST-000452
|
MANIFEST-000456
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/11/07-07:57:26.850226 7f14baffd6c0 Recovering log #450
|
2025/12/06-15:17:13.631288 7f19dd7fa6c0 Recovering log #454
|
||||||
2025/11/07-07:57:26.860132 7f14baffd6c0 Delete type=3 #448
|
2025/12/06-15:17:13.737044 7f19dd7fa6c0 Delete type=3 #452
|
||||||
2025/11/07-07:57:26.860209 7f14baffd6c0 Delete type=0 #450
|
2025/12/06-15:17:13.737119 7f19dd7fa6c0 Delete type=0 #454
|
||||||
2025/11/07-07:58:43.705140 7f14b8ff96c0 Level-0 table #455: started
|
2025/12/06-16:41:02.244527 7f19dbff76c0 Level-0 table #459: started
|
||||||
2025/11/07-07:58:43.705171 7f14b8ff96c0 Level-0 table #455: 0 bytes OK
|
2025/12/06-16:41:02.244570 7f19dbff76c0 Level-0 table #459: 0 bytes OK
|
||||||
2025/11/07-07:58:43.711108 7f14b8ff96c0 Delete type=0 #453
|
2025/12/06-16:41:02.281825 7f19dbff76c0 Delete type=0 #457
|
||||||
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/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/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)
|
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)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/10/17-20:04:40.410646 7f7b74bf86c0 Recovering log #446
|
2025/11/07-07:57:26.850226 7f14baffd6c0 Recovering log #450
|
||||||
2025/10/17-20:04:40.459394 7f7b74bf86c0 Delete type=3 #444
|
2025/11/07-07:57:26.860132 7f14baffd6c0 Delete type=3 #448
|
||||||
2025/10/17-20:04:40.459535 7f7b74bf86c0 Delete type=0 #446
|
2025/11/07-07:57:26.860209 7f14baffd6c0 Delete type=0 #450
|
||||||
2025/10/17-20:06:06.949461 7f7b6f3ff6c0 Level-0 table #451: started
|
2025/11/07-07:58:43.705140 7f14b8ff96c0 Level-0 table #455: started
|
||||||
2025/10/17-20:06:06.949513 7f7b6f3ff6c0 Level-0 table #451: 0 bytes OK
|
2025/11/07-07:58:43.705171 7f14b8ff96c0 Level-0 table #455: 0 bytes OK
|
||||||
2025/10/17-20:06:06.981230 7f7b6f3ff6c0 Delete type=0 #449
|
2025/11/07-07:58:43.711108 7f14b8ff96c0 Delete type=0 #453
|
||||||
2025/10/17-20:06:06.981548 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
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/10/17-20:06:07.038248 7f7b6f3ff6c0 Manual compaction at level-1 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)
|
||||||
|
|||||||
BIN
packs-system/lf-equipment/MANIFEST-000456
Normal file
BIN
packs-system/lf-equipment/MANIFEST-000456
Normal file
Binary file not shown.
0
packs-system/lf-gifts/000458.log
Normal file
0
packs-system/lf-gifts/000458.log
Normal file
@@ -1 +1 @@
|
|||||||
MANIFEST-000452
|
MANIFEST-000456
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/11/07-07:57:26.863923 7f14b9ffb6c0 Recovering log #450
|
2025/12/06-15:17:13.747297 7f19dc7f86c0 Recovering log #454
|
||||||
2025/11/07-07:57:26.873909 7f14b9ffb6c0 Delete type=3 #448
|
2025/12/06-15:17:13.857630 7f19dc7f86c0 Delete type=3 #452
|
||||||
2025/11/07-07:57:26.873962 7f14b9ffb6c0 Delete type=0 #450
|
2025/12/06-15:17:13.857707 7f19dc7f86c0 Delete type=0 #454
|
||||||
2025/11/07-07:58:43.711204 7f14b8ff96c0 Level-0 table #455: started
|
2025/12/06-16:41:02.159042 7f19dbff76c0 Level-0 table #459: started
|
||||||
2025/11/07-07:58:43.711230 7f14b8ff96c0 Level-0 table #455: 0 bytes OK
|
2025/12/06-16:41:02.159069 7f19dbff76c0 Level-0 table #459: 0 bytes OK
|
||||||
2025/11/07-07:58:43.718265 7f14b8ff96c0 Delete type=0 #453
|
2025/12/06-16:41:02.201619 7f19dbff76c0 Delete type=0 #457
|
||||||
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/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/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)
|
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)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/10/17-20:04:40.466635 7f7b753f96c0 Recovering log #446
|
2025/11/07-07:57:26.863923 7f14b9ffb6c0 Recovering log #450
|
||||||
2025/10/17-20:04:40.515547 7f7b753f96c0 Delete type=3 #444
|
2025/11/07-07:57:26.873909 7f14b9ffb6c0 Delete type=3 #448
|
||||||
2025/10/17-20:04:40.515653 7f7b753f96c0 Delete type=0 #446
|
2025/11/07-07:57:26.873962 7f14b9ffb6c0 Delete type=0 #450
|
||||||
2025/10/17-20:06:06.880963 7f7b6f3ff6c0 Level-0 table #451: started
|
2025/11/07-07:58:43.711204 7f14b8ff96c0 Level-0 table #455: started
|
||||||
2025/10/17-20:06:06.881016 7f7b6f3ff6c0 Level-0 table #451: 0 bytes OK
|
2025/11/07-07:58:43.711230 7f14b8ff96c0 Level-0 table #455: 0 bytes OK
|
||||||
2025/10/17-20:06:06.917770 7f7b6f3ff6c0 Delete type=0 #449
|
2025/11/07-07:58:43.718265 7f14b8ff96c0 Delete type=0 #453
|
||||||
2025/10/17-20:06:06.981510 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!x5gLtqlW4sdDmHTd' @ 0 : 0; will stop at (end)
|
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/10/17-20:06:07.038270 7f7b6f3ff6c0 Manual compaction at level-1 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)
|
||||||
|
|||||||
BIN
packs-system/lf-gifts/MANIFEST-000456
Normal file
BIN
packs-system/lf-gifts/MANIFEST-000456
Normal file
Binary file not shown.
0
packs-system/lf-skills/000460.log
Normal file
0
packs-system/lf-skills/000460.log
Normal file
@@ -1 +1 @@
|
|||||||
MANIFEST-000454
|
MANIFEST-000458
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/11/07-07:57:26.836688 7f14b97fa6c0 Recovering log #451
|
2025/12/06-15:17:13.504137 7f19ddffb6c0 Recovering log #456
|
||||||
2025/11/07-07:57:26.847365 7f14b97fa6c0 Delete type=3 #449
|
2025/12/06-15:17:13.609897 7f19ddffb6c0 Delete type=3 #454
|
||||||
2025/11/07-07:57:26.847456 7f14b97fa6c0 Delete type=0 #451
|
2025/12/06-15:17:13.609952 7f19ddffb6c0 Delete type=0 #456
|
||||||
2025/11/07-07:58:43.699007 7f14b8ff96c0 Level-0 table #457: started
|
2025/12/06-16:41:02.201733 7f19dbff76c0 Level-0 table #461: started
|
||||||
2025/11/07-07:58:43.699056 7f14b8ff96c0 Level-0 table #457: 0 bytes OK
|
2025/12/06-16:41:02.201761 7f19dbff76c0 Level-0 table #461: 0 bytes OK
|
||||||
2025/11/07-07:58:43.705029 7f14b8ff96c0 Delete type=0 #455
|
2025/12/06-16:41:02.244399 7f19dbff76c0 Delete type=0 #459
|
||||||
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/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/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)
|
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)
|
||||||
|
|||||||
@@ -1,15 +1,8 @@
|
|||||||
2025/10/17-20:04:40.334536 7f7b75bfa6c0 Recovering log #446
|
2025/11/07-07:57:26.836688 7f14b97fa6c0 Recovering log #451
|
||||||
2025/10/17-20:04:40.405745 7f7b75bfa6c0 Delete type=3 #444
|
2025/11/07-07:57:26.847365 7f14b97fa6c0 Delete type=3 #449
|
||||||
2025/10/17-20:04:40.405910 7f7b75bfa6c0 Delete type=0 #446
|
2025/11/07-07:57:26.847456 7f14b97fa6c0 Delete type=0 #451
|
||||||
2025/10/17-20:06:06.834305 7f7b6f3ff6c0 Level-0 table #452: started
|
2025/11/07-07:58:43.699007 7f14b8ff96c0 Level-0 table #457: started
|
||||||
2025/10/17-20:06:06.848868 7f7b6f3ff6c0 Level-0 table #452: 2022 bytes OK
|
2025/11/07-07:58:43.699056 7f14b8ff96c0 Level-0 table #457: 0 bytes OK
|
||||||
2025/10/17-20:06:06.880702 7f7b6f3ff6c0 Delete type=0 #450
|
2025/11/07-07:58:43.705029 7f14b8ff96c0 Delete type=0 #455
|
||||||
2025/10/17-20:06:06.981485 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
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/10/17-20:06:06.981572 7f7b6f3ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at '!items!iu0NfEMvEsUW0FEx' @ 730 : 1
|
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)
|
||||||
2025/10/17-20:06:06.981587 7f7b6f3ff6c0 Compacting 1@1 + 1@2 files
|
|
||||||
2025/10/17-20:06:07.000371 7f7b6f3ff6c0 Generated table #453@1: 89 keys, 118004 bytes
|
|
||||||
2025/10/17-20:06:07.000414 7f7b6f3ff6c0 Compacted 1@1 + 1@2 files => 118004 bytes
|
|
||||||
2025/10/17-20:06:07.037470 7f7b6f3ff6c0 compacted to: files[ 0 0 1 0 0 0 0 ]
|
|
||||||
2025/10/17-20:06:07.037700 7f7b6f3ff6c0 Delete type=2 #448
|
|
||||||
2025/10/17-20:06:07.038082 7f7b6f3ff6c0 Delete type=2 #452
|
|
||||||
2025/10/17-20:06:07.038307 7f7b6f3ff6c0 Manual compaction at level-1 from '!items!iu0NfEMvEsUW0FEx' @ 730 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
|
||||||
|
|||||||
BIN
packs-system/lf-skills/MANIFEST-000458
Normal file
BIN
packs-system/lf-skills/MANIFEST-000458
Normal file
Binary file not shown.
0
packs-system/lf-spells-miracles/000158.log
Normal file
0
packs-system/lf-spells-miracles/000158.log
Normal file
@@ -1 +1 @@
|
|||||||
MANIFEST-000152
|
MANIFEST-000156
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/11/07-07:57:26.889185 7f14ba7fc6c0 Recovering log #150
|
2025/12/06-15:17:13.990000 7f19dcff96c0 Recovering log #154
|
||||||
2025/11/07-07:57:26.898546 7f14ba7fc6c0 Delete type=3 #148
|
2025/12/06-15:17:14.078163 7f19dcff96c0 Delete type=3 #152
|
||||||
2025/11/07-07:57:26.898639 7f14ba7fc6c0 Delete type=0 #150
|
2025/12/06-15:17:14.078227 7f19dcff96c0 Delete type=0 #154
|
||||||
2025/11/07-07:58:43.718395 7f14b8ff96c0 Level-0 table #155: started
|
2025/12/06-16:41:02.444766 7f19dbff76c0 Level-0 table #159: started
|
||||||
2025/11/07-07:58:43.718429 7f14b8ff96c0 Level-0 table #155: 0 bytes OK
|
2025/12/06-16:41:02.444810 7f19dbff76c0 Level-0 table #159: 0 bytes OK
|
||||||
2025/11/07-07:58:43.724414 7f14b8ff96c0 Delete type=0 #153
|
2025/12/06-16:41:02.474131 7f19dbff76c0 Delete type=0 #157
|
||||||
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/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/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)
|
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)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/10/17-20:04:40.563726 7f7b74bf86c0 Recovering log #146
|
2025/11/07-07:57:26.889185 7f14ba7fc6c0 Recovering log #150
|
||||||
2025/10/17-20:04:40.603255 7f7b74bf86c0 Delete type=3 #144
|
2025/11/07-07:57:26.898546 7f14ba7fc6c0 Delete type=3 #148
|
||||||
2025/10/17-20:04:40.603347 7f7b74bf86c0 Delete type=0 #146
|
2025/11/07-07:57:26.898639 7f14ba7fc6c0 Delete type=0 #150
|
||||||
2025/10/17-20:06:07.107148 7f7b6f3ff6c0 Level-0 table #151: started
|
2025/11/07-07:58:43.718395 7f14b8ff96c0 Level-0 table #155: started
|
||||||
2025/10/17-20:06:07.107209 7f7b6f3ff6c0 Level-0 table #151: 0 bytes OK
|
2025/11/07-07:58:43.718429 7f14b8ff96c0 Level-0 table #155: 0 bytes OK
|
||||||
2025/10/17-20:06:07.142401 7f7b6f3ff6c0 Delete type=0 #149
|
2025/11/07-07:58:43.724414 7f14b8ff96c0 Delete type=0 #153
|
||||||
2025/10/17-20:06:07.182630 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
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/10/17-20:06:07.182721 7f7b6f3ff6c0 Manual compaction at level-1 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)
|
||||||
|
|||||||
BIN
packs-system/lf-spells-miracles/MANIFEST-000156
Normal file
BIN
packs-system/lf-spells-miracles/MANIFEST-000156
Normal file
Binary file not shown.
0
packs-system/lf-vulnerabilities/000457.log
Normal file
0
packs-system/lf-vulnerabilities/000457.log
Normal file
@@ -1 +1 @@
|
|||||||
MANIFEST-000451
|
MANIFEST-000455
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/11/07-07:57:26.876181 7f14b97fa6c0 Recovering log #449
|
2025/12/06-15:17:13.870724 7f19ddffb6c0 Recovering log #453
|
||||||
2025/11/07-07:57:26.886933 7f14b97fa6c0 Delete type=3 #447
|
2025/12/06-15:17:13.958289 7f19ddffb6c0 Delete type=3 #451
|
||||||
2025/11/07-07:57:26.887010 7f14b97fa6c0 Delete type=0 #449
|
2025/12/06-15:17:13.958388 7f19ddffb6c0 Delete type=0 #453
|
||||||
2025/11/07-07:58:43.747501 7f14b8ff96c0 Level-0 table #454: started
|
2025/12/06-16:41:02.118716 7f19dbff76c0 Level-0 table #458: started
|
||||||
2025/11/07-07:58:43.747545 7f14b8ff96c0 Level-0 table #454: 0 bytes OK
|
2025/12/06-16:41:02.121944 7f19dbff76c0 Level-0 table #458: 0 bytes OK
|
||||||
2025/11/07-07:58:43.754307 7f14b8ff96c0 Delete type=0 #452
|
2025/12/06-16:41:02.158936 7f19dbff76c0 Delete type=0 #456
|
||||||
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/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/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)
|
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)
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
2025/10/17-20:04:40.518960 7f7b75bfa6c0 Recovering log #445
|
2025/11/07-07:57:26.876181 7f14b97fa6c0 Recovering log #449
|
||||||
2025/10/17-20:04:40.559683 7f7b75bfa6c0 Delete type=3 #443
|
2025/11/07-07:57:26.886933 7f14b97fa6c0 Delete type=3 #447
|
||||||
2025/10/17-20:04:40.559810 7f7b75bfa6c0 Delete type=0 #445
|
2025/11/07-07:57:26.887010 7f14b97fa6c0 Delete type=0 #449
|
||||||
2025/10/17-20:06:06.918106 7f7b6f3ff6c0 Level-0 table #450: started
|
2025/11/07-07:58:43.747501 7f14b8ff96c0 Level-0 table #454: started
|
||||||
2025/10/17-20:06:06.918166 7f7b6f3ff6c0 Level-0 table #450: 0 bytes OK
|
2025/11/07-07:58:43.747545 7f14b8ff96c0 Level-0 table #454: 0 bytes OK
|
||||||
2025/10/17-20:06:06.949207 7f7b6f3ff6c0 Delete type=0 #448
|
2025/11/07-07:58:43.754307 7f14b8ff96c0 Delete type=0 #452
|
||||||
2025/10/17-20:06:06.981529 7f7b6f3ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
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/10/17-20:06:07.038289 7f7b6f3ff6c0 Manual compaction at level-1 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)
|
||||||
|
|||||||
BIN
packs-system/lf-vulnerabilities/MANIFEST-000455
Normal file
BIN
packs-system/lf-vulnerabilities/MANIFEST-000455
Normal file
Binary file not shown.
@@ -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">
|
<div class="main-div">
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "LETHALFANTASY.Label.biodata"}}</legend>
|
<legend>{{localize "LETHALFANTASY.Label.biodata"}}</legend>
|
||||||
<div class="biodata">
|
<div class="biodata">
|
||||||
<div class="biodata-elem">
|
<div class="biodata-elem">
|
||||||
<span class="name">Class</span>
|
<span class="name">Class</span>
|
||||||
{{formInput systemFields.biodata.fields.class value=system.biodata.class }}
|
{{formInput
|
||||||
</div>
|
systemFields.biodata.fields.class
|
||||||
<div class="biodata-elem">
|
value=system.biodata.class
|
||||||
<span class="name">Level</span>
|
}}
|
||||||
{{formInput systemFields.biodata.fields.level value=system.biodata.level }}
|
</div>
|
||||||
</div>
|
<div class="biodata-elem">
|
||||||
<div class="biodata-elem">
|
<span class="name">Level</span>
|
||||||
<span class="name">Mortal</span>
|
{{formInput
|
||||||
{{formInput systemFields.biodata.fields.mortal value=system.biodata.mortal }}
|
systemFields.biodata.fields.level
|
||||||
</div>
|
value=system.biodata.level
|
||||||
<div class="biodata-elem">
|
}}
|
||||||
<span class="name">Alignment</span>
|
</div>
|
||||||
{{formInput systemFields.biodata.fields.alignment value=system.biodata.alignment }}
|
<div class="biodata-elem">
|
||||||
</div>
|
<span class="name">Mortal</span>
|
||||||
<div class="biodata-elem">
|
{{formInput
|
||||||
<span class="name">Age</span>
|
systemFields.biodata.fields.mortal
|
||||||
{{formInput systemFields.biodata.fields.age value=system.biodata.age }}
|
value=system.biodata.mortal
|
||||||
</div>
|
}}
|
||||||
<div class="biodata-elem">
|
</div>
|
||||||
<span class="name">Height</span>
|
<div class="biodata-elem">
|
||||||
{{formInput systemFields.biodata.fields.height value=system.biodata.height }}
|
<span class="name">Alignment</span>
|
||||||
</div>
|
{{formInput
|
||||||
<div class="biodata-elem">
|
systemFields.biodata.fields.alignment
|
||||||
<span class="name">Weight</span>
|
value=system.biodata.alignment
|
||||||
{{formInput systemFields.biodata.fields.weight value=system.biodata.weight }}
|
}}
|
||||||
</div>
|
</div>
|
||||||
<div class="biodata-elem">
|
<div class="biodata-elem">
|
||||||
<span class="name">Eyes</span>
|
<span class="name">Age</span>
|
||||||
{{formInput systemFields.biodata.fields.eyes value=system.biodata.eyes }}
|
{{formInput systemFields.biodata.fields.age value=system.biodata.age}}
|
||||||
</div>
|
</div>
|
||||||
<div class="biodata-elem">
|
<div class="biodata-elem">
|
||||||
<span class="name">Hair</span>
|
<span class="name">Height</span>
|
||||||
{{formInput systemFields.biodata.fields.hair value=system.biodata.hair }}
|
{{formInput
|
||||||
</div>
|
systemFields.biodata.fields.height
|
||||||
<div class="biodata-elem">
|
value=system.biodata.height
|
||||||
<span class="name">Dev. Points (Total)</span>
|
}}
|
||||||
{{formInput systemFields.developmentPoints.fields.total value=system.developmentPoints.total }}
|
</div>
|
||||||
</div>
|
<div class="biodata-elem">
|
||||||
<div class="biodata-elem">
|
<span class="name">Weight</span>
|
||||||
<span class="name">Dev. Points (Rem.)</span>
|
{{formInput
|
||||||
{{formInput systemFields.developmentPoints.fields.remaining value=system.developmentPoints.remaining }}
|
systemFields.biodata.fields.weight
|
||||||
</div>
|
value=system.biodata.weight
|
||||||
<div class="biodata-elem">
|
}}
|
||||||
<span class="name">Magic User</span>
|
</div>
|
||||||
{{formInput systemFields.biodata.fields.magicUser value=system.biodata.magicUser }}
|
<div class="biodata-elem">
|
||||||
</div>
|
<span class="name">Eyes</span>
|
||||||
<div class="biodata-elem">
|
{{formInput
|
||||||
<span class="name">Cleric User</span>
|
systemFields.biodata.fields.eyes
|
||||||
{{formInput systemFields.biodata.fields.clericUser value=system.biodata.clericUser }}
|
value=system.biodata.eyes
|
||||||
</div>
|
}}
|
||||||
<div class="biodata-elem">
|
</div>
|
||||||
<span class="name">Save bonus (1/5levels)</span>
|
<div class="biodata-elem">
|
||||||
{{formInput systemFields.modifiers.fields.saveModifier value=system.modifiers.saveModifier disabled=true}}
|
<span class="name">Hair</span>
|
||||||
</div>
|
{{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}}
|
{{#if system.biodata.magicUser}}
|
||||||
<div class="biodata-elem">
|
<div class="biodata-elem">
|
||||||
<span class="name">Spell bonus (1/5levels)</span>
|
<span class="name">Spell bonus (1/5levels)</span>
|
||||||
{{formInput systemFields.modifiers.fields.levelSpellModifier value=system.modifiers.levelSpellModifier disabled=true}}
|
{{formInput
|
||||||
</div>
|
systemFields.modifiers.fields.levelSpellModifier
|
||||||
{{/if}}
|
value=system.modifiers.levelSpellModifier
|
||||||
{{#if system.biodata.clericUser}}
|
disabled=true
|
||||||
<div class="biodata-elem">
|
}}
|
||||||
<span class="name">Miracle bonus (1/5levels)</span>
|
</div>
|
||||||
{{formInput systemFields.modifiers.fields.levelMiracleModifier value=system.modifiers.levelMiracleModifier disabled=true}}
|
{{/if}}
|
||||||
</div>
|
{{#if system.biodata.clericUser}}
|
||||||
{{/if}}
|
<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">
|
<div class="biodata-elem">
|
||||||
<span class="name">Last HD roll</span>
|
<span class="name">Last HD roll</span>
|
||||||
{{formInput systemFields.biodata.fields.hpPerLevel value=system.biodata.hpPerLevel disabled=isPlayMode}}
|
{{formInput
|
||||||
</div>
|
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>
|
<div class="biodata-elem">
|
||||||
</fieldset>
|
<span class="name">Magical DR</span>
|
||||||
|
{{formInput
|
||||||
|
systemFields.biodata.fields.magicDR
|
||||||
|
value=system.biodata.magicDR
|
||||||
|
disabled=isPlayMode
|
||||||
|
}}
|
||||||
|
</div>
|
||||||
|
|
||||||
<fieldset>
|
</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>
|
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||||
{{formInput systemFields.notes enriched=enrichedNotes value=system.notes name="system.notes" toggled=true}}
|
{{formInput
|
||||||
</fieldset>
|
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>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -120,6 +120,7 @@
|
|||||||
<div class="item-detail" data-tooltip="Maximum movement">{{item.system.maximumMovement}}</div>
|
<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="HP">{{item.system.hp}}</div>
|
||||||
<div class="item-detail" data-tooltip="Damage Reduction">{{item.system.damageReduction}}</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">
|
<div class="controls">
|
||||||
<a data-tooltip="{{localize 'LETHALFANTASY.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
<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>
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
@@ -149,7 +150,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="item-detail" data-tooltip="Movement reduction">{{item.system.movementreduction}}</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="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">
|
<div class="controls">
|
||||||
<a data-tooltip="{{localize 'LETHALFANTASY.Edit'}}" data-action="edit" data-item-id="{{item.id}}"
|
<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>
|
data-item-uuid="{{item.uuid}}"><i class="fas fa-edit"></i></a>
|
||||||
|
|||||||
@@ -68,15 +68,25 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="">{{localize
|
<span class="" data-tooltip="Damage reduction">{{localize
|
||||||
"LETHALFANTASY.Label.damageResistanceShort"
|
"LETHALFANTASY.Label.damageResistanceShort"
|
||||||
}}</span>
|
}}
|
||||||
{{formInput
|
</span>
|
||||||
systemFields.hp.fields.damageResistance
|
<input
|
||||||
value=system.hp.fields.damageResistance
|
type="text"
|
||||||
disabled=isPlayMode
|
class="character-damage-reduction"
|
||||||
classes="character-hp"
|
data-tooltip="DR (armor+natural+magical)"
|
||||||
}}
|
disabled
|
||||||
|
value={{damageReduction}}
|
||||||
|
/>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
class="character-damage-reduction"
|
||||||
|
data-tooltip="DR (shield)"
|
||||||
|
disabled
|
||||||
|
value={{damageReductionShield}}
|
||||||
|
/>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|||||||
@@ -1,111 +1,148 @@
|
|||||||
<div class="lethalfantasy-roll-dialog">
|
<div class="lethalfantasy-roll-dialog">
|
||||||
|
|
||||||
<fieldSet class="">
|
<fieldSet class="">
|
||||||
<legend>{{localize (concat "LETHALFANTASY.Label." rollType)}} - {{actorName}}</legend>
|
<legend>{{localize (concat "LETHALFANTASY.Label." rollType)}}
|
||||||
|
-
|
||||||
|
{{actorName}}</legend>
|
||||||
|
|
||||||
{{#if rollTarget.tokenId}}
|
{{#if rollTarget.tokenId}}
|
||||||
<div class="dialog-save">
|
<div class="dialog-save">
|
||||||
<a class="goto-token-button" data-action="gotoToken" data-token-id="{{rollTarget.tokenId}}">{{localize
|
<a
|
||||||
"LETHALFANTASY.Label.gotoToken"}} </a>
|
class="goto-token-button"
|
||||||
</div>
|
data-action="gotoToken"
|
||||||
|
data-token-id="{{rollTarget.tokenId}}"
|
||||||
|
>{{localize "LETHALFANTASY.Label.gotoToken"}} </a>
|
||||||
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if (match rollType "attack")}}
|
{{#if (match rollType "attack")}}
|
||||||
<div class="dialog-save">Attack roll ! - {{rollTarget.name}}</div>
|
<div class="dialog-save">Attack roll ! - {{rollTarget.name}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if (match rollType "defense")}}
|
{{#if (match rollType "defense")}}
|
||||||
<div class="dialog-save">Defense roll ! - {{rollTarget.name}}</div>
|
<div class="dialog-save">Defense roll ! - {{rollTarget.name}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if hasModifier}}
|
{{#if hasModifier}}
|
||||||
<div class="dialog-save">{{upperFirst rollName}} : {{baseFormula}} + {{baseValue}}</div>
|
<div class="dialog-save">{{upperFirst rollName}}
|
||||||
|
:
|
||||||
|
{{baseFormula}}
|
||||||
|
+
|
||||||
|
{{baseValue}}</div>
|
||||||
{{else}}
|
{{else}}
|
||||||
<div class="dialog-save">{{upperFirst rollName}} : {{baseFormula}}</div>
|
<div class="dialog-save">{{upperFirst rollName}} : {{baseFormula}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if rollTarget.weapon}}
|
{{#if rollTarget.weapon}}
|
||||||
<div class="dialog-save">{{localize "LETHALFANTASY.Label.baseModifier"}} : {{rollTarget.charModifier}}</div>
|
<div class="dialog-save">{{localize "LETHALFANTASY.Label.baseModifier"}}
|
||||||
<div class="dialog-save">{{localize "LETHALFANTASY.Label.weapon"}} : {{rollTarget.weapon.name}}</div>
|
:
|
||||||
<div class="dialog-save">{{localize "LETHALFANTASY.Label.skill"}} : {{rollTarget.name}}</div>
|
{{rollTarget.charModifier}}</div>
|
||||||
<div class="dialog-save">{{localize "LETHALFANTASY.Label.skillBonus"}} : {{rollTarget.weaponSkillModifier}}</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}}
|
||||||
|
|
||||||
{{#if (match rollType "attack")}}
|
{{#if (match rollType "attack")}}
|
||||||
<div class="dialog-save">Add Granted Attack Dice
|
<div class="dialog-save">Add Granted Attack Dice
|
||||||
<input type="checkbox" data-action="selectGranted" name="granted">
|
<input type="checkbox" data-action="selectGranted" name="granted" />
|
||||||
</div>
|
</div>
|
||||||
{{#if rollTarget.weapon}}
|
{{#if rollTarget.weapon}}
|
||||||
{{#if (eq rollTarget.weapon.system.weaponType "melee")}}
|
{{#if (eq rollTarget.weapon.system.weaponType "melee")}}{{else}}
|
||||||
{{else}}
|
<div class="dialog-save">Point Blank Range Attack
|
||||||
<div class="dialog-save">Point Blank Range Attack
|
<input
|
||||||
<input type="checkbox" data-action="selectPointBlank" name="pointBlankV">
|
type="checkbox"
|
||||||
</div>
|
data-action="selectPointBlank"
|
||||||
<div class="dialog-save">Beyond Skill Range Attack
|
name="pointBlankV"
|
||||||
<input type="checkbox" data-action="selectBeyondSkill" name="beyondSkillV">
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="dialog-save">Let it Fly (Pure D20E)
|
<div class="dialog-save">Beyond Skill Range Attack
|
||||||
<input type="checkbox" data-action="selectLetItFly" name="letItFlyV">
|
<input
|
||||||
</div>
|
type="checkbox"
|
||||||
<div class="dialog-save">Aiming
|
data-action="selectBeyondSkill"
|
||||||
<select name="attackerAim" data-tooltip-direction="UP">
|
name="beyondSkillV"
|
||||||
{{selectOptions attackerAimChoices selected=attackerAim}}
|
/>
|
||||||
</select>
|
</div>
|
||||||
</div>
|
<div class="dialog-save">Let it Fly (Pure D20E)
|
||||||
{{/if}}
|
<input
|
||||||
{{/if}}
|
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}}
|
||||||
{{#if (match rollType "defense")}}
|
{{#if (match rollType "defense")}}
|
||||||
<div class="dialog-save">Add Granted Defense Dice
|
<div class="dialog-save">Add Granted Defense Dice
|
||||||
<input type="checkbox" data-action="selectGranted" name="granted">
|
<input type="checkbox" data-action="selectGranted" name="granted" />
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if (match rollType "damage")}}
|
{{#if (match rollType "damage")}}
|
||||||
<div class="dialog-save">Add Granted Damage Dice
|
<div class="dialog-save">Add Granted Damage Dice
|
||||||
<input type="checkbox" data-action="selectGranted" name="granted">
|
<input type="checkbox" data-action="selectGranted" name="granted" />
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if rollTarget.staticModifier}}
|
{{#if rollTarget.staticModifier}}
|
||||||
<div class="dialog-save">Static modifier : +{{rollTarget.staticModifier}}</div>
|
<div class="dialog-save">Static modifier : +{{rollTarget.staticModifier}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
|
|
||||||
|
|
||||||
{{#if hasFavor}}
|
{{#if hasFavor}}
|
||||||
<fieldSet class="dialog-favor">
|
<fieldSet class="dialog-favor">
|
||||||
<legend>{{localize "LETHALFANTASY.Roll.favorDisfavor"}}</legend>
|
<legend>{{localize "LETHALFANTASY.Roll.favorDisfavor"}}</legend>
|
||||||
<select name="favor" class="favor-choice" data-tooltip-direction="UP">
|
<select name="favor" class="favor-choice" data-tooltip-direction="UP">
|
||||||
{{selectOptions choiceFavor selected=favor}}
|
{{selectOptions choiceFavor selected=favor}}
|
||||||
</select>
|
</select>
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if hasModifier}}
|
{{#if hasModifier}}
|
||||||
<fieldSet class="dialog-modifier">
|
<fieldSet class="dialog-modifier">
|
||||||
<legend>{{localize "LETHALFANTASY.Roll.modifierBonusMalus"}}</legend>
|
<legend>{{localize "LETHALFANTASY.Roll.modifierBonusMalus"}}</legend>
|
||||||
<select name="modifier" data-tooltip-direction="UP">
|
<select name="modifier" data-tooltip-direction="UP">
|
||||||
{{selectOptions choiceModifier selected=modifier}}
|
{{selectOptions choiceModifier selected=modifier}}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
{{#if (eq rollType "save")}}
|
{{#if (eq rollType "save")}}
|
||||||
{{#if rollTarget.magicUser}}
|
{{#if rollTarget.magicUser}}
|
||||||
<div>
|
<div>
|
||||||
<span>Save against spell (+{{rollTarget.actorModifiers.saveModifier}}) ?</span>
|
<span>Save against spell (+{{rollTarget.actorModifiers.saveModifier}})
|
||||||
<input type="checkbox" name="saveSpellCheck" data-action="saveSpellCheck">
|
?</span>
|
||||||
</div>
|
<input
|
||||||
{{/if}}
|
type="checkbox"
|
||||||
{{/if}}
|
name="saveSpellCheck"
|
||||||
</fieldSet>
|
data-action="saveSpellCheck"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
</fieldSet>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
{{#if hasChangeDice}}
|
{{#if hasChangeDice}}
|
||||||
<fieldSet class="dialog-modifier">
|
<fieldSet class="dialog-modifier">
|
||||||
<legend>{{localize "LETHALFANTASY.Roll.changeDice"}}</legend>
|
<legend>{{localize "LETHALFANTASY.Roll.changeDice"}}</legend>
|
||||||
<select name="changeDice" data-tooltip-direction="UP">
|
<select name="changeDice" data-tooltip-direction="UP">
|
||||||
{{selectOptions choiceDice selected=changeDice}}
|
{{selectOptions choiceDice selected=changeDice}}
|
||||||
</select>
|
</select>
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
||||||
<fieldSet>
|
<fieldSet>
|
||||||
@@ -115,5 +152,4 @@
|
|||||||
</select>
|
</select>
|
||||||
</fieldSet>
|
</fieldSet>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
@@ -1,6 +1,12 @@
|
|||||||
<section>
|
<section>
|
||||||
<div class="header">
|
<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}}
|
{{formInput fields.name value=source.name}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -8,23 +14,32 @@
|
|||||||
<div class="align-top">
|
<div class="align-top">
|
||||||
{{formField systemFields.defense value=system.defense}}
|
{{formField systemFields.defense value=system.defense}}
|
||||||
|
|
||||||
|
{{formField systemFields.damageReduction value=system.damageReduction}}
|
||||||
|
|
||||||
<div class="shift-right">
|
<div class="shift-right">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{formField systemFields.hascover value=system.hascover}}
|
{{formField systemFields.hascover value=system.hascover}}
|
||||||
|
|
||||||
{{#if system.hascover}}
|
{{#if system.hascover}}
|
||||||
<label>Cover vs ranged attacks</label>
|
<label>Cover vs ranged attacks</label>
|
||||||
<div class="shift-right">
|
<div class="shift-right">
|
||||||
<label>Standing </label>
|
<label>Standing </label>
|
||||||
<div class="flexrow">{{formField systemFields.standing.fields.min value=system.standing.min}} ... 30
|
<div class="flexrow">{{formField
|
||||||
|
systemFields.standing.fields.min
|
||||||
|
value=system.standing.min
|
||||||
|
}}
|
||||||
|
... 30
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="shift-right">
|
||||||
|
<label>Crouching</label>
|
||||||
|
<div class="flexrow">{{formField
|
||||||
|
systemFields.crouching.fields.min
|
||||||
|
value=system.crouching.min
|
||||||
|
}}
|
||||||
|
... 30</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="shift-right">
|
|
||||||
<label>Crouching</label>
|
|
||||||
<div class="flexrow">{{formField systemFields.crouching.fields.min value=system.crouching.min}}
|
|
||||||
... 30</div>
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -53,15 +68,14 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<fieldset>
|
<fieldset>
|
||||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||||
{{formInput
|
{{formInput
|
||||||
systemFields.description
|
systemFields.description
|
||||||
enriched=enrichedDescription
|
enriched=enrichedDescription
|
||||||
value=system.description
|
value=system.description
|
||||||
name="system.description"
|
name="system.description"
|
||||||
toggled="false"
|
toggled="false"
|
||||||
}}
|
}}
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</section>
|
</section>
|
||||||
Reference in New Issue
Block a user