Divers ajouts

This commit is contained in:
LeRatierBretonnien 2023-03-08 16:58:11 +01:00
parent d554656925
commit fac6618b74
21 changed files with 293 additions and 41 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
assets/icons/erudit.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
assets/icons/gentleman.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

BIN
assets/icons/profil.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

BIN
assets/icons/roublard.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -40,6 +40,7 @@ export class HeritiersActorSheet extends ActorSheet {
skills: this.actor.getSkills(),
utileSkills :this.actor.organizeUtileSkills(),
futileSkills :this.actor.organizeFutileSkills(),
contacts: this.actor.organizeContacts(),
armes: duplicate(this.actor.getWeapons()),
monnaies: duplicate(this.actor.getMonnaies()),
fee: duplicate(this.actor.getFee() || {} ),
@ -50,9 +51,13 @@ export class HeritiersActorSheet extends ActorSheet {
atouts: duplicate(this.actor.getAtouts()),
capacites: duplicate(this.actor.getCapacites()),
desavantages: duplicate(this.actor.getDesavantages()),
profils: duplicate(this.actor.getProfils()),
pvMalus: this.actor.getPvMalus(),
initiative: this.actor.getFlag("world", "last-initiative") || -1,
description: await TextEditor.enrichHTML(this.object.system.biodata.description, {async: true}),
revesetranges: await TextEditor.enrichHTML(this.object.system.biodata.revesetranges, {async: true}),
secretsdecouverts: await TextEditor.enrichHTML(this.object.system.biodata.secretsdecouverts, {async: true}),
questions: await TextEditor.enrichHTML(this.object.system.biodata.questions, {async: true}),
habitat: await TextEditor.enrichHTML(this.object.system.biodata.habitat, {async: true}),
options: this.options,
owner: this.document.isOwner,

View File

@ -104,7 +104,7 @@ export class HeritiersActor extends Actor {
/* ----------------------- --------------------- */
getEquipments() {
return this.items.filter(item => item.type == "equipement")
return this.items.filter(item => item.type == "equipement" || item.type == "accessoire")
}
getAvantages() {
return this.items.filter(item => item.type == "avantage")
@ -133,6 +133,9 @@ export class HeritiersActor extends Actor {
getFee() {
return this.items.find(item => item.type == "fee")
}
getProfils() {
return this.items.filter(item => item.type == "profil")
}
/* -------------------------------------------- */
getSkills() {
let comp = []
@ -145,6 +148,18 @@ export class HeritiersActor extends Actor {
return HeritiersUtility.sortByName(comp)
}
/* -------------------------------------------- */
prepareUtileSkill(item) {
let specList = []
if (item.system.categorie == "utile") {
for (let spec of item.system.specialites) {
specList.push(spec.name)
}
}
item.nbSpec = specList.length
item.specList = specList.toString()
}
/* -------------------------------------------- */
organizeUtileSkills() {
let comp = {}
@ -154,12 +169,25 @@ export class HeritiersActor extends Actor {
for (let item of this.items) {
if (item.type == "competence") {
if (item.system.categorie == "utile") {
this.prepareUtileSkill(item)
comp[item.system.profil].push(item)
}
}
}
return comp
}
/* -------------------------------------------- */
organizeContacts( ) {
let contactList = {}
for (let item of this.items) {
if (item.type == "contact") {
let c = contactList[item.system.contacttype] || { label: game.system.lesheritiers.config.contactType[item.system.contacttype], list: [] }
c.list.push( item )
contactList[item.system.contacttype] = c
}
}
return contactList
}
/* -------------------------------------------- */
organizeFutileSkills() {
@ -463,15 +491,18 @@ export class HeritiersActor extends Actor {
rollData.tricherie = this.getTricherie()
rollData.heritage = this.getHeritages()
rollData.useTricherie = false
rollData.useSpecialite = false
rollData.useHeritage = false
rollData.pvMalus = this.getPvMalus()
if (compId) {
rollData.competence = duplicate(this.items.get(compId) || {})
this.prepareUtileSkill(rollData.competence)
rollData.actionImg = rollData.competence?.img
}
if (compName) {
rollData.competence = duplicate(this.items.find(item => item.name.toLowerCase() == compName.toLowerCase()) || {})
this.prepareUtileSkill(rollData.competence)
rollData.actionImg = rollData.competence?.img
}
return rollData

View File

@ -16,6 +16,13 @@ export const HERITIERS_CONFIG = {
"utile": "Utile",
"futile": "Futile"
},
contactType: {
contact: "Contact",
allie: "Allié",
ennemi: "Ennemi",
interet: "Personne d'interêt"
},
competenceProfil : {
"aventurier": "Aventurier",

View File

@ -15,8 +15,8 @@ export const defaultItemImg = {
arme: "systems/fvtt-les-heritiers/assets/icons/weapon.webp",
accessoire: "systems/fvtt-les-heritiers/assets/icons/item.webp",
protection: "systems/fvtt-les-heritiers/assets/icons/armor.webp",
fee: "systems/fvtt-les-heritiers/assets/icons/faery_type.webp"
fee: "systems/fvtt-les-heritiers/assets/icons/faery_type.webp",
profil: "systems/fvtt-les-heritiers/assets/icons/profil.webp"
}
/**

View File

@ -90,6 +90,9 @@ export class HeritiersRollDialog extends Dialog {
html.find('#useTricherie').change((event) => {
this.rollData.useTricherie = event.currentTarget.checked
})
html.find('#useSpecialite').change((event) => {
this.rollData.useSpecialite = event.currentTarget.checked
})
html.find('#useHeritage').change((event) => {
this.rollData.useHeritage = event.currentTarget.checked
})

View File

@ -345,7 +345,8 @@ export class HeritiersUtility {
//console.log("BEFORE COMP", rollData)
if (rollData.competence) {
let compmod = (rollData.competence.system.niveau == 0) ? -3 : 0
rollData.diceFormula += `+${rollData.carac.value}+${rollData.competence.system.niveau}+${rollData.bonusMalusContext}+${compmod}`
let specBonus = (rollData.useSpecialite) ? 1 : 0
rollData.diceFormula += `+${rollData.carac.value}+${rollData.competence.system.niveau}+${specBonus}+${rollData.bonusMalusContext}+${compmod}`
} else {
rollData.diceFormula += `+${rollData.carac.value}+${rollData.bonusMalusContext}`
}

View File

@ -1426,6 +1426,10 @@ ul, li {
max-width: 14rem;
min-width: 14rem;
}
.item-field-label-long2-img {
max-width: 16rem;
min-width: 16rem;
}
.item-field-label-long3 {
padding-top: 6px;
flex-grow:1;

View File

@ -1,7 +1,7 @@
{
"id": "fvtt-les-heritiers",
"description": "Les Héritiers pour FoundryVTT",
"version": "10.0.16",
"version": "10.0.18",
"authors": [
{
"name": "Uberwald/LeRatierBretonnien",
@ -19,7 +19,7 @@
"gridUnits": "m",
"license": "LICENSE.txt",
"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.16.zip",
"download": "https://www.uberwald.me/gitea/public/fvtt-les-heritiers/archive/fvtt-les-heritiers-10.0.18.zip",
"languages": [
{
"lang": "fr",

View File

@ -9,13 +9,20 @@
"biodata": {
"name": "",
"activite":"",
"profilmajeur": "",
"profilmineur": "",
"nomhumain": "",
"activites": "",
"fortune": 0,
"traitscaracteres": "",
"tailledemasquee": "",
"taillemasquee": "",
"poidsmasquee": "",
"poidsdemasquee": "",
"apparencemasquee": "",
"apparencedemasquee": "",
"titrefamille": "",
"langues": "",
"factionfeerique": "",
"typetaille": "",
"age": 0,
"poids": "",
"taille": "",
@ -23,6 +30,9 @@
"sexe": "",
"yeux": "",
"description": "",
"revesetranges": "",
"secretsdecouverts": "",
"questions": "",
"habitat": "",
"notes": "",
"statut": "",
@ -233,15 +243,17 @@
"competence",
"arme",
"protection",
"equipement",
"accessoire",
"contact",
"profil"
],
"profil": {
"profiltype": "majeur",
"description": ""
},
"contact": {
"feetype": 0,
"contacttype": "",
"description": ""
},
"fee": {

View File

@ -62,10 +62,12 @@
{{!-- Sheet Tab Navigation --}}
<nav class="sheet-tabs tabs" data-group="primary">
<a class="item" data-tab="competences">Compétences</a>
<a class="item" data-tab="fee">Fée</a>
<a class="item" data-tab="combat">Combat</a>
<a class="item" data-tab="equipement">Equipement</a>
<a class="item" data-tab="fee">Fée</a>
<a class="item" data-tab="biodata">Bio&Notes</a>
<a class="item" data-tab="contact">Contacts</a>
<a class="item" data-tab="biodata">Bio</a>
<a class="item" data-tab="notes">Notes</a>
</nav>
{{!-- Sheet Body --}}
@ -92,7 +94,7 @@
<li class="item flexrow " data-item-id="{{skill._id}}" data-item-type="competence">
<span class="item-field-label-long"><a class="roll-competence item-field-label-short"
data-attr-key="tochoose">{{skill.name}}</a></span>
<select class="item-field-label-short" type="text"
<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}}
@ -101,9 +103,7 @@
<input type="checkbox" class="item-field-label-short" name="skill.system.predilection" {{checked skill.system.predilection}}/>
{{#each skill.system.specialites as |specialite key|}}
<span class="item-field-label-long2">{{specialite.name}}</span>
{{/each}}
<span class="item-field-label-long2">{{skill.specList}}</span>
<div class="item-controls item-controls-fixed">
<a class="item-control item-edit" title="Edit Item"><i class="fas fa-edit"></i></a>
@ -411,15 +411,122 @@
</div>
{{!-- Equipement Tab --}}
<div class="tab equipement" data-group="primary" data-tab="equipement">
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">Equipements</label></h3>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each equipements as |equip key|}}
<li class="item flexrow " data-item-id="{{equip._id}}" data-item-type="equipement">
<img class="item-name-img" src="{{equip.img}}" />
<span class="item-field-label-long2">{{equip.name}}</span>
<div class="item-filler">&nbsp;</div>
<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}}
</ul>
</div>
</div>
{{!-- Contact Tab --}}
<div class="tab contact" data-group="primary" data-tab="contact">
{{#each contacts as |contactList idx|}}
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header">
<h3><label class="items-title-text">{{contactList.label}}</label></h3>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each contactList.list as |contact key|}}
<li class="item flexrow " data-item-id="{{contact._id}}" data-item-type="contact">
<img class="item-name-img" src="{{contact.img}}" />
<span class="item-field-label-long2">{{contact.name}}</span>
<div class="item-filler">&nbsp;</div>
<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}}
</ul>
</div>
{{/each}}
</div>
{{!-- Biography Tab --}}
<div class="tab biodata" data-group="primary" data-tab="biodata">
<div class="sheet-box color-bg-archetype">
<ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header item-field-label-long2-img">
<h3><label class="items-title-text">Profils</label></h3>
</span>
<span class="item-field-label-medium">
<label class="short-label">Type</label>
</span>
<div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed">
</div>
</li>
{{#each profils as |profil key|}}
<li class="item flexrow " data-item-id="{{profil._id}}" data-item-type="profil">
<img class="item-name-img" src="{{profil.img}}" />
<span class="item-field-label-long2">{{profil.name}}</span>
<span class="item-field-label-medium">{{upperFirst profil.system.profiltype}}</span>
<div class="item-filler">&nbsp;</div>
<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}}
</ul>
</div>
<div class="flexrow">
<ul>
<li class="flexrow item">
<label class="item-field-label-long2">Nom humain</label> <input type="text" class="" name="system.biodata.nomhumain" value="{{system.biodata.nomhumain}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Activités</label> <input type="text" class="" name="system.biodata.activites" value="{{system.biodata.activites}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Apparence masquée</label> <input type="text" class="" name="system.biodata.apparencemasquee" value="{{system.biodata.apparencemasquee}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Apparence démasquée</label> <input type="text" class="" name="system.biodata.apparencedemasquee" value="{{system.biodata.apparencedemasquee}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Titre et Famille</label> <input type="text" class="" name="system.biodata.titrefamille" value="{{system.biodata.titrefamille}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Factions féériques</label> <input type="text" class="" name="system.biodata.factionfeerique" value="{{system.biodata.factionfeerique}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Traits de caractères dominants</label> <input type="text" class="" name="system.biodata.traitscaracteres" value="{{system.biodata.traitscaracteres}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="item-field-label-long2">Langues</label> <input type="text" class="" name="system.biodata.langues" value="{{system.biodata.langues}}" data-dtype="String" />
</li>
</ul>
</div>
@ -427,7 +534,12 @@
<div>
<ul>
<li class="flexrow item">
<label class="generic-label">Sexe</label>
<label class="generic-label">Fortune</label>
<input type="text" class="" name="system.biodata.fortune" value="{{system.biodata.fortune}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Genre</label>
<input type="text" class="" name="system.biodata.sex" value="{{system.biodata.sex}}"
data-dtype="String" />
</li>
@ -441,18 +553,18 @@
<div>
<ul>
<li class="item flexrow">
<label class="generic-label">Taille</label>
<input type="text" class="" name="system.biodata.size" value="{{system.biodata.size}}"
<label class="generic-label">Taille Masquée</label>
<input type="text" class="" name="system.biodata.taillemasquee" value="{{system.biodata.taillemasquee}}"
data-dtype="String" />
</li>
<li class="item flexrow">
<label class="generic-label">Cheveux</label>
<input type="text" class="" name="system.biodata.hair" value="{{system.biodata.hair}}"
<label class="generic-label">Taille Démasquée</label>
<input type="text" class="" name="system.biodata.tailledemasquee" value="{{system.biodata.tailledemasquee}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Expérience</label>
<input type="text" class="" name="system.experience.value" value="{{system.experience.value}}"
<label class="generic-label">Type de taille</label>
<input type="text" class="" name="system.experience.typetaille" value="{{system.experience.typetaille}}"
data-dtype="String" />
</li>
@ -462,31 +574,45 @@
<div>
<ul>
<li class="item flexrow">
<label class="generic-label">Yeux</label>
<input type="text" class="" name="system.biodata.eyes" value="{{system.biodata.eyes}}"
<label class="generic-label">Poids Masqué</label>
<input type="text" class="" name="system.biodata.poidsmasquee" value="{{system.biodata.poidsmasquee}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Main préférée</label>
<input type="text" class="" name="system.biodata.preferredhand" value="{{system.biodata.preferredhand}}"
data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label">Poids</label>
<input type="text" class="" name="system.biodata.weight" value="{{system.biodata.weight}}"
<li class="item flexrow">
<label class="generic-label">Poids Démasqué</label>
<input type="text" class="" name="system.biodata.poidsdemasquee" value="{{system.biodata.poidsdemasquee}}"
data-dtype="String" />
</li>
</ul>
</div>
</div>
</div>
<div class="tab notes" data-group="primary" data-tab="notes">
<span>
<h3>Description</h3>
<h3>Historique</h3>
</span>
<div class="medium-editor item-text-long-line">
{{editor description target="system.biodata.description" button=true owner=owner editable=editable}}
</div>
<span>
<h3>Rêves étranges</h3>
</span>
<div class="medium-editor item-text-long-line">
{{editor revesetranges target="system.biodata.revesetranges" button=true owner=owner editable=editable}}
</div>
<span>
<h3>Secrets découverts</h3>
</span>
<div class="medium-editor item-text-long-line">
{{editor secretsdecouverts target="system.biodata.secretsdecouverts" button=true owner=owner editable=editable}}
</div>
<span>
<h3>Questions en suspens</h3>
</span>
<div class="medium-editor item-text-long-line">
{{editor questions target="system.biodata.questions" button=true owner=owner editable=editable}}
</div>
</div>

View File

@ -18,10 +18,13 @@
<div>
<ul>
<li class="hawkmoon-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
<li class="heritiers-roll">Caractéristique : {{carac.label}} ({{carac.value}})</li>
{{#if competence}}
<li>Compétence : {{competence.name}} ({{competence.system.niveau}})</li>
{{#if useSpecialite}}
<li>Bonus de spécialité +1</li>
{{/if}}
{{/if}}
<li>Formule : {{diceFormula}}</li>

View File

@ -11,17 +11,21 @@
<div class="tab details" data-group="primary" data-tab="details">
<ul class="item-list alternate-list">
<li class="flexrow item">
<li class="flexrow item">
<label class="generic-label item-field-label-long">Type : </label>
<select class="item-field-label-long" type="text" name="system.contacttype" value="{{system.contacttype}}" data-dtype="String">
{{#select system.contacttype}}
<option value="contact">Contact</option>
<option value="allie">Allié</option>
<option value="ennemi">Ennemis</option>
<option value="interet">Personne d'interêt</option>
{{/select}}
</select>
<label class="generic-label item-field-label-long">Niveau : </label>
</li>
<li class="flexrow item">
<label class="generic-label item-field-label-long">Niveau : </label>
<select class="item-field-label-long" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number">
{{#select system.niveau}}
<option value="1">1</option>

View File

@ -0,0 +1,40 @@
<form class="{{cssClass}}" autocomplete="off">
{{> systems/fvtt-les-heritiers/templates/partial-item-header.html}}
{{> systems/fvtt-les-heritiers/templates/partial-item-nav.html}}
{{!-- Sheet Body --}}
<section class="sheet-body">
{{> systems/fvtt-les-heritiers/templates/partial-item-description.html}}
<div class="tab details" data-group="primary" data-tab="details">
<ul class="item-list alternate-list">
<li class="flexrow item">
<label class="generic-label item-field-label-long">Lieu : </label>
<input type="text" class="item-field-label-long" name="system.lieu"
value="{{system.lieu}}" data-dtype="String" />
</li>
<li class="flexrow item">
<label class="generic-label item-field-label-long">Prix : </label>
<input type="text" class="item-field-label-short" name="system.prix"
value="{{system.prix}}" data-dtype="Number" />
</li>
<li class="flexrow item">
<label class="generic-label item-field-label-long">Quantité : </label>
<input type="text" class="item-field-label-short" name="system.quantite"
value="{{system.quantite}}" data-dtype="Number" />
</li>
<li class="flexrow item">
<label class="generic-label item-field-label-long">Equipé ? : </label>
<input type="checkbox" class="padd-right status-small-label color-class-common item-field-label-short"
name="system.equipped" {{checked system.equipped}}/>
</li>
</div>
</section>
</form>

View File

@ -12,8 +12,15 @@
<div class="tab details" data-group="primary" data-tab="details">
<ul class="item-list alternate-list">
<li class="flexrow item">
<label class="generic-label item-field-label-long">Type : </label>
<select class="item-field-label-long" type="text" name="system.profiltype" value="{{system.profiltype}}" data-dtype="String">
{{#select system.profiltype}}
<option value="mineur">Mineur</option>
<option value="majeur">Majeur</option>
{{/select}}
</select>
</li>
</ul>
</div>

View File

@ -31,6 +31,15 @@
<span class="roll-dialog-label">{{competence.name}}</span>
<span class="small-label roll-dialog-label">{{competence.system.niveau}}</span>
</div>
{{#if competence.nbSpec}}
<div class="flexrow">
<span class="roll-dialog-label">Spécialités : {{competence.specList}}</span>
</div>
<div class="flexrow">
<span class="roll-dialog-label">Bonus de spécialité ?</span>
<input type="checkbox" class="item-field-label-short" id="useSpecialite" {{checked useSpecialite}}/>
</div>
{{/if}}
{{/if}}
<div class="flexrow">