Gestion des jets opposés

This commit is contained in:
LeRatierBretonnien 2024-06-06 17:16:40 +02:00
parent 1224500881
commit 82e7a170c2
24 changed files with 181 additions and 267 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -1,175 +1,17 @@
{ {
"TYPES": { "TYPES": {
"Actor":{ "Actor":{
"pc": "Personnage Joueur", "pj": "Personnage Joueur",
"npc": "Personnage Non Joueur", "pnj": "Personnage Non Joueur"
"annency": "Anence"
}, },
"Item": { "Item": {
"trait": "Trait", "competence": "Competence",
"weapon": "Arme", "arme": "Arme",
"equipment": "Equipement", "equipement": "Equipement",
"maneuver": "Manoeuvre", "armure": "Armure",
"specialization": "Spécialisation" "grace": "Grace",
} "origine": "Origine",
}, "education": "Education"
"ECRY": {
"settings": {
"cogs": "Engrenages",
"cephaly": "Céphalie",
"boheme": "Bohême",
"amertume": "Amertume",
"gamelevel": "Niveau de jeu"
},
"chat": {
"formula": "Formule",
"difficulty": "Difficulté",
"dicesum": "Dés",
"result": "Resultat",
"margin": "Marge",
"success": "Succés!",
"failure": "Echec!",
"specialization": "Spécialisation",
"traitbonus": "Trait bonus",
"traitmalus": "Trait malus",
"bonusmalustraits": "Bonus/Malus des Traits",
"spectranscend": "Dépassement de soi : ",
"confrontselected": "Confrontation selectionnée",
"sentogm": "La confrontation a été envoyée au MJ"
},
"rule": {
"cephaly-success-12": "Durée : 1 scène - Impact : Superficiel - Bonus : 1 - Elegie : 1",
"cephaly-success-4": "Durée : 1 semaine - Impact : Léger - Bonus : 2 - Elegie : 2",
"cephaly-success-6": "Durée : 1 mois - Impact : Grave - Bonus : 3 - Elegie : 3",
"cephaly-success-8": "Durée : 1 année - Impact : Majeur - Bonus : 4 - Elegie : 4",
"cephaly-success-10": "Durée : Permanent - Impact : Mort - Bonus : 5 - Elegie : 5",
"cephaly-failure-2": "Durée : 1 scène - Impact : Superficiel - Malus : 1 - Symptôme non visible et sans gravité - Altération bégigne difficilement repérable",
"cephaly-failure-4": "Durée : 1 semaine - Impact : Léger - Malus : 2 - Symptôme visible non incapacitant - Altération repérable",
"cephaly-failure-6": "Durée : 1 mois - Impact : Grave - Malus : 3 - Symptôme incapacitant - Altération repérable et fâcheuse",
"cephaly-failure-8": "Durée : 1 année - Impact : Majeur - Malus : 4 - Symptôme très incapacitant - Altération dangereuse",
"cephaly-failure-10": "Durée : Permanent - Impact : Mort/Folie - Malus : 5 - Symptôme spectaculaire et repoussant - Altération dangereuse globalement"
},
"warn": {
"notenoughdice": "L'Accomplissement et la Préservation doivent avoir 2 dés chacun"
},
"ui": {
"equipmentfree": "Equipements (saisie libre)",
"traitType": "Type de trait",
"niveauTrait": "Niveau du trait",
"effect": "Incidence",
"weight": "Poids",
"cost": "Prix",
"costUnit": "Unité",
"ingot": "Lingot",
"ingotin": "Lingotin",
"goldcoin": "Pièce d'or",
"lige": "Lige",
"hurle": "Hurle",
"coin": "Sous",
"notes": "Notes",
"bio": "Bio",
"bionotes": "Bio&Notes",
"skills": "Compétences",
"traits": "Traits",
"equipment": "Equipement",
"physical": "Physiques",
"mental": "Mentales",
"social": "Sociales",
"athletics": "Athlétisme",
"driving": "Conduite",
"fencing": "Escrime",
"brawling": "Pugilat",
"shooting": "Tir",
"anthropomecanology": "Anthropo-Mécanologie",
"ecrymology": "Écrymologie",
"traumatology": "Traumatologie",
"traversology": "Traversologie",
"urbatechnology": "Urbatechnologie",
"quibbling": "Argutie",
"creativity": "Créativité",
"loquacity": "Faconde",
"guile": "Maraude",
"performance" :"Représentation",
"skill": "Compétence",
"troublesome": "Malaisé",
"occasional": "Peu frequent",
"difficult": "Difficile",
"uncommon": "Atypique",
"verydifficult": "Très difficile",
"rare": "Rare",
"extremdifficult": "Extrêmement difficile",
"veryrare": "Très rare",
"increddifficult": "Incroyable",
"exceptrare": "Exceptionnel",
"none": "Aucun",
"roll": "Lancer les dés !",
"cancel": "Annuler",
"rolltitle": "Ou l'on teste ses compétences",
"spec": "Spécialisation",
"traitbonus": "Traits bonus",
"traitmalus": "Traits malus",
"applyideal": "Utiliser l'idéal",
"applyspleen": "Utiliser le spleen",
"skilltranscendence": "Dépassement de soi",
"confrontation": "Confrontation",
"rollnormal": "Normal (4d6)",
"rollspleen": "Avec le Spleen (5d6, 4 plus bas conservés)",
"rollideal": "Avec l'Idéal (5d6, 4 plus haut conservés)",
"superficial": "Superficiel",
"light": "Léger",
"serious": "Grave",
"major": "Majeur",
"impactType": "Type d'Impact",
"impactLevel": "Niveau d'impact",
"impactphysical": "Physique",
"impactmental": "Mental",
"impactsocial": "Social",
"impactmalus": "Malus d'Impact",
"ongoingconfront": "Confrontations en cours",
"confront":"Confrontation",
"launchconfront": "Lancer la confrontation",
"execution": "Accomplissement",
"preservation": "Préservation",
"dicepool": "Dés disponibles",
"selectconfront": "Sélectionner pour la Confrontation",
"transcendapply": "Appliquer la Transcendence à ",
"healthcombat": "Santé&Combat",
"name": "Nom",
"weapons": "Armes",
"weapon": "Arme",
"melee": "Mêlée",
"ranged": "A Distance",
"weapontype": "Type d'arme",
"type": "Type",
"applyimpact": "Appliquer l'impact",
"applybonus": "Appliquer le bonus",
"bonuspool": "Bonus disponibles",
"cephaly": "Cephalie",
"elegy": "Elégie",
"entelechy": "Entéléchie",
"mekany": "Mekanë",
"psyche": "Psyché",
"scoria": "Scorie",
"cephalydifficulty": "Difficulté de la Céphalie",
"maneuvers": "Manoeuvres",
"annency": "Anence",
"iscollective": "Collective",
"ismultiple": "Multiple",
"description": "Description",
"location": "Lieu",
"characters": "Personnages",
"enhancements": "Améliorations",
"oniricform": "Forme Onorique (Bohême)",
"ideals": "Idéaux",
"politic": "Idéaux politiques",
"boheme": "Bohême",
"annencybonus": "Bonus d'Anence",
"bornplace": "Lieu de naissance",
"residence": "Résidence",
"origin": "Origine",
"childhood": "Enfance",
"bonus": "Bonus"
} }
} }
} }

View File

@ -42,6 +42,7 @@ export class TeDeumActorPJSheet extends ActorSheet {
providence: this.actor.prepareProvidence(), providence: this.actor.prepareProvidence(),
arbreCompetences: this.actor.prepareArbreCompetences(), arbreCompetences: this.actor.prepareArbreCompetences(),
equipements: this.actor.getEquipements(), equipements: this.actor.getEquipements(),
armures: this.actor.getArmures(),
graces: this.actor.getGraces(), graces: this.actor.getGraces(),
description: await TextEditor.enrichHTML(this.object.system.description, { async: true }), description: await TextEditor.enrichHTML(this.object.system.description, { async: true }),
notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }), notes: await TextEditor.enrichHTML(this.object.system.notes, { async: true }),

View File

@ -34,6 +34,16 @@ export class TeDeumActor extends Actor {
return actor; return actor;
} }
if (data.type == 'pj') {
const skills = await TeDeumUtility.loadCompendium("fvtt-te-deum.competences")
data.items = data.items || []
for (let skill of skills) {
if (skill.system.isBase || skill.system.score == 1) {
data.items.push(skill.toObject())
}
}
}
return super.create(data, options); return super.create(data, options);
} }

View File

@ -123,7 +123,7 @@ export const TEDEUM_CONFIG = {
facile: { label: "Facile", value: 5 }, facile: { label: "Facile", value: 5 },
pardefaut: { label: "Par Défaut", value: 7 }, pardefaut: { label: "Par Défaut", value: 7 },
malaise: { label: "Malaisé", value: 9 }, malaise: { label: "Malaisé", value: 9 },
difficile: { label: "difficile", value: 11 }, difficile: { label: "Difficile", value: 11 },
perilleux: { label: "Perilleux", value: 13 }, perilleux: { label: "Perilleux", value: 13 },
desespere: { label: "Désespéré", value: 15 } desespere: { label: "Désespéré", value: 15 }
}, },

View File

@ -133,36 +133,44 @@ export class TeDeumUtility {
return actor return actor
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async manageOpposition(rollData) {
if (!this.currentOpposition) {
// Store rollData as current GM opposition
this.currentOpposition = rollData
ui.notifications.info("Opposition démarrée avec " + rollData.alias );
} else {
// Perform the opposition
let rWinner = this.currentOpposition
let rLooser = rollData
if (rWinner.total < rLooser.total) {
rWinner = rollData
rLooser = this.currentOpposition
}
this.currentOpposition = undefined // Reset opposition
let oppositionData = {
winner: rWinner,
looser: rLooser
}
let msg = await this.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-te-deum/templates/chat/chat-opposition-result.hbs`, oppositionData)
})
await msg.setFlag("world", "te-deum-rolldata", rollData)
console.log("Rolldata result", rollData)
}
}
/* -------------------------------------------- */ /* -------------------------------------------- */ /* -------------------------------------------- */ /* -------------------------------------------- */
static async chatListeners(html) { static async chatListeners(html) {
html.on("click", '.button-select-confront', event => { html.on("click", '.chat-command-button', event => {
let messageId = TeDeumUtility.findChatMessageId(event.currentTarget) let messageId = TeDeumUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId) let message = game.messages.get(messageId)
let rollData = message.getFlag("world", "te-deum-rolldata") let rollData = message.getFlag("world", "te-deum-rolldata")
ui.notifications.info( game.i18n.localize("ECRY.chat.confrontselect")) if (rollData) {
TeDeumUtility.manageConfrontation(rollData) TeDeumUtility.manageOpposition(rollData, messageId)
}
}) })
html.on("click", '.button-apply-cephaly-difficulty', event => {
let messageId = TeDeumUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId)
let rollData = message.getFlag("world", "te-deum-rolldata")
let difficulty = $("#" + rollData.rollId + "-cephaly-difficulty").val()
TeDeumUtility.manageCephalyDifficulty(rollData, difficulty)
})
html.on("click", '.button-apply-impact', event => {
let messageId = TeDeumUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId)
let actor = game.actors.get($(event.currentTarget).data("actor-id"))
actor.modifyImpact($(event.currentTarget).data("impact-type"), $(event.currentTarget).data("impact"), 1)
})
html.on("click", '.button-apply-bonus', event => {
let messageId = TeDeumUtility.findChatMessageId(event.currentTarget)
let message = game.messages.get(messageId)
let actor = game.actors.get($(event.currentTarget).data("actor-id"))
actor.modifyConfrontBonus($(event.currentTarget).data("bonus"))
})
} }
/* -------------------------------------------- */ /* -------------------------------------------- */

View File

@ -46,6 +46,8 @@ export class TeDeumPJSchema extends foundry.abstract.TypeDataModel {
schema.statutocial = new fields.StringField({ required: false, blank: true, initial: undefined }); schema.statutocial = new fields.StringField({ required: false, blank: true, initial: undefined });
schema.chargestitre = new fields.StringField({ required: false, blank: true, initial: undefined }); schema.chargestitre = new fields.StringField({ required: false, blank: true, initial: undefined });
schema.charges = new fields.StringField({ required: false, blank: true, initial: undefined }); schema.charges = new fields.StringField({ required: false, blank: true, initial: undefined });
schema.religion = new fields.StringField({ required: false, blank: true, initial: undefined });
schema.lieunaissance = new fields.StringField({ required: false, blank: true, initial: undefined });
return schema; return schema;
} }

View File

@ -1 +1 @@
MANIFEST-000097 MANIFEST-000105

View File

@ -1,8 +1,3 @@
2024/06/04-21:04:01.195163 7f1e64e006c0 Recovering log #94 2024/06/06-16:27:16.818495 7fcfb2a006c0 Recovering log #103
2024/06/04-21:04:01.205547 7f1e64e006c0 Delete type=3 #92 2024/06/06-16:27:16.829929 7fcfb2a006c0 Delete type=3 #101
2024/06/04-21:04:01.205638 7f1e64e006c0 Delete type=0 #94 2024/06/06-16:27:16.830004 7fcfb2a006c0 Delete type=0 #103
2024/06/04-21:04:48.464146 7f1e5da006c0 Level-0 table #100: started
2024/06/04-21:04:48.464176 7f1e5da006c0 Level-0 table #100: 0 bytes OK
2024/06/04-21:04:48.500422 7f1e5da006c0 Delete type=0 #98
2024/06/04-21:04:48.500602 7f1e5da006c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!zwC0H39ar5Pl1l92' @ 0 : 0; will stop at (end)
2024/06/04-21:04:48.500619 7f1e5da006c0 Manual compaction at level-1 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!zwC0H39ar5Pl1l92' @ 0 : 0; will stop at (end)

View File

@ -1,15 +1,8 @@
2024/06/02-20:22:04.658032 7f2f302006c0 Recovering log #90 2024/06/05-23:00:55.185946 7f1e64e006c0 Recovering log #99
2024/06/02-20:22:04.712047 7f2f302006c0 Delete type=3 #88 2024/06/05-23:00:55.196553 7f1e64e006c0 Delete type=3 #97
2024/06/02-20:22:04.712099 7f2f302006c0 Delete type=0 #90 2024/06/05-23:00:55.196655 7f1e64e006c0 Delete type=0 #99
2024/06/02-20:58:31.396230 7f2f2ee006c0 Level-0 table #95: started 2024/06/05-23:35:36.332443 7f1e5da006c0 Level-0 table #104: started
2024/06/02-20:58:31.399756 7f2f2ee006c0 Level-0 table #95: 28482 bytes OK 2024/06/05-23:35:36.332474 7f1e5da006c0 Level-0 table #104: 0 bytes OK
2024/06/02-20:58:31.406774 7f2f2ee006c0 Delete type=0 #93 2024/06/05-23:35:36.338443 7f1e5da006c0 Delete type=0 #102
2024/06/02-20:58:31.406940 7f2f2ee006c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!zwC0H39ar5Pl1l92' @ 0 : 0; will stop at (end) 2024/06/05-23:35:36.338563 7f1e5da006c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!zwC0H39ar5Pl1l92' @ 0 : 0; will stop at (end)
2024/06/02-20:58:31.406967 7f2f2ee006c0 Manual compaction at level-1 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!zwC0H39ar5Pl1l92' @ 0 : 0; will stop at '!items!zwC0H39ar5Pl1l92' @ 390 : 1 2024/06/05-23:35:36.338586 7f1e5da006c0 Manual compaction at level-1 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!zwC0H39ar5Pl1l92' @ 0 : 0; will stop at (end)
2024/06/02-20:58:31.406972 7f2f2ee006c0 Compacting 1@1 + 1@2 files
2024/06/02-20:58:31.410472 7f2f2ee006c0 Generated table #96@1: 113 keys, 15164 bytes
2024/06/02-20:58:31.410495 7f2f2ee006c0 Compacted 1@1 + 1@2 files => 15164 bytes
2024/06/02-20:58:31.416350 7f2f2ee006c0 compacted to: files[ 0 0 1 0 0 0 0 ]
2024/06/02-20:58:31.416439 7f2f2ee006c0 Delete type=2 #5
2024/06/02-20:58:31.416583 7f2f2ee006c0 Delete type=2 #95
2024/06/02-20:58:31.416682 7f2f2ee006c0 Manual compaction at level-1 from '!items!zwC0H39ar5Pl1l92' @ 390 : 1 .. '!items!zwC0H39ar5Pl1l92' @ 0 : 0; will stop at (end)

View File

@ -1 +1 @@
MANIFEST-000158 MANIFEST-000166

View File

@ -1,7 +1,3 @@
2024/06/04-21:04:01.182320 7f1e5f4006c0 Recovering log #156 2024/06/06-16:27:16.805501 7fcfb8e006c0 Recovering log #164
2024/06/04-21:04:01.193373 7f1e5f4006c0 Delete type=3 #154 2024/06/06-16:27:16.816044 7fcfb8e006c0 Delete type=3 #162
2024/06/04-21:04:01.193473 7f1e5f4006c0 Delete type=0 #156 2024/06/06-16:27:16.816128 7fcfb8e006c0 Delete type=0 #164
2024/06/04-21:04:48.422044 7f1e5da006c0 Level-0 table #161: started
2024/06/04-21:04:48.422074 7f1e5da006c0 Level-0 table #161: 0 bytes OK
2024/06/04-21:04:48.463998 7f1e5da006c0 Delete type=0 #159
2024/06/04-21:04:48.500588 7f1e5da006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)

View File

@ -1,7 +1,7 @@
2024/06/02-20:22:04.602737 7f2f2f8006c0 Recovering log #152 2024/06/05-23:00:55.173863 7f1e5ea006c0 Recovering log #160
2024/06/02-20:22:04.655957 7f2f2f8006c0 Delete type=3 #150 2024/06/05-23:00:55.183501 7f1e5ea006c0 Delete type=3 #158
2024/06/02-20:22:04.656073 7f2f2f8006c0 Delete type=0 #152 2024/06/05-23:00:55.183581 7f1e5ea006c0 Delete type=0 #160
2024/06/02-20:58:31.369733 7f2f2ee006c0 Level-0 table #157: started 2024/06/05-23:35:36.305356 7f1e5da006c0 Level-0 table #165: started
2024/06/02-20:58:31.369760 7f2f2ee006c0 Level-0 table #157: 0 bytes OK 2024/06/05-23:35:36.305385 7f1e5da006c0 Level-0 table #165: 0 bytes OK
2024/06/02-20:58:31.376040 7f2f2ee006c0 Delete type=0 #155 2024/06/05-23:35:36.311763 7f1e5da006c0 Delete type=0 #163
2024/06/02-20:58:31.376155 7f2f2ee006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) 2024/06/05-23:35:36.321710 7f1e5da006c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end)

Binary file not shown.

Binary file not shown.

View File

@ -757,6 +757,12 @@ ul, li {
font-size: 1.2rem; font-size: 1.2rem;
padding: 4px; padding: 4px;
} }
.chat-actor-name-opposition {
font-weight: bold;
font-family: MailartRubberstamp;
font-size: 0.9rem;
padding: 4px;
}
.chat-result-success { .chat-result-success {
color: darkgreen; color: darkgreen;
} }
@ -767,6 +773,15 @@ ul, li {
width: 64px; width: 64px;
height: 64px; height: 64px;
} }
.chat-command-img {
border: 0px;
width: 32px;
height: 32px;
}
.chat-result-column {
min-width: 70%;
width: 70%;
}
.roll-dialog-header { .roll-dialog-header {
height: 52px; height: 52px;
} }

View File

@ -701,6 +701,12 @@ ul, li {
font-size: 1.2rem; font-size: 1.2rem;
padding: 4px; padding: 4px;
} }
.chat-actor-name-opposition {
font-weight: bold;
font-family: MailartRubberstamp;
font-size: 0.9rem;
padding: 4px;
}
.chat-result-success { .chat-result-success {
color: darkgreen; color: darkgreen;
} }
@ -711,6 +717,15 @@ ul, li {
width: 64px; width: 64px;
height: 64px; height: 64px;
} }
.chat-command-img {
border: 0px;
width: 32px;
height: 32px;
}
.chat-result-column {
min-width: 70%;
width: 70%;
}
.roll-dialog-header { .roll-dialog-header {
height: 52px; height: 52px;
} }

View File

@ -49,7 +49,7 @@
"manifest": "https://www.uberwald.me/gitea/public/fvtt-te-deum/raw/branch/master/system.json", "manifest": "https://www.uberwald.me/gitea/public/fvtt-te-deum/raw/branch/master/system.json",
"compatibility": { "compatibility": {
"minimum": "11", "minimum": "11",
"verified": "11" "verified": "12"
}, },
"id": "fvtt-te-deum", "id": "fvtt-te-deum",
"primaryTokenAttribute": "secondary.health", "primaryTokenAttribute": "secondary.health",
@ -62,7 +62,22 @@
}, },
"title": "Te Deum pour Un Massacre, le Jeu de Rôles", "title": "Te Deum pour Un Massacre, le Jeu de Rôles",
"url": "https://www.uberwald.me/gitea/public/fvtt-te-deum", "url": "https://www.uberwald.me/gitea/public/fvtt-te-deum",
"version": "11.0.1", "version": "12.0.0",
"download": "https://www.uberwald.me/gitea/public/fvtt-te-deum/archive/fvtt-te-deum-v11.0.0.zip", "download": "https://www.uberwald.me/gitea/public/fvtt-te-deum/archive/fvtt-te-deum-v12.0.0.zip",
"background": "" "background": "",
"flags": {
"hotReload": {
"extensions": [
"css",
"hbs",
"json"
],
"paths": [
"styles/",
"lang/",
"assets/",
"templates/"
]
}
}
} }

View File

@ -108,7 +108,7 @@
<label class="item-field item-field-label-short">{{carac.value}}</label> <label class="item-field item-field-label-short">{{carac.value}}</label>
<label class="item-field item-field-label-medium">{{carac.dice}} (xp : {{carac.experience}})</label> <label class="item-field item-field-label-medium">{{carac.dice}} (xp : {{carac.experience}})</label>
</li> </li>
<ul class="ul-level1 flexrow item-list alternate-list"> <ul class="ul-level1 flexrow item-list">
{{#each carac.competences as |comp skillkey|}} {{#each carac.competences as |comp skillkey|}}
<li class="flexrow carac-box comp-box item-id" data-item-id="{{comp.id}}"> <li class="flexrow carac-box comp-box item-id" data-item-id="{{comp.id}}">
<label class="item-left-pad item-field item-field-label-long"> <label class="item-left-pad item-field item-field-label-long">
@ -171,20 +171,21 @@
<ul class="item-list alternate-list"> <ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg"> <li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header-long2"> <span class="item-name-label-header-long2">
<h3><label class="item-name-label-header-long2">{{localize "ECRY.ui.maneuvers"}}</label></h3> <h3><label class="item-name-label-header-long2">Armures</label></h3>
</span> </span>
</li> </li>
{{#each maneuvers as |maneuver key|}} {{#each armures as |armure key|}}
<li class="item flexrow list-item list-item-shadow" data-item-id="{{maneuver._id}}"> <li class="item flexrow list-item list-item-shadow item-id" data-item-id="{{armure._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img" <a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{maneuver.img}}" /></a> src="{{armure.img}}" /></a>
<span class="item-name-label-long2"> <span class="item-name-label-long2">
{{maneuver.name}} {{armure.name}}
</span> </span>
<div class="item-filler">&nbsp;</div> <div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed"> <div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete maneuver"><i class="fas fa-trash"></i></a> <a class="item-control item-edit" title="Editer l'armure"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Supprimer l'armure"><i class="fas fa-trash"></i></a>
</div> </div>
</li> </li>
{{/each}} {{/each}}
@ -197,7 +198,7 @@
<div class="tab equipements" data-group="primary" data-tab="equipements"> <div class="tab equipements" data-group="primary" data-tab="equipements">
<span class="item-name-label-header items-title-bg"> <span class="item-name-label-header items-title-bg">
<h3><label class="items-title-text">{{localize "ECRY.ui.equipmentfree"}}</label></h3> <h3><label class="items-title-text">Zone libre</label></h3>
</span> </span>
<div class="form-group small-editor"> <div class="form-group small-editor">
{{editor equipementlibre target="system.equipmentfree" button=true owner=owner editable=editable}} {{editor equipementlibre target="system.equipmentfree" button=true owner=owner editable=editable}}
@ -205,28 +206,29 @@
<ul class="item-list alternate-list"> <ul class="item-list alternate-list">
<li class="item flexrow list-item items-title-bg"> <li class="item flexrow list-item items-title-bg">
<span class="item-name-label-header"> <span class="item-field-label-long">
<h3><label class="items-title-text">{{localize "ECRY.ui.equipment"}}s</label></h3> <h3><label class="item-field-label-long">Equipements</label></h3>
</span> </span>
<span class="item-field-label-medium"> <span class="item-field-label-medium">
<label class="item-field-label-medium">{{localize "ECRY.ui.weight"}}</label> <label class="item-field-label-medium">Prix</label>
</span> </span>
<div class="item-filler">&nbsp;</div> <div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed"> <div class="item-controls item-controls-fixed">
<a class="item-control item-add" data-type="equipment" title="Create Item"><i class="fas fa-plus"></i></a> <a class="item-control item-add" data-type="equipment" title="Créer un équipement"><i class="fas fa-plus"></i></a>
</div> </div>
</li> </li>
{{#each equipments as |equip key|}} {{#each equipements as |equip key|}}
<li class="item list-item flexrow list-item-shadow" data-item-id="{{equip._id}}"> <li class="item list-item flexrow list-item-shadow item-id" data-item-id="{{equip._id}}">
<a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img" <a class="item-edit item-name-img" title="Edit Item"><img class="sheet-competence-img"
src="{{equip.img}}" /></a> src="{{equip.img}}" /></a>
<span class="item-name-label">{{equip.name}}</span> <span class="item-name-label">{{equip.name}}</span>
<span class="item-field-label-medium">{{equip.system.weight}}</span> <span class="item-field-label-medium">{{equip.system.prix}} {{equip.system.monnaie}}</span>
<div class="item-filler">&nbsp;</div> <div class="item-filler">&nbsp;</div>
<div class="item-controls item-controls-fixed"> <div class="item-controls item-controls-fixed">
<a class="item-control item-delete" title="Delete Item"><i class="fas fa-trash"></i></a> <a class="item-control item-edit" title="Editer un équipement"><i class="fas fa-edit"></i></a>
<a class="item-control item-delete" title="Supprimer un équipement"><i class="fas fa-trash"></i></a>
</div> </div>
</li> </li>
{{/each}} {{/each}}
@ -243,8 +245,8 @@
<div> <div>
<ul class="item-list alternate-list"> <ul class="item-list alternate-list">
<li class="item flexrow"> <li class="item flexrow">
<label class="item-name-label-medium">{{localize "ECRY.ui.bornplace"}}</label> <label class="item-name-label-medium">Lieu de naissance</label>
<input type="text" class="" name="system.biodata.lieunaissance" value="{{system.biodata.lieunaissance}}" <input type="text" class="" name="system.lieunaissance" value="{{system.biodata.lieunaissance}}"
data-dtype="String" /> data-dtype="String" />
</li> </li>
<li class="item flexrow"> <li class="item flexrow">
@ -252,27 +254,22 @@
<input type="text" class="" name="system.biodata.age" value="{{system.biodata.age}}" <input type="text" class="" name="system.biodata.age" value="{{system.biodata.age}}"
data-dtype="String" /> data-dtype="String" />
</li> </li>
<li class="item flexrow">
<label class="item-name-label-medium">Profession</label>
<input type="text" class="" name="system.biodata.profession" value="{{system.biodata.profession}}"
data-dtype="String" />
</li>
</ul> </ul>
</div> </div>
<div> <div>
<ul> <ul>
<li class="item flexrow"> <li class="item flexrow">
<label class="item-name-label-medium">{{localize "ECRY.ui.residence"}}</label> <label class="item-name-label-medium">Statut social</label>
<input type="text" class="" name="system.biodata.residence" value="{{system.biodata.residence}}" <input type="text" class="" name="system.statutocial" value="{{system.biodata.residence}}"
data-dtype="String" /> data-dtype="String" />
</li> </li>
<li class="item flexrow"> <li class="item flexrow">
<label class="item-name-label-medium">{{localize "ECRY.ui.origin"}}</label> <label class="item-name-label-medium">Charges et Titres</label>
<input type="text" class="" name="system.biodata.nationalite" value="{{system.biodata.nationalite}}" <input type="text" class="" name="system.chargestitre" value="{{system.biodata.nationalite}}"
data-dtype="String" /> data-dtype="String" />
</li> </li>
<li class="item flexrow"> <li class="item flexrow">
<label class="item-name-label-medium">{{localize "ECRY.ui.childhood"}}</label> <label class="item-name-label-medium">Religion</label>
<input type="text" class="" name="system.biodata.enfance" value="{{system.biodata.enfance}}" <input type="text" class="" name="system.biodata.enfance" value="{{system.biodata.enfance}}"
data-dtype="String" /> data-dtype="String" />
</li> </li>

View File

@ -33,19 +33,29 @@
<li>Dés: {{diceFormula}} </li> <li>Dés: {{diceFormula}} </li>
<li>Difficulté: {{difficulty}} </li> <li>Difficulté: {{difficulty}} </li>
<li><strong>Résultat: {{total}}</strong> </li>
{{#if isSuccess}}
<li><strong>Succès !</strong> </li>
{{#if isReussiteCritique}}
<li><strong>Réussite critique ! 1 XP gagné en {{carac.name}}.</strong> </li>
{{/if}}
{{else}}
<li><strong>Echec !</strong> </li>
{{#if isEchecCritique}}
<li><strong>Echec critique ! 1 XP gagné en {{carac.name}}.</strong> </li>
{{/if}}
{{/if}}
</ul> </ul>
</div> </div>
<div class="flexrow">
<ul class="chat-result-column">
<li><strong>Résultat: {{total}}</strong> </li>
{{#if isSuccess}}
<li><strong class="chat-result-success">Succès !</strong> </li>
{{#if isReussiteCritique}}
<li><strong class="chat-result-success">Réussite critique ! 1 XP gagné en {{carac.name}}.</strong> </li>
{{/if}}
{{else}}
<li><strong class="chat-result-failure">Echec !</strong> </li>
{{#if isEchecCritique}}
<li><strong class="chat-result-failure">Echec critique ! 1 XP gagné en {{carac.name}}.</strong> </li>
{{/if}}
{{/if}}
</ul>
<div>
<a class="chat-command-button" data-chat-command="opposition">
<img class="chat-command-img" data-tooltip="Test en opposition" src="systems/fvtt-te-deum/images/icons/opposition.webp">
</a>
</div>
</div>
</div> </div>

View File

@ -0,0 +1,15 @@
<div class="chat-message-header">
<img class="actor-icon" src="{{winner.actorImg}}" alt="{{winner.alias}}" />
<img class="chat-command-img" data-tooltip="Test en opposition" src="systems/fvtt-te-deum/images/icons/opposition.webp">
<img class="actor-icon" src="{{looser.actorImg}}" alt="{{looser.alias}}" />
<label class="chat-actor-name-opposition">{{winner.alias}} vs {{looser.alias}}</label>
</div>
<hr>
<div >
<label class="chat-result-success">{{winner.alias}} ({{winner.competence.name}}, {{winner.total}}) l'emporte sur {{looser.alias}} ({{looser.competence.name}}, {{looser.total}})</label>
</div>