Various fixes

This commit is contained in:
LeRatierBretonnien 2023-03-11 12:11:27 +01:00
parent 02f8207fb7
commit f26cd7670c
11 changed files with 111 additions and 71 deletions

View File

@ -14,8 +14,8 @@ export class HeritiersActorSheet extends ActorSheet {
return mergeObject(super.defaultOptions, { return mergeObject(super.defaultOptions, {
classes: ["fvtt-les-heritiers", "sheet", "actor"], classes: ["fvtt-les-heritiers", "sheet", "actor"],
template: "systems/fvtt-les-heritiers/templates/actor-sheet.html", template: "systems/fvtt-les-heritiers/templates/actor-sheet.html",
width: 640, width: 780,
height: 720, height: 840,
tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }], tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "stats" }],
dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }], dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }],
editScore: false editScore: false
@ -38,7 +38,8 @@ export class HeritiersActorSheet extends ActorSheet {
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)), effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
limited: this.object.limited, limited: this.object.limited,
skills: this.actor.getSkills(), skills: this.actor.getSkills(),
utileSkills :this.actor.organizeUtileSkills(), utileSkillsMental :this.actor.organizeUtileSkills("mental"),
utileSkillsPhysical :this.actor.organizeUtileSkills("physical"),
futileSkills :this.actor.organizeFutileSkills(), futileSkills :this.actor.organizeFutileSkills(),
contacts: this.actor.organizeContacts(), contacts: this.actor.organizeContacts(),
armes: duplicate(this.actor.getWeapons()), armes: duplicate(this.actor.getWeapons()),
@ -136,6 +137,10 @@ export class HeritiersActorSheet extends ActorSheet {
const key = $(event.currentTarget).data("key") const key = $(event.currentTarget).data("key")
this.actor.rollCarac(key, false) this.actor.rollCarac(key, false)
}) })
html.find('.roll-rang').click((event) => {
const key = $(event.currentTarget).data("rang-key")
this.actor.rollRang(key, false)
})
html.find('.roll-competence').click((event) => { html.find('.roll-competence').click((event) => {
const li = $(event.currentTarget).parents(".item") const li = $(event.currentTarget).parents(".item")
let compId = li.data("item-id") let compId = li.data("item-id")

View File

@ -141,7 +141,7 @@ export class HeritiersActor extends Actor {
return this.getItemSorted( ["capacitenaturelle"]) return this.getItemSorted( ["capacitenaturelle"])
} }
getFee() { getFee() {
return this.items.filter(item => item.type =="fee") return this.items.find(item => item.type =="fee")
} }
getProfils() { getProfils() {
return this.getItemSorted( ["profil"]) return this.getItemSorted( ["profil"])
@ -174,23 +174,25 @@ export class HeritiersActor extends Actor {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
organizeUtileSkills() { organizeUtileSkills(kind = "mental") {
let comp = {} let comp = {}
for (let key in game.system.lesheritiers.config.competenceProfil) { for (let key in game.system.lesheritiers.config.competenceProfil) {
if ( game.system.lesheritiers.config.competenceProfil[key].kind == kind)
comp[key] = [] comp[key] = []
} }
for (let item of this.items) { for (let item of this.items) {
if (item.type == "competence") { if (item.type == "competence") {
if (item.system.categorie == "utile") { if (item.system.categorie == "utile" && comp[item.system.profil]) {
this.prepareUtileSkill(item) this.prepareUtileSkill(item)
comp[item.system.profil].push(item) comp[item.system.profil].push(item)
} }
} }
} }
for (let key in comp) { for (let key in comp) {
HeritiersUtility.sortArrayObjectsByName(comp[key]) HeritiersUtility.sortArrayObjectsByName(comp[key])
} }
return comp return Object.fromEntries(Object.entries(comp).sort())
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
organizeContacts() { organizeContacts() {
@ -553,6 +555,16 @@ export class HeritiersActor extends Actor {
rollDialog.render(true) rollDialog.render(true)
} }
/* -------------------------------------------- */
async rollRang(key, isInit = false) {
let rollData = this.getCommonRollData()
rollData.mode = "rang"
rollData.rang = this.system.rang[key]
rollData.rangKey = key
let rollDialog = await HeritiersRollDialog.create(this, rollData)
rollDialog.render(true)
}
/* -------------------------------------------- */ /* -------------------------------------------- */
async rollCompetence(compId) { async rollCompetence(compId) {
let rollData = this.getCommonRollData(compId) let rollData = this.getCommonRollData(compId)

View File

@ -25,12 +25,12 @@ export const HERITIERS_CONFIG = {
}, },
competenceProfil : { competenceProfil : {
"aventurier": "Aventurier", "aventurier": {kind: "physical", name: "Aventurier"},
"roublard": "Roublard", "roublard": {kind: "physical",name: "Roublard"},
"combattant": "Combattant", "combattant": {kind: "physical",name:"Combattant"},
"erudit": "Erudit", "erudit": {kind: "mental",name:"Erudit"},
"savant": "Savant", "savant": {kind: "mental",name:"Savant"},
"gentleman": "Gentleman" "gentleman": {kind: "mental",name:"Gentleman"}
}, },
baseTestPouvoir: { baseTestPouvoir: {
"feerie": "Féerie", "feerie": "Féerie",

View File

@ -44,30 +44,14 @@ export class HeritiersUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static sortByName(table) { static sortByName(table) {
return table.sort(function (a, b) { return table.sort(function (a, b) {
let fa = a.name.toLowerCase(), return a.name.localeCompare(b.name);
fb = b.name.toLowerCase();
if (fa < fb) {
return -1;
}
if (fa > fb) {
return 1;
}
return 0;
}) })
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static sortArrayObjectsByName(myArray) { static sortArrayObjectsByName(myArray) {
myArray.sort((a, b) => { myArray.sort((a, b) => {
let fa = a.name.toLowerCase(); return a.name.localeCompare(b.name);
let fb = b.name.toLowerCase();
if (fa < fb) {
return -1;
}
if (fa > fb) {
return 1;
}
return 0;
}) })
} }
@ -130,6 +114,7 @@ export class HeritiersUtility {
'systems/fvtt-les-heritiers/templates/partial-item-header.html', 'systems/fvtt-les-heritiers/templates/partial-item-header.html',
'systems/fvtt-les-heritiers/templates/partial-item-description.html', 'systems/fvtt-les-heritiers/templates/partial-item-description.html',
'systems/fvtt-les-heritiers/templates/partial-item-nav.html', 'systems/fvtt-les-heritiers/templates/partial-item-nav.html',
'systems/fvtt-les-heritiers/templates/partial-utile-skills.html',
'systems/fvtt-les-heritiers/templates/partial-list-niveau.html' 'systems/fvtt-les-heritiers/templates/partial-list-niveau.html'
] ]
return loadTemplates(templatePaths); return loadTemplates(templatePaths);
@ -358,14 +343,19 @@ export class HeritiersUtility {
rollData.nbDice = (rollData.useTricherie || rollData.useHeritage) ? 3 : 1 rollData.nbDice = (rollData.useTricherie || rollData.useHeritage) ? 3 : 1
rollData.diceFormula = rollData.nbDice + rollData.mainDice + "kh1" rollData.diceFormula = rollData.nbDice + rollData.mainDice + "kh1"
//console.log("BEFORE COMP", rollData) //console.log("BEFORE COMP", rollData)
let rangValue = 0
if (rollData.rang) {
rangValue = rollData.rang.value
}
if (rollData.competence) { if (rollData.competence) {
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0 let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
let specBonus = (rollData.useSpecialite) ? 1 : 0 let specBonus = (rollData.useSpecialite) ? 1 : 0
rollData.diceFormula += `+${rollData.carac.value}+${rollData.competence.system.niveau}+${specBonus}+${rollData.bonusMalusContext}+${compmod}` rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.competence.system.niveau}+${specBonus}+${rollData.bonusMalusContext}+${compmod}`
} else if (rollData.pouvoirBase) { } else if (rollData.pouvoirBase) {
rollData.diceFormula += `+${rollData.pouvoirBase.value}+${rollData.bonusMalusContext}` rollData.diceFormula += `+${rollData.pouvoirBase.value}+${rangValue}+${rollData.bonusMalusContext}`
} else { } else {
rollData.diceFormula += `+${rollData.carac.value}+${rollData.bonusMalusContext}` rollData.diceFormula += `+${rollData.carac.value}+${rangValue}+${rollData.bonusMalusContext}`
} }
rollData.diceFormula += `+${rollData.pvMalus}` rollData.diceFormula += `+${rollData.pvMalus}`

View File

@ -653,6 +653,9 @@ ul, li {
padding-left: 0.25rem; padding-left: 0.25rem;
margin-right: 0.25rem; margin-right: 0.25rem;
} }
.specialisarion-margin {
margin-left: 1.5rem;
}
.short-label { .short-label {
flex-grow: 1; flex-grow: 1;
} }

View File

@ -1,7 +1,7 @@
{ {
"id": "fvtt-les-heritiers", "id": "fvtt-les-heritiers",
"description": "Les Héritiers pour FoundryVTT", "description": "Les Héritiers pour FoundryVTT",
"version": "10.0.25", "version": "10.0.26",
"authors": [ "authors": [
{ {
"name": "Uberwald/LeRatierBretonnien", "name": "Uberwald/LeRatierBretonnien",
@ -19,7 +19,7 @@
"gridUnits": "m", "gridUnits": "m",
"license": "LICENSE.txt", "license": "LICENSE.txt",
"manifest": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/raw/branch/master/system.json", "manifest": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/raw/branch/master/system.json",
"download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.0.25.zip", "download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.0.26.zip",
"languages": [ "languages": [
{ {
"lang": "fr", "lang": "fr",

View File

@ -117,18 +117,22 @@
}, },
"rang": { "rang": {
"tricherie": { "tricherie": {
"label": "Tricherie",
"value": 0, "value": 0,
"max": 0 "max": 0
}, },
"feerie": { "feerie": {
"label": "Féerie",
"value": 0, "value": 0,
"max": 0 "max": 0
}, },
"masque": { "masque": {
"label": "Masque",
"value": 0, "value": 0,
"max": 0 "max": 0
}, },
"heritage": { "heritage": {
"label": "Héritage",
"value": 0, "value": 0,
"max": 0, "max": 0,
"scenarios": 0 "scenarios": 0

View File

@ -78,42 +78,21 @@
<div class="flexcol"> <div class="flexcol">
{{#each utileSkills as |skillList keyProfil|}} <div class="grid-2col">
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow">
<span class="item-field-label-long">
<h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Niveau</label>
</span>
<div class="item-filler">&nbsp;</div>
</li>
{{#each skillList as |skill key|}}
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
<span class="item-field-label-long roll-style"><a class="roll-competence item-field-label-short"
data-attr-key="tochoose">{{skill.name}}</a></span>
<select class="item-field-label-short edit-item-data" type="text"
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
{{#select skill.system.niveau}}
{{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
{{/select}}
</select>
<input type="checkbox" class="item-field-label-short edit-item-data" data-item-field="predilection" {{checked skill.system.predilection}}/> <div>
{{#each utileSkillsPhysical as |skillList keyProfil|}}
<span class="item-field-label-long2">{{skill.specList}}</span> {{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillList=skillList keyProfil=keyProfil}}
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{/each}} {{/each}}
</ul>
</div> </div>
<div>
{{#each utileSkillsMental as |skillList keyProfil|}}
{{> systems/fvtt-les-heritiers/templates/partial-utile-skills.html skillList=skillList keyProfil=keyProfil}}
{{/each}} {{/each}}
</div>
</div>
<div class="sheet-box color-bg-archetype"> <div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list"> <ul class="item-list alternate-list">
@ -295,11 +274,11 @@
<div class="flexrow"> <div class="flexrow">
<ul> <ul>
<li class="flexrow item"> <li class="flexrow item">
<label class="item-field-label-medium">Féerie</label> <label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="feerie">Féerie</a></label>
<input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.rang.feerie.value" value="{{system.rang.feerie.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.rang.feerie.max" value="{{system.rang.feerie.max}}" data-dtype="Number" />
<span class="item-field-label-long"></span> <span class="item-field-label-long"></span>
<label class="item-field-label-medium">Masque</label> <label class="item-field-label-medium roll-style"><a class="roll-rang item-field-label-short" data-rang-key="masque">Masque</a></label>
<input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.rang.masque.value" value="{{system.rang.masque.value}}" data-dtype="Number" />
<input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" /> <input type="text" class="item-field-label-short" name="system.rang.masque.max" value="{{system.rang.masque.max}}" data-dtype="Number" />
</li> </li>

View File

@ -20,6 +20,10 @@
<ul> <ul>
<li class="heritiers-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li> <li class="heritiers-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
{{#if rang}}
<li>{{rang.label}} : {{rang.value}}</li>
{{/if}}
{{#if competence}} {{#if competence}}
<li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li> <li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li>
{{#if useSpecialite}} {{#if useSpecialite}}

View File

@ -0,0 +1,36 @@
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow">
<span class="item-field-label-long">
<h3><label class="items-title-text">{{upperFirst keyProfil}}</label></h3>
</span>
<span class="item-field-label-short">
<label class="short-label">Niveau</label>
</span>
<div class="item-filler">&nbsp;</div>
</li>
{{#each skillList as |skill key|}}
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
<span class="item-field-label-long roll-style"><a class="roll-competence item-field-label-short"
data-attr-key="tochoose">{{skill.name}}</a></span>
<select class="item-field-label-short edit-item-data" type="text"
data-item-field="niveau" value="{{skill.system.niveau}}" data-dtype="Number">
{{#select skill.system.niveau}}
{{> systems/fvtt-les-heritiers/templates/partial-list-niveau.html}}
{{/select}}
</select>
<input type="checkbox" class="item-field-label-short edit-item-data" data-item-field="predilection" {{checked skill.system.predilection}}/>
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
</div>
</li>
{{#if (count skill.specList)}}
<li class="item flexrow" data-item-id="{{skill._id}}" data-item-type="competence">
<span class="specialisarion-margin item-field-label-long2">{{skill.specList}}</span>
</li>
{{/if}}
{{/each}}
</ul>
</div>

View File

@ -8,6 +8,13 @@
<div class="flexcol"> <div class="flexcol">
{{#if (eq mode "rang")}}
<div class="flexrow">
<span class="roll-dialog-label">{{rang.label}}</span>
<span class="roll-dialog-label">{{rang.value}}</span>
</div>
{{/if}}
{{#if (eq mode "carac")}} {{#if (eq mode "carac")}}
<div class="flexrow"> <div class="flexrow">
<span class="roll-dialog-label">Caracteristique</span> <span class="roll-dialog-label">Caracteristique</span>