Various enhancements + fixes
This commit is contained in:
+41
-20
@@ -490,6 +490,16 @@ i.lethalfantasy {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.lethalfantasy .tab.character-weapons .combat-details {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-weapons .combat-details .combat-detail {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-weapons .weapons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
@@ -576,32 +586,43 @@ i.lethalfantasy {
|
||||
.lethalfantasy .tab.character-spells .spells .spell .name {
|
||||
min-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .tab.character-spells .miracles {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-spells .miracles .miracle {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-spells .miracles .miracle .item-img {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
.lethalfantasy .tab.character-spells .miracles .miracle .name {
|
||||
min-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .tab.character-spells .appris {
|
||||
font-weight: bold;
|
||||
}
|
||||
.lethalfantasy .tab.character-spells prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
.lethalfantasy .tab.character-spells prose-mirror.active {
|
||||
min-height: 150px;
|
||||
}
|
||||
.lethalfantasy .tab.character-miracles {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
.lethalfantasy .tab.character-miracles legend a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
.lethalfantasy .tab.character-miracles .miracles {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-miracles .miracles .miracle {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-miracles .miracles .miracle .item-img {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
}
|
||||
.lethalfantasy .tab.character-miracles .miracles .miracle .name {
|
||||
min-width: 12rem;
|
||||
}
|
||||
.lethalfantasy .tab.character-miracles prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
.lethalfantasy .tab.character-miracles prose-mirror.active {
|
||||
min-height: 150px;
|
||||
}
|
||||
.lethalfantasy .opponent-content {
|
||||
font-family: var(--font-primary);
|
||||
font-size: calc(var(--font-size-standard) * 1);
|
||||
|
||||
+529
-505
File diff suppressed because it is too large
Load Diff
@@ -35,6 +35,9 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
spells: {
|
||||
template: "systems/fvtt-lethal-fantasy/templates/character-spells.hbs",
|
||||
},
|
||||
miracles: {
|
||||
template: "systems/fvtt-lethal-fantasy/templates/character-miracles.hbs",
|
||||
},
|
||||
biography: {
|
||||
template: "systems/fvtt-lethal-fantasy/templates/character-biography.hbs",
|
||||
},
|
||||
@@ -58,7 +61,9 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
if (this.actor.system.biodata.magicUser) {
|
||||
tabs.spells = { id: "spells", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-wand-magic-sparkles", label: "LETHALFANTASY.Label.spells" }
|
||||
}
|
||||
|
||||
if (this.actor.system.biodata.clericUser) {
|
||||
tabs.miracles = { id: "miracles", group: "sheet", icon: "fa-sharp-duotone fa-solid fa-hands-praying", label: "LETHALFANTASY.Label.miracles" }
|
||||
}
|
||||
for (const v of Object.values(tabs)) {
|
||||
v.active = this.tabGroups[v.group] === v.id
|
||||
v.cssClass = v.active ? "active" : ""
|
||||
@@ -71,14 +76,6 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
const context = await super._prepareContext()
|
||||
context.tabs = this.#getTabs()
|
||||
|
||||
context.tooltipsCaracteristiques = {
|
||||
}
|
||||
|
||||
context.tooltipsRessources = {
|
||||
}
|
||||
|
||||
context.rollType = {
|
||||
}
|
||||
return context
|
||||
}
|
||||
|
||||
@@ -100,9 +97,13 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
case "spells":
|
||||
context.tab = context.tabs.spells
|
||||
context.spells = doc.itemTypes.spell
|
||||
context.miracles = doc.itemTypes.miracle
|
||||
context.hasSpells = context.spells.length > 0
|
||||
break
|
||||
case "miracles":
|
||||
context.tab = context.tabs.miracles
|
||||
context.miracles = doc.itemTypes.miracle
|
||||
context.hasMiracles = context.miracles.length > 0
|
||||
break
|
||||
case "weapons":
|
||||
context.tab = context.tabs.weapons
|
||||
context.weapons = doc.itemTypes.weapon
|
||||
|
||||
@@ -282,6 +282,7 @@ export default class LethalFantasyRoll extends Roll {
|
||||
titleFormula = `${dice}E`
|
||||
}
|
||||
|
||||
// Specific pain case
|
||||
if (options.rollType === "save" && options.rollTarget.rollKey === "pain") {
|
||||
baseFormula = options.rollTarget.rollDice
|
||||
titleFormula = `${dice}`
|
||||
@@ -289,6 +290,11 @@ export default class LethalFantasyRoll extends Roll {
|
||||
fullModifier = 0
|
||||
}
|
||||
|
||||
// Specific pain/poison/contagion case
|
||||
if (options.rollType === "save" && options.rollTarget.rollKey.includes(["pain", "poison", "contagion"])) {
|
||||
hasD30 = false
|
||||
}
|
||||
|
||||
maxValue = Number(baseFormula.match(/\d+$/)[0]) // Update the max value agains
|
||||
|
||||
const rollData = {
|
||||
|
||||
@@ -55,11 +55,20 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
|
||||
obj[save.id] = challengeField(save.label)
|
||||
return obj
|
||||
}, {}),
|
||||
|
||||
|
||||
)
|
||||
const woundFieldSchema = {
|
||||
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
duration: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
description: new fields.StringField({ initial: "", required: false, nullable: true }),
|
||||
}
|
||||
|
||||
schema.hp = new fields.SchemaField({
|
||||
value: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
max: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
painDamage: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
wounds: new fields.ArrayField(new fields.SchemaField(woundFieldSchema ) ),
|
||||
})
|
||||
|
||||
schema.perception = new fields.SchemaField({
|
||||
@@ -92,6 +101,7 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
|
||||
eyes: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
hair: new fields.StringField({ required: true, nullable: false, initial: "" }),
|
||||
magicUser: new fields.BooleanField({ initial: false }),
|
||||
clericUser: new fields.BooleanField({ initial: false }),
|
||||
})
|
||||
|
||||
schema.modifiers = new fields.SchemaField({
|
||||
@@ -114,6 +124,7 @@ export default class LethalFantasyCharacter extends foundry.abstract.TypeDataMod
|
||||
attackModifier: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
defenseModifier: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
damageModifier: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
armorHitPoints: new fields.NumberField({ ...requiredInteger, initial: 0, min: 0 }),
|
||||
})
|
||||
|
||||
const moneyField = (label) => {
|
||||
|
||||
@@ -29,6 +29,8 @@ export default class LethalFantasyMiracle extends foundry.abstract.TypeDataModel
|
||||
schema.areaAffected = new fields.StringField({ required: true, initial: "" })
|
||||
schema.duration = new fields.StringField({ required: true, initial: "" })
|
||||
schema.savingThrow = new fields.StringField({ required: true, initial: "" })
|
||||
schema.materialComponent = new fields.StringField({ required: true, initial: "" })
|
||||
schema.catalyst = new fields.StringField({ required: true, initial: "" })
|
||||
|
||||
return schema
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ export default class LethalFantasySpell extends foundry.abstract.TypeDataModel {
|
||||
schema.duration = new fields.StringField({ required: true, initial: "" })
|
||||
schema.savingThrow = new fields.StringField({ required: true, initial: "" })
|
||||
schema.extraAetherPoints = new fields.StringField({ required: true, initial: "" })
|
||||
schema.materialComponent = new fields.StringField({ required: true, initial: "" })
|
||||
|
||||
return schema
|
||||
}
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+30
-3
@@ -397,6 +397,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
.combat-details {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
gap: 10px;
|
||||
.combat-detail {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.weapons {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
@@ -488,6 +499,25 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
prose-mirror.active {
|
||||
min-height: 150px;
|
||||
}
|
||||
}
|
||||
|
||||
.tab.character-miracles {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr;
|
||||
legend {
|
||||
a {
|
||||
font-size: calc(var(--font-size-standard) * 1.4);
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.miracles {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
@@ -506,9 +536,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
.appris {
|
||||
font-weight: bold;
|
||||
}
|
||||
prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
|
||||
@@ -35,10 +35,22 @@
|
||||
<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}}
|
||||
@@ -49,6 +61,8 @@
|
||||
<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}}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.miracles"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "
|
||||
LETHALFANTASY.Tooltip.addMiracle"}}" data-tooltip-direction="UP"><i class="fas fa-plus"
|
||||
data-action="createMiracle"></i></a>{{/if}}</legend>
|
||||
<div class="miracles">
|
||||
{{#each miracles as |item|}}
|
||||
<div class="miracle" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true" >
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name" >
|
||||
<a class="rollable" data-roll-type="miracle" data-roll-key="{{item.id}}">
|
||||
<i class="lf-roll-small fa-solid fa-dice-d20"></i>
|
||||
{{item.name}}
|
||||
</a>
|
||||
</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>
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</section>
|
||||
@@ -25,29 +25,4 @@
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.miracles"}}{{#if isEditMode}}<a class="action" data-tooltip="{{localize "
|
||||
LETHALFANTASY.Tooltip.addMiracle"}}" data-tooltip-direction="UP"><i class="fas fa-plus"
|
||||
data-action="createMiracle"></i></a>{{/if}}</legend>
|
||||
<div class="miracles">
|
||||
{{#each miracles as |item|}}
|
||||
<div class="miracle" data-item-id="{{item.id}}" data-item-uuid="{{item.uuid}}" data-drag="true" >
|
||||
<img class="item-img" src="{{item.img}}" data-tooltip="{{item.name}}" />
|
||||
<div class="name" >
|
||||
<a class="rollable" data-roll-type="miracle" data-roll-key="{{item.id}}">
|
||||
<i class="lf-roll-small fa-solid fa-dice-d20"></i>
|
||||
{{item.name}}
|
||||
</a>
|
||||
</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>
|
||||
<a data-tooltip="{{localize 'LETHALFANTASY.Delete'}}" data-action="delete" data-item-id="{{item.id}}"
|
||||
data-item-uuid="{{item.uuid}}"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
</section>
|
||||
@@ -1,6 +1,15 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<button class="action" data-action="rangedAttackDefense">{{localize "LETHALFANTASY.Label.rangedAttackDefense"}}</button>
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.combatDetails"}}</legend>
|
||||
<div class="combat-details">
|
||||
<div class="combat-detail">
|
||||
<button class="action" data-action="rangedAttackDefense">{{localize
|
||||
"LETHALFANTASY.Label.rangedAttackDefense"}}</button>
|
||||
{{formField systemFields.combat.fields.armorHitPoints value=system.combat.armorHitPoints localize=true}}
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.weapons"}}</legend>
|
||||
@@ -16,20 +25,24 @@
|
||||
</div>
|
||||
<div class="attack-icons">
|
||||
|
||||
<a class="rollable" data-roll-type="weapon-attack" data-roll-key="{{item.id}}" data-tooltip="Roll Attack">
|
||||
<a class="rollable" data-roll-type="weapon-attack" data-roll-key="{{item.id}}" data-tooltip="Roll Attack">
|
||||
<i class="lf-roll-small fa-solid fa-swords" data-roll-type="weapon-attack" data-roll-key="{{item.id}}"></i>
|
||||
</a>
|
||||
|
||||
<a class="rollable" data-roll-type="weapon-defense" data-roll-key="{{item.id}}" data-tooltip="Roll Defense">
|
||||
<i class="fa-solid fa-shield-halved" data-roll-type="weapon-defense" data-roll-key="{{item.id}}"></i>
|
||||
<a class="rollable" data-roll-type="weapon-defense" data-roll-key="{{item.id}}" data-tooltip="Roll Defense">
|
||||
<i class="fa-solid fa-shield-halved" data-roll-type="weapon-defense" data-roll-key="{{item.id}}"></i>
|
||||
</a>
|
||||
|
||||
<a class="rollable" data-roll-type="weapon-damage-small" data-roll-key="{{item.id}}" data-tooltip="Roll Damage (Small)">
|
||||
<i class="fa-regular fa-face-head-bandage" data-roll-type="weapon-damage-small" data-roll-key="{{item.id}}"></i>S
|
||||
<a class="rollable" data-roll-type="weapon-damage-small" data-roll-key="{{item.id}}"
|
||||
data-tooltip="Roll Damage (Small)">
|
||||
<i class="fa-regular fa-face-head-bandage" data-roll-type="weapon-damage-small"
|
||||
data-roll-key="{{item.id}}"></i>S
|
||||
</a>
|
||||
|
||||
<a class="rollable" data-roll-type="weapon-damage-medium" data-roll-key="{{item.id}}" data-tooltip="Roll Damage (Medium)">
|
||||
<i class="fa-regular fa-face-head-bandage" data-roll-type="weapon-damage-medium" data-roll-key="{{item.id}}"></i>M
|
||||
<a class="rollable" data-roll-type="weapon-damage-medium" data-roll-key="{{item.id}}"
|
||||
data-tooltip="Roll Damage (Medium)">
|
||||
<i class="fa-regular fa-face-head-bandage" data-roll-type="weapon-damage-medium"
|
||||
data-roll-key="{{item.id}}"></i>M
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
{{formField systemFields.duration value=system.duration}}
|
||||
{{formField systemFields.savingThrow value=system.savingThrow}}
|
||||
|
||||
{{formField systemFields.materialComponent value=system.materialComponent}}
|
||||
{{formField systemFields.catalyst value=system.catalyst}}
|
||||
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
{{formField systemFields.savingThrow value=system.savingThrow}}
|
||||
{{formField systemFields.extraAetherPoints value=system.extraAetherPoints}}
|
||||
|
||||
{{formField systemFields.materialComponent value=system.materialComponent}}
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
|
||||
Reference in New Issue
Block a user