Roll damage + fix
This commit is contained in:
parent
c7cc39886d
commit
614adecde7
@ -399,6 +399,24 @@ i.lethalfantasy {
|
||||
.lethalfantasy .character-main .character-resources-edit {
|
||||
min-width: 400px;
|
||||
}
|
||||
.lethalfantasy .tab.character-biography .biodata {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-biography .biodata .biodata-elem {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.lethalfantasy .tab.character-biography .biodata .biodata-elem .item-img {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
margin: 5px 0 0 0;
|
||||
}
|
||||
.lethalfantasy .tab.character-biography .biodata .biodata-elem .name {
|
||||
min-width: 8rem;
|
||||
}
|
||||
.lethalfantasy .character-biography prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
}
|
||||
|
@ -478,6 +478,7 @@
|
||||
"Platinums": "Platinum"
|
||||
},
|
||||
"Label": {
|
||||
"biodata": "Biodata",
|
||||
"titleChallenge": "Challenge",
|
||||
"titleSave": "Save",
|
||||
"titleSkill": "Skill",
|
||||
|
@ -1,5 +1,4 @@
|
||||
import LethalFantasyActorSheet from "./base-actor-sheet.mjs"
|
||||
import { ROLL_TYPE } from "../../config/system.mjs"
|
||||
|
||||
export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet {
|
||||
/** @override */
|
||||
@ -169,7 +168,7 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
goodSkill = s
|
||||
}
|
||||
}
|
||||
if (rollType === "weapon-damage") {
|
||||
if (rollType.includes("weapon-damage") ) {
|
||||
if (s.system.weaponBonus.damage > maxValue) {
|
||||
maxValue = Number(s.system.weaponBonus.damage)
|
||||
goodSkill = s
|
||||
@ -218,9 +217,10 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
return
|
||||
}
|
||||
break
|
||||
case "weapon-damage-small":
|
||||
case "weapon-damage-medium":
|
||||
case "weapon-attack":
|
||||
case "weapon-defense":
|
||||
case "weapon-damage":
|
||||
let weapon = this.actor.items.find((i) => i.type === "weapon" && i.id === rollKey)
|
||||
let skill
|
||||
let skills = this.actor.items.filter((i) => i.type === "skill" && i.name.toLowerCase() === weapon.name.toLowerCase())
|
||||
@ -256,9 +256,6 @@ export default class LethalFantasyCharacterSheet extends LethalFantasyActorSheet
|
||||
rollTarget.rollKey = rollKey
|
||||
rollTarget.combat = foundry.utils.duplicate(this.actor.system.combat)
|
||||
break
|
||||
case ROLL_TYPE.DAMAGE:
|
||||
rollTarget = elt.dataset.itemId
|
||||
break
|
||||
default:
|
||||
ui.notifications.error(game.i18n.localize("LETHALFANTASY.Notifications.rollTypeNotFound") + String(rollType))
|
||||
break
|
||||
|
@ -9,13 +9,6 @@ import * as CHARACTERISTICS from "./characteristic-tables.mjs"
|
||||
export const SYSTEM_ID = "fvtt-lethal-fantasy"
|
||||
export const DEV_MODE = false
|
||||
|
||||
export const ROLL_TYPE = Object.freeze({
|
||||
SAVE: "save",
|
||||
RESOURCE: "resource",
|
||||
DAMAGE: "damage",
|
||||
ATTACK: "attack",
|
||||
})
|
||||
|
||||
export const MONEY = {
|
||||
tinbit: {
|
||||
id: "tinbit",
|
||||
@ -155,7 +148,6 @@ export const SYSTEM = {
|
||||
CHARACTERISTIC_DAMAGE,
|
||||
MONEY,
|
||||
ASCII,
|
||||
ROLL_TYPE,
|
||||
CHOICE_MODIFIERS,
|
||||
CHOICE_DICE,
|
||||
DEV_MODE,
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { ROLL_TYPE } from "../config/system.mjs"
|
||||
import LethalFantasyUtils from "../utils.mjs"
|
||||
export default class LethalFantasyActor extends Actor {
|
||||
|
||||
@ -26,6 +25,7 @@ export default class LethalFantasyActor extends Actor {
|
||||
|
||||
return super.create(data, options);
|
||||
}
|
||||
|
||||
async _preCreate(data, options, user) {
|
||||
await super._preCreate(data, options, user)
|
||||
|
||||
@ -41,13 +41,4 @@ export default class LethalFantasyActor extends Actor {
|
||||
}
|
||||
}
|
||||
|
||||
async rollResource(resource) {
|
||||
if (this.type !== "character") return
|
||||
await this.system.roll(ROLL_TYPE.RESOURCE, resource)
|
||||
}
|
||||
|
||||
async rollSave(save, avantage) {
|
||||
if (this.type !== "character") return
|
||||
await this.system.roll(ROLL_TYPE.SAVE, save, avantage)
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { ROLL_TYPE, SYSTEM } from "../config/system.mjs"
|
||||
import { SYSTEM } from "../config/system.mjs"
|
||||
import LethalFantasyUtils from "../utils.mjs"
|
||||
|
||||
export default class LethalFantasyRoll extends Roll {
|
||||
@ -44,14 +44,6 @@ export default class LethalFantasyRoll extends Roll {
|
||||
return this.options.actorImage
|
||||
}
|
||||
|
||||
get introText() {
|
||||
return this.options.introText
|
||||
}
|
||||
|
||||
get introTextTooltip() {
|
||||
return this.options.introTextTooltip
|
||||
}
|
||||
|
||||
get modifier() {
|
||||
return this.options.modifier
|
||||
}
|
||||
@ -96,49 +88,6 @@ export default class LethalFantasyRoll extends Roll {
|
||||
return this.options.rollTarget
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates introductory text based on the roll type.
|
||||
*
|
||||
* @returns {string} The formatted introductory text for the roll.
|
||||
*/
|
||||
_createIntroText() {
|
||||
let text
|
||||
|
||||
switch (this.type) {
|
||||
case ROLL_TYPE.SAVE:
|
||||
const saveLabel = game.i18n.localize(`LETHALFANTASY.Character.FIELDS.caracteristiques.${this.target}.valeur.label`)
|
||||
text = game.i18n.format("LETHALFANTASY.Roll.save", { save: saveLabel })
|
||||
text = text.concat("<br>").concat(`Seuil : ${this.treshold}`)
|
||||
break
|
||||
case ROLL_TYPE.RESOURCE:
|
||||
const resourceLabel = game.i18n.localize(`LETHALFANTASY.Character.FIELDS.ressources.${this.target}.valeur.label`)
|
||||
text = game.i18n.format("LETHALFANTASY.Roll.resource", { resource: resourceLabel })
|
||||
break
|
||||
case ROLL_TYPE.DAMAGE:
|
||||
const damageLabel = this.target
|
||||
text = game.i18n.format("LETHALFANTASY.Roll.damage", { item: damageLabel })
|
||||
break
|
||||
case ROLL_TYPE.ATTACK:
|
||||
const attackLabel = this.target
|
||||
text = game.i18n.format("LETHALFANTASY.Roll.attack", { item: attackLabel })
|
||||
break
|
||||
}
|
||||
return text
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates an introductory text tooltip with characteristics and modifiers.
|
||||
*
|
||||
* @returns {string} A formatted string containing the value, help, hindrance, and modifier.
|
||||
*/
|
||||
_createIntroTextTooltip() {
|
||||
let tooltip = game.i18n.format("LETHALFANTASY.Tooltip.saveIntroTextTooltip", { value: this.value, aide: this.aide, gene: this.gene, modificateur: this.modificateur })
|
||||
if (this.hasTarget) {
|
||||
tooltip = tooltip.concat(`<br>Cible : ${this.targetName}`)
|
||||
}
|
||||
return tooltip
|
||||
}
|
||||
|
||||
/**
|
||||
* Prompt the user with a dialog to configure and execute a roll.
|
||||
*
|
||||
@ -196,6 +145,20 @@ export default class LethalFantasyRoll extends Roll {
|
||||
options.rollTarget.value = options.rollTarget.combat.defenseModifier + options.rollTarget.weaponSkillModifier
|
||||
options.rollTarget.charModifier = options.rollTarget.combat.defenseModifier
|
||||
}
|
||||
} else if (options.rollType.includes("weapon-damage")) {
|
||||
options.rollName = options.rollTarget.name
|
||||
hasModifier = true
|
||||
hasChangeDice = false
|
||||
options.rollTarget.value = options.rollTarget.combat.damageModifier + options.rollTarget.weaponSkillModifier
|
||||
options.rollTarget.charModifier = options.rollTarget.combat.damageModifier
|
||||
if (options.rollType.includes("small")) {
|
||||
dice = options.rollTarget.weapon.system.damage.damageS
|
||||
} else {
|
||||
dice = options.rollTarget.weapon.system.damage.damageM
|
||||
}
|
||||
dice = dice.replace("E", "")
|
||||
baseFormula = dice
|
||||
maxValue = 20
|
||||
}
|
||||
|
||||
if (options.rollType === "save" && options.rollTarget.rollKey === "pain") {
|
||||
@ -342,11 +305,11 @@ export default class LethalFantasyRoll extends Roll {
|
||||
} else {
|
||||
rollTotal = diceSum + rollModifier.total
|
||||
}
|
||||
} else {
|
||||
rollTotal = diceSum
|
||||
}
|
||||
|
||||
rollBase.options.resultType = resultType
|
||||
rollBase.options.introText = rollBase._createIntroText()
|
||||
rollBase.options.introTextTooltip = rollBase._createIntroTextTooltip()
|
||||
rollBase.options.rollTotal = rollTotal
|
||||
rollBase.options.diceResults = diceResults
|
||||
rollBase.options.rollTarget = options.rollTarget
|
||||
@ -385,8 +348,10 @@ export default class LethalFantasyRoll extends Roll {
|
||||
return `${game.i18n.localize("LETHALFANTASY.Label.weapon-attack")}`
|
||||
case "weapon-defense":
|
||||
return `${game.i18n.localize("LETHALFANTASY.Label.weapon-defense")}`
|
||||
case "weapon-damage":
|
||||
return `${game.i18n.localize("LETHALFANTASY.Label.weapon-damage")}`
|
||||
case "weapon-damage-small":
|
||||
return `${game.i18n.localize("LETHALFANTASY.Label.weapon-damage-small")}`
|
||||
case "weapon-damage-medium":
|
||||
return `${game.i18n.localize("LETHALFANTASY.Label.weapon-damage-medium")}`
|
||||
default:
|
||||
return game.i18n.localize("LETHALFANTASY.Label.titleStandard")
|
||||
}
|
||||
@ -415,8 +380,6 @@ export default class LethalFantasyRoll extends Roll {
|
||||
* @property {string} actorId - The ID of the actor performing the roll.
|
||||
* @property {string} actingCharName - The name of the character performing the roll.
|
||||
* @property {string} actingCharImg - The image of the character performing the roll.
|
||||
* @property {string} introText - Introductory text for the roll.
|
||||
* @property {string} introTextTooltip - Tooltip for the introductory text.
|
||||
* @property {string} resultType - The type of result (e.g., success, failure).
|
||||
* @property {boolean} hasTarget - Indicates if the roll has a target.
|
||||
* @property {string} targetName - The name of the target.
|
||||
@ -442,8 +405,6 @@ export default class LethalFantasyRoll extends Roll {
|
||||
diceResults: this.diceResults,
|
||||
actingCharName: this.actorName,
|
||||
actingCharImg: this.actorImage,
|
||||
introText: this.introText,
|
||||
introTextTooltip: this.introTextTooltip,
|
||||
resultType: this.resultType,
|
||||
hasTarget: this.hasTarget,
|
||||
targetName: this.targetName,
|
||||
@ -470,10 +431,8 @@ export default class LethalFantasyRoll extends Roll {
|
||||
isSave: this.isSave,
|
||||
isChallenge: this.isChallenge,
|
||||
isFailure: this.resultType === "failure",
|
||||
introText: this.introText,
|
||||
rollType: this.type,
|
||||
rollTarget: this.rollTarget,
|
||||
introTextTooltip: this.introTextTooltip,
|
||||
actingCharName: this.actorName,
|
||||
actingCharImg: this.actorImage,
|
||||
hasTarget: this.hasTarget,
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { ROLL_TYPE, SYSTEM } from "../config/system.mjs"
|
||||
import { SYSTEM } from "../config/system.mjs"
|
||||
import LethalFantasyRoll from "../documents/roll.mjs"
|
||||
import LethalFantasyUtils from "../utils.mjs"
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
import LethalFantasyRoll from "../documents/roll.mjs"
|
||||
import { ROLL_TYPE } from "../config/system.mjs"
|
||||
|
||||
export default class LethalFantasyOpponent extends foundry.abstract.TypeDataModel {
|
||||
static defineSchema() {
|
||||
@ -26,13 +25,13 @@ export default class LethalFantasyOpponent extends foundry.abstract.TypeDataMode
|
||||
|
||||
/**
|
||||
* Rolls a dice attack for an opponent.
|
||||
* @param {number} rollValue The dice to roll.
|
||||
* @param {number} rollType Type of roll.
|
||||
* @param {number} rollTarget The name of the attack
|
||||
* @returns {Promise<null>} - A promise that resolves to null if the roll is cancelled.
|
||||
*/
|
||||
async roll(rollValue, rollTarget) {
|
||||
async roll(rollType, rollTarget) {
|
||||
let roll = await LethalFantasyRoll.prompt({
|
||||
rollType: ROLL_TYPE.ATTACK,
|
||||
rollType: rollType,
|
||||
rollValue,
|
||||
rollTarget,
|
||||
actorId: this.parent.id,
|
||||
|
BIN
packs/lf-equipment/CURRENT
(Stored with Git LFS)
BIN
packs/lf-equipment/CURRENT
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-equipment/LOG
(Stored with Git LFS)
BIN
packs/lf-equipment/LOG
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-equipment/LOG.old
(Stored with Git LFS)
BIN
packs/lf-equipment/LOG.old
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-equipment/MANIFEST-000070
(Stored with Git LFS)
BIN
packs/lf-equipment/MANIFEST-000070
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-equipment/MANIFEST-000074
(Stored with Git LFS)
Normal file
BIN
packs/lf-equipment/MANIFEST-000074
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
packs/lf-gifts/CURRENT
(Stored with Git LFS)
BIN
packs/lf-gifts/CURRENT
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-gifts/LOG
(Stored with Git LFS)
BIN
packs/lf-gifts/LOG
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-gifts/LOG.old
(Stored with Git LFS)
BIN
packs/lf-gifts/LOG.old
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-gifts/MANIFEST-000066
(Stored with Git LFS)
BIN
packs/lf-gifts/MANIFEST-000066
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-gifts/MANIFEST-000070
(Stored with Git LFS)
Normal file
BIN
packs/lf-gifts/MANIFEST-000070
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
packs/lf-skills/CURRENT
(Stored with Git LFS)
BIN
packs/lf-skills/CURRENT
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-skills/LOG
(Stored with Git LFS)
BIN
packs/lf-skills/LOG
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-skills/LOG.old
(Stored with Git LFS)
BIN
packs/lf-skills/LOG.old
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-skills/MANIFEST-000070
(Stored with Git LFS)
BIN
packs/lf-skills/MANIFEST-000070
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-skills/MANIFEST-000074
(Stored with Git LFS)
Normal file
BIN
packs/lf-skills/MANIFEST-000074
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
packs/lf-vulnerabilities/CURRENT
(Stored with Git LFS)
BIN
packs/lf-vulnerabilities/CURRENT
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-vulnerabilities/LOG
(Stored with Git LFS)
BIN
packs/lf-vulnerabilities/LOG
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-vulnerabilities/LOG.old
(Stored with Git LFS)
BIN
packs/lf-vulnerabilities/LOG.old
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-vulnerabilities/MANIFEST-000066
(Stored with Git LFS)
BIN
packs/lf-vulnerabilities/MANIFEST-000066
(Stored with Git LFS)
Binary file not shown.
BIN
packs/lf-vulnerabilities/MANIFEST-000070
(Stored with Git LFS)
Normal file
BIN
packs/lf-vulnerabilities/MANIFEST-000070
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -296,6 +296,27 @@
|
||||
}
|
||||
}
|
||||
|
||||
.tab.character-biography {
|
||||
.biodata {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 10px;
|
||||
.biodata-elem {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
.item-img {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
margin: 5px 0 0 0;
|
||||
}
|
||||
.name {
|
||||
min-width: 8rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.character-biography {
|
||||
prose-mirror.inactive {
|
||||
min-height: 40px;
|
||||
|
@ -6,7 +6,7 @@
|
||||
"download": "#{DOWNLOAD}#",
|
||||
"url": "#{URL}#",
|
||||
"license": "LICENSE",
|
||||
"version": "12.0.11",
|
||||
"version": "12.0.12",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Uberwald",
|
||||
|
@ -1,10 +1,54 @@
|
||||
<section class="tab character-{{tab.id}} {{tab.cssClass}}" data-tab="{{tab.id}}" data-group="{{tab.group}}">
|
||||
|
||||
<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">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>
|
||||
</fieldset>
|
||||
|
||||
<fieldset>
|
||||
<legend>{{localize "LETHALFANTASY.Label.description"}}</legend>
|
||||
{{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}}
|
||||
{{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>
|
||||
|
||||
</section>
|
@ -23,8 +23,12 @@
|
||||
<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" data-roll-key="{{item.id}}" data-tooltip="Roll Damage">
|
||||
<i class="fa-regular fa-face-head-bandage" data-roll-type="weapon-damage" data-roll-key="{{item.id}}"></i>
|
||||
<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>
|
||||
|
||||
</div>
|
||||
|
Loading…
x
Reference in New Issue
Block a user