#42 Amélioration messages de tchat
* Appel à la chance * compétences * jets généraux (remplace table résolution, carac et cas particuliers) * Attaque: en cours
This commit is contained in:
parent
4ed47a1dd3
commit
ee86c0e5ae
@ -1636,24 +1636,14 @@ export class RdDActor extends Actor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_tacheResult(rollData) {
|
async _tacheResult(rollData) {
|
||||||
// Mise à jour de la tache
|
// Mise à jour de la tache
|
||||||
rollData.tache.data.points_de_tache_courant += rollData.rolled.ptTache;
|
rollData.tache.data.points_de_tache_courant += rollData.rolled.ptTache;
|
||||||
this.updateEmbeddedEntity( "OwnedItem", rollData.tache);
|
this.updateEmbeddedEntity( "OwnedItem", rollData.tache);
|
||||||
this.santeIncDec( "fatigue", rollData.tache.data.fatigue);
|
this.santeIncDec( "fatigue", rollData.tache.data.fatigue);
|
||||||
|
|
||||||
// Message de résultat
|
|
||||||
ChatUtility.chatWithRollMode({
|
ChatUtility.chatWithRollMode({
|
||||||
content: "<strong>Test de Tache : " + rollData.tache.name + " - " + rollData.selectedCarac.label + " / " + rollData.competence.name + "</strong>"
|
content: await RdDResolutionTable.explainRollDataV2(rollData, 'chat-resultat-tache.html')
|
||||||
+ RdDResolutionTable.explainRollData(rollData)
|
|
||||||
+ "<br>Points de taches : " + rollData.rolled.ptTache + ", ajustement qualité: " + rollData.rolled.ptQualite
|
|
||||||
}, this.name);
|
|
||||||
// Message spécifique de la tâche
|
|
||||||
ChatUtility.chatWithRollMode({
|
|
||||||
content: "Votre tâche <strong>" + rollData.tache.name + "</strong> a duré " + rollData.tache.data.periodicite + "."
|
|
||||||
+ "<br>Votre avancement est désormais de " + rollData.tache.data.points_de_tache_courant + " Points de Tache sur un objectif de "
|
|
||||||
+ rollData.tache.data.points_de_tache + "."
|
|
||||||
+ "<br>Et vous vous êtes fatigué de " + rollData.tache.data.fatigue + " cases."
|
|
||||||
}, this.name);
|
}, this.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1661,17 +1651,13 @@ export class RdDActor extends Actor {
|
|||||||
_tacheETotal(rollData) {
|
_tacheETotal(rollData) {
|
||||||
rollData.tache.data.difficulte--;
|
rollData.tache.data.difficulte--;
|
||||||
this.updateEmbeddedEntity( "OwnedItem", rollData.tache);
|
this.updateEmbeddedEntity( "OwnedItem", rollData.tache);
|
||||||
ChatUtility.chatWithRollMode( {
|
|
||||||
content: "Vous avez fait un Echec Total sur votre Tache <strong>" + rollData.tache.name + "</strong> : en conséquence, la difficulté a augmenté de 1"
|
|
||||||
}, this.name);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_competenceResult(rollData) {
|
async _competenceResult(rollData) {
|
||||||
|
rollData.show = {points:true};
|
||||||
ChatUtility.chatWithRollMode({
|
ChatUtility.chatWithRollMode({
|
||||||
content: "<strong>Test : " + rollData.selectedCarac.label + " / " + rollData.competence.name + "</strong>"
|
content: await RdDResolutionTable.explainRollDataV2(rollData, 'chat-resultat-competence.html')
|
||||||
+ RdDResolutionTable.explainRollData(rollData)
|
|
||||||
+ "<br>Points de taches : " + rollData.rolled.ptTache + ", ajustement qualité: " + rollData.rolled.ptQualite
|
|
||||||
}, this.name);
|
}, this.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1706,6 +1692,10 @@ export class RdDActor extends Actor {
|
|||||||
await this.chanceActuelleIncDec(-1)
|
await this.chanceActuelleIncDec(-1)
|
||||||
}
|
}
|
||||||
ChatMessage.create(message);
|
ChatMessage.create(message);
|
||||||
|
|
||||||
|
ChatUtility.chatWithRollMode({
|
||||||
|
content: await RdDResolutionTable.explainRollDataV2(rollData, 'chat-resultat-appelchance.html')
|
||||||
|
}, this.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -13,7 +13,7 @@ const conditionsTactiques = [
|
|||||||
export class RdDBonus {
|
export class RdDBonus {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _find(condition) {
|
static find(condition) {
|
||||||
return conditionsTactiques.find(e => e.type == condition) || conditionsTactiques.find(e => e.type == 'pret');
|
return conditionsTactiques.find(e => e.type == condition) || conditionsTactiques.find(e => e.type == 'pret');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ export class RdDBonus {
|
|||||||
ui.notifications.warn("Calcul de bonus dégats sur eswquive");
|
ui.notifications.warn("Calcul de bonus dégats sur eswquive");
|
||||||
} else {
|
} else {
|
||||||
dmg.dmgArme = RdDBonus._dmgArme(rollData);
|
dmg.dmgArme = RdDBonus._dmgArme(rollData);
|
||||||
dmg.ignoreArmure = 0; // TODO: calculer pour arcs et arbaletes, gérer pour lmes créatures
|
dmg.penetration = RdDBonus._peneration(rollData);
|
||||||
dmg.dmgTactique = RdDBonus.dmgBonus(rollData.tactique);
|
dmg.dmgTactique = RdDBonus.dmgBonus(rollData.tactique);
|
||||||
dmg.dmgParticuliere = RdDBonus._dmgParticuliere(rollData);
|
dmg.dmgParticuliere = RdDBonus._dmgParticuliere(rollData);
|
||||||
dmg.dmgSurprise = RdDBonus.dmgBonus(rollData.surpriseDefenseur);
|
dmg.dmgSurprise = RdDBonus.dmgBonus(rollData.surpriseDefenseur);
|
||||||
@ -38,17 +38,17 @@ export class RdDBonus {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static description(condition) {
|
static description(condition) {
|
||||||
return RdDBonus._find(condition).descr;
|
return RdDBonus.find(condition).descr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static dmgBonus(condition) {
|
static dmgBonus(condition) {
|
||||||
return RdDBonus._find(condition).dmg;
|
return RdDBonus.find(condition).dmg;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static bonusAttaque(condition) {
|
static bonusAttaque(condition) {
|
||||||
return RdDBonus._find(condition).attaque;
|
return RdDBonus.find(condition).attaque;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -69,6 +69,10 @@ export class RdDBonus {
|
|||||||
return rollData.arme ? parseInt(rollData.arme.data.dommages) : 0;
|
return rollData.arme ? parseInt(rollData.arme.data.dommages) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static _peneration(rollData) {
|
||||||
|
return rollData.arme ? parseInt(rollData.arme.data.penetration) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _dmgPerso(dmgActor, categorie, dmgArme) {
|
static _dmgPerso(dmgActor, categorie, dmgArme) {
|
||||||
switch (categorie) {
|
switch (categorie) {
|
||||||
|
@ -73,7 +73,7 @@ export class RdDCombat {
|
|||||||
rollMode: true
|
rollMode: true
|
||||||
};
|
};
|
||||||
mergeObject(data, chatMessage);
|
mergeObject(data, chatMessage);
|
||||||
game.socket.emit("system.foundryvtt-reve-de-dragon", { msg: topic, data: data});
|
game.socket.emit("system.foundryvtt-reve-de-dragon", { msg: topic, data: data });
|
||||||
} else {
|
} else {
|
||||||
chatMessage.whisper = [game.user];
|
chatMessage.whisper = [game.user];
|
||||||
}
|
}
|
||||||
@ -224,12 +224,16 @@ export class RdDCombat {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_onAttaqueParticuliere(rollData) {
|
_onAttaqueParticuliere(rollData) {
|
||||||
console.log("RdDCombat.onAttaqueParticuliere >>>", rollData);
|
console.log("RdDCombat.onAttaqueParticuliere >>>", rollData);
|
||||||
let message = "<strong>Réussite particulière en attaque</strong>";
|
|
||||||
message += "<br><a class='chat-card-button' id='particuliere-attaque' data-mode='force' data-attackerId='" + this.attackerId + "'>Attaquer en Force</a>";
|
|
||||||
// Finesse et Rapidité seulement en mêlée et si la difficulté libre est de -1 minimum
|
// Finesse et Rapidité seulement en mêlée et si la difficulté libre est de -1 minimum
|
||||||
|
let message = `
|
||||||
|
<h4 class="rdd-roll-part"><strong>Réussite particulière en attaque</strong></h4>
|
||||||
|
<br><a class='chat-card-button' id='particuliere-attaque' data-mode='force' data-attackerId='${this.attackerId}'>Attaquer en Force</a>
|
||||||
|
`;
|
||||||
if (rollData.selectedCarac.label == "Mêlée" && rollData.diffLibre < 0) {
|
if (rollData.selectedCarac.label == "Mêlée" && rollData.diffLibre < 0) {
|
||||||
message += "<br><a class='chat-card-button' id='particuliere-attaque' data-mode='rapidite' data-attackerId='" + this.attackerId + "'>Attaquer en Rapidité</a>";
|
message += `
|
||||||
message += "<br><a class='chat-card-button' id='particuliere-attaque' data-mode='finesse' data-attackerId='" + this.attackerId + "'>Attaquer en Finesse</a>";
|
<br><a class='chat-card-button' id='particuliere-attaque' data-mode='rapidite' data-attackerId='${this.attackerId}'>Attaquer en Rapidité</a>
|
||||||
|
<br><a class='chat-card-button' id='particuliere-attaque' data-mode='finesse' data-attackerId='${this.attackerId}'>Attaquer en Finesse</a>";
|
||||||
|
`
|
||||||
}
|
}
|
||||||
game.system.rdd.rollDataHandler[this.attackerId] = rollData;
|
game.system.rdd.rollDataHandler[this.attackerId] = rollData;
|
||||||
// TODO: use a dialog?
|
// TODO: use a dialog?
|
||||||
@ -259,11 +263,19 @@ export class RdDCombat {
|
|||||||
// Final chat message
|
// Final chat message
|
||||||
let chatOptions = {
|
let chatOptions = {
|
||||||
content: "<strong>Test : " + rollData.selectedCarac.label + " / " + rollData.competence.name + "</strong>"
|
content: "<strong>Test : " + rollData.selectedCarac.label + " / " + rollData.competence.name + "</strong>"
|
||||||
+ RdDResolutionTable.explainRollData(rollData)
|
+ RdDResolutionTable.explainRollData(rollData)
|
||||||
+ explications
|
+ explications
|
||||||
}
|
}
|
||||||
ChatUtility.chatWithRollMode(chatOptions, this.attacker.name)
|
ChatUtility.chatWithRollMode(chatOptions, this.attacker.name)
|
||||||
|
|
||||||
|
rollData.show = {
|
||||||
|
cible: this.target ? this.defender.data.name : 'la cible',
|
||||||
|
isRecul : (rollData.particuliereAttaque == 'force' || rollData.tactique == 'charge')
|
||||||
|
}
|
||||||
|
ChatUtility.chatWithRollMode(
|
||||||
|
{ content: await RdDResolutionTable.explainRollDataV2(rollData, 'chat-resultat-attaque.html') },
|
||||||
|
this.name)
|
||||||
|
|
||||||
if (!await this.accorderEntite('avant-defense')) {
|
if (!await this.accorderEntite('avant-defense')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -678,7 +690,7 @@ export class RdDCombat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_sendMessageEncaisser(rollData){
|
_sendMessageEncaisser(rollData) {
|
||||||
let message = "<strong>" + this.defender.name + "</strong> doit:" + this._buildMessageEncaisser(rollData);
|
let message = "<strong>" + this.defender.name + "</strong> doit:" + this._buildMessageEncaisser(rollData);
|
||||||
RdDCombat._sendRollMessage(this.attacker, this.defender, this.defenderTokenId, "msg_encaisser", message, rollData);
|
RdDCombat._sendRollMessage(this.attacker, this.defender, this.defenderTokenId, "msg_encaisser", message, rollData);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
|
import { RdDBonus } from "./rdd-bonus.js";
|
||||||
import { RdDDice } from "./rdd-dice.js";
|
import { RdDDice } from "./rdd-dice.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -88,7 +89,7 @@ export class RdDResolutionTable {
|
|||||||
return message;
|
return message;
|
||||||
}
|
}
|
||||||
|
|
||||||
static async explainRollDataV2(rollData, template = 'chat-resultat-rdd.html') {
|
static async explainRollDataV2(rollData, template = 'chat-resultat-general.html') {
|
||||||
rollData.ajustements = RdDResolutionTable._buildAjustements(rollData);
|
rollData.ajustements = RdDResolutionTable._buildAjustements(rollData);
|
||||||
rollData.show = rollData.show || {};
|
rollData.show = rollData.show || {};
|
||||||
|
|
||||||
@ -101,21 +102,29 @@ export class RdDResolutionTable {
|
|||||||
if (rollData.competence) {
|
if (rollData.competence) {
|
||||||
list.push({ label: rollData.competence.name, value: rollData.competence.data.niveau});
|
list.push({ label: rollData.competence.name, value: rollData.competence.data.niveau});
|
||||||
}
|
}
|
||||||
|
if (rollData.tactique) {
|
||||||
|
const surprise = RdDBonus.find(rollData.tactique);
|
||||||
|
list.push({ label: surprise.descr, value: surprise.attaque });
|
||||||
|
}
|
||||||
|
if (rollData.surpriseDefenseur) {
|
||||||
|
const surprise = RdDBonus.find(rollData.surpriseDefenseur);
|
||||||
|
list.push({ label: surprise.descr, value: surprise.attaque });
|
||||||
|
}
|
||||||
if (rollData.diffLibre != undefined) {
|
if (rollData.diffLibre != undefined) {
|
||||||
const label = rollData.selectedSort ? rollData.selectedSort.name : 'libre';
|
const label = rollData.selectedSort ? rollData.selectedSort.name : 'Libre';
|
||||||
list.push({ label: label, value: rollData.diffLibre });
|
list.push({ label: label, value: rollData.diffLibre });
|
||||||
}
|
}
|
||||||
if (rollData.diffConditions != undefined) {
|
if (rollData.diffConditions != undefined) {
|
||||||
list.push({ label: 'conditions', value: rollData.diffConditions });
|
list.push({ label: 'Conditions', value: rollData.diffConditions });
|
||||||
}
|
}
|
||||||
if (rollData.etat != undefined) {
|
if (rollData.etat != undefined) {
|
||||||
list.push({ label: 'état', value: rollData.etat });
|
list.push({ label: 'Etat', value: rollData.etat });
|
||||||
}
|
}
|
||||||
if (rollData.selectedCarac != undefined && rollData.moral != undefined && rollData.selectedCarac.label == 'Volonté') {
|
if (rollData.selectedCarac != undefined && rollData.moral != undefined && rollData.selectedCarac.label == 'Volonté') {
|
||||||
list.push({ label: 'moral', value: rollData.selectedCarac != undefined && rollData.moral != undefined && rollData.selectedCarac.label == 'Volonté' ? rollData.moral : undefined });
|
list.push({ label: 'Moral', value: rollData.selectedCarac != undefined && rollData.moral != undefined && rollData.selectedCarac.label == 'Volonté' ? rollData.moral : undefined });
|
||||||
}
|
}
|
||||||
if (RdDResolutionTable.isAjustementAstrologique(rollData)) {
|
if (RdDResolutionTable.isAjustementAstrologique(rollData)) {
|
||||||
list.push({ label: 'astrologique', value: rollData.ajustementAstrologique||0 });
|
list.push({ label: 'Astrologique', value: rollData.ajustementAstrologique||0 });
|
||||||
}
|
}
|
||||||
if (rollData.rolled.bonus && rollData.selectedSort) {
|
if (rollData.rolled.bonus && rollData.selectedSort) {
|
||||||
list.push({ label: 'Bonus de case', value: rollData.rolled.bonus, unit: '%' });
|
list.push({ label: 'Bonus de case', value: rollData.rolled.bonus, unit: '%' });
|
||||||
|
@ -11,7 +11,7 @@ const titleTableDeResolution = 'Table de résolution';
|
|||||||
export class RdDRollResolution extends Dialog {
|
export class RdDRollResolution extends Dialog {
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async open(rollData = {selectedCarac:10}) {
|
static async open(rollData = {}) {
|
||||||
RdDRollResolution._setDefaultOptions(rollData);
|
RdDRollResolution._setDefaultOptions(rollData);
|
||||||
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-roll-resolution.html', rollData);
|
let html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-roll-resolution.html', rollData);
|
||||||
const dialog = new RdDRollResolution(rollData, html);
|
const dialog = new RdDRollResolution(rollData, html);
|
||||||
@ -21,8 +21,9 @@ export class RdDRollResolution extends Dialog {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static _setDefaultOptions(rollData) {
|
static _setDefaultOptions(rollData) {
|
||||||
|
|
||||||
|
|
||||||
let defRollData = {
|
let defRollData = {
|
||||||
show: {title: titleTableDeResolution, points:true},
|
show: { title: titleTableDeResolution, points: true },
|
||||||
ajustementsConditions: CONFIG.RDD.ajustementsConditions,
|
ajustementsConditions: CONFIG.RDD.ajustementsConditions,
|
||||||
difficultesLibres: CONFIG.RDD.difficultesLibres,
|
difficultesLibres: CONFIG.RDD.difficultesLibres,
|
||||||
etat: 0,
|
etat: 0,
|
||||||
@ -30,15 +31,19 @@ export class RdDRollResolution extends Dialog {
|
|||||||
carac: {},
|
carac: {},
|
||||||
finalLevel: 0,
|
finalLevel: 0,
|
||||||
diffConditions: 0,
|
diffConditions: 0,
|
||||||
diffLibre: 0
|
diffLibre: 0,
|
||||||
}
|
}
|
||||||
mergeObject(rollData, defRollData, {overwrite: false});
|
mergeObject(rollData, defRollData, { overwrite: false });
|
||||||
for (let i = 1; i < 21; i++) {
|
for (let i = 1; i < 21; i++) {
|
||||||
rollData.carac[i] = { type: "number", value: i, label: i }
|
const key = `${i}`;
|
||||||
if (rollData.selectedCarac == i) {
|
rollData.carac[key] = { type: "number", value: i, label: key }
|
||||||
rollData.selectedCarac = rollData.carac[i];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
let selected = (rollData.selectedCarac && rollData.selectedCarac.label)
|
||||||
|
? rollData.selectedCarac.label
|
||||||
|
: (Number.isInteger(rollData.selectedCarac))
|
||||||
|
? rollData.selectedCarac
|
||||||
|
: 10;
|
||||||
|
rollData.selectedCarac = rollData.carac[selected];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -59,7 +64,7 @@ export class RdDRollResolution extends Dialog {
|
|||||||
async onAction(html) {
|
async onAction(html) {
|
||||||
await RdDResolutionTable.rollData(this.rollData);
|
await RdDResolutionTable.rollData(this.rollData);
|
||||||
console.log("RdDRollResolution -=>", this.rollData, this.rollData.rolled);
|
console.log("RdDRollResolution -=>", this.rollData, this.rollData.rolled);
|
||||||
const message = { content: await RdDResolutionTable.explainRollDataV2(this.rollData)};
|
const message = { content: await RdDResolutionTable.explainRollDataV2(this.rollData) };
|
||||||
ChatUtility.chatWithRollMode(message, game.user.name)
|
ChatUtility.chatWithRollMode(message, game.user.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,6 +203,10 @@ table {border: 1px solid #7a7971;}
|
|||||||
-ms-flex-pack: justify;
|
-ms-flex-pack: justify;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
.flex-shrink {
|
||||||
|
flex: 'flex-shrink' ;
|
||||||
|
}
|
||||||
|
|
||||||
/* Styles limited to foundryvtt-reve-de-dragon sheets */
|
/* Styles limited to foundryvtt-reve-de-dragon sheets */
|
||||||
|
|
||||||
.foundryvtt-reve-de-dragon .sheet-header {
|
.foundryvtt-reve-de-dragon .sheet-header {
|
||||||
@ -723,7 +727,7 @@ ul, li {
|
|||||||
margin: 0.25rem;
|
margin: 0.25rem;
|
||||||
}
|
}
|
||||||
.control-icon.tokenhudicon.right {
|
.control-icon.tokenhudicon.right {
|
||||||
margin-left: 8px;
|
margin-left: 8px;
|
||||||
}
|
}
|
||||||
.rdd-hud-menu {
|
.rdd-hud-menu {
|
||||||
font-size: 0.75rem;
|
font-size: 0.75rem;
|
||||||
@ -1211,38 +1215,39 @@ display: inline-flex;
|
|||||||
|
|
||||||
/* Tooltip text */
|
/* Tooltip text */
|
||||||
.tooltip .tooltiptext {
|
.tooltip .tooltiptext {
|
||||||
visibility: hidden;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding: 5px 0;
|
|
||||||
border-radius: 6px;
|
|
||||||
|
|
||||||
/* Position the tooltip text */
|
/* Position the tooltip text */
|
||||||
|
top: 20px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
|
|
||||||
/* Fade in tooltip */
|
/* Fade in tooltip */
|
||||||
|
visibility: hidden;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transition: opacity 0.3s;
|
transition: opacity 0.3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tooltiptext-fatigue{
|
.tooltip .ttt-fatigue{
|
||||||
width: 360px;
|
width: 360px;
|
||||||
top: 30px;
|
|
||||||
left: -30%;
|
|
||||||
|
|
||||||
background-color: rgba(30, 25, 20, 0.9);
|
background: rgba(30, 25, 20, 0.9);
|
||||||
border-image: url(img/ui/bg_control.jpg) 21 repeat;
|
border-image: url(img/ui/bg_control.jpg) 21 repeat;
|
||||||
border-image-slice: 6 6 6 6 fill;
|
border-image-slice: 6 6 6 6 fill;
|
||||||
border-image-width: 6px 6px 6px 6px;
|
border-image-width: 6px 6px 6px 6px;
|
||||||
border-image-outset: 0px 0px 0px 0px;
|
border-image-outset: 0px 0px 0px 0px;
|
||||||
border-radius: 0px;
|
border-radius: 0px;
|
||||||
|
|
||||||
|
font-size: 0.8rem;
|
||||||
|
padding: 3px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tooltiptext-ajustements {
|
.tooltip .ttt-ajustements {
|
||||||
width: 150px;
|
width: 150px;
|
||||||
top: 30px;
|
|
||||||
background: rgba(220,220,210,0.9);
|
background: rgba(220,220,210,0.9);
|
||||||
font-size: 0.8rem;
|
border-radius: 6px;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
padding: 3px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Show the tooltip text when you mouse over the tooltip container */
|
/* Show the tooltip text when you mouse over the tooltip container */
|
||||||
|
@ -29,9 +29,9 @@
|
|||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<label class="ctn-fatigue tooltip">
|
<label class="ctn-fatigue tooltip">
|
||||||
|
<span class="tooltiptext ttt-fatigue">{{{data.fatigue.html}}}</span>
|
||||||
Fatigue
|
Fatigue
|
||||||
<a id="fatigue-moins">-</a>
|
<a id="fatigue-moins">-</a>
|
||||||
<span class="tooltiptext tooltiptext-fatigue">{{{data.fatigue.html}}}</span>
|
|
||||||
<input class="resource-content" id="fatigue-value" type="text" name="data.sante.fatigue.value" value="{{data.sante.fatigue.value}}" data-dtype="Number" />
|
<input class="resource-content" id="fatigue-value" type="text" name="data.sante.fatigue.value" value="{{data.sante.fatigue.value}}" data-dtype="Number" />
|
||||||
<span>/ {{data.sante.fatigue.max}}</span>
|
<span>/ {{data.sante.fatigue.max}}</span>
|
||||||
<a id="fatigue-plus">+</a>
|
<a id="fatigue-plus">+</a>
|
||||||
@ -65,7 +65,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flexrow">
|
<div class="flexrow">
|
||||||
<span class="tooltip">Malus de fatigue : {{data.fatigue.malus}}
|
<span class="tooltip">Malus de fatigue : {{data.fatigue.malus}}
|
||||||
<span class="tooltiptext tooltiptext-fatigue">{{{data.fatigue.html}}}</span>
|
<span class="tooltiptext ttt-fatigue">{{{data.fatigue.html}}}</span>
|
||||||
</span>
|
</span>
|
||||||
<span>{{data.blessures.resume}}</span>
|
<span>{{data.blessures.resume}}</span>
|
||||||
</div>
|
</div>
|
||||||
|
19
templates/chat-resultat-appelchance.html
Normal file
19
templates/chat-resultat-appelchance.html
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<h4>
|
||||||
|
Appel à la chance:
|
||||||
|
<span class="tooltip">
|
||||||
|
{{rolled.caracValue}} à {{numberFormat rolled.finalLevel decimals=0 sign=true}}
|
||||||
|
{{#if ajustements}}
|
||||||
|
<div class="tooltiptext ttt-ajustements">
|
||||||
|
<div>Ajustements</div>
|
||||||
|
{{#each ajustements as |item key|}}
|
||||||
|
<div class="{{#if item.strong}}strong-text{{/if}}" >{{item.label}}: {{numberFormat item.value decimals=0 sign=true}}{{#if item.unit}}{{item.unit}}{{/if}}</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</span> = {{rolled.score}}%
|
||||||
|
</h4>
|
||||||
|
<div><span>{{rolled.roll}} : </span><span class="rdd-roll-{{rolled.code}} strong-text">{{rolled.quality}}</span></div>
|
||||||
|
{{~#if rolled.isSuccess}}
|
||||||
|
<hr>
|
||||||
|
<span class="rdd-roll-part">Un point de chance est dépensé, l'action peut être retentée!</span>
|
||||||
|
{{/if}}
|
53
templates/chat-resultat-attaque.html
Normal file
53
templates/chat-resultat-attaque.html
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
<h4>
|
||||||
|
Attaque {{arme.name}}
|
||||||
|
<br>{{selectedCarac.label}} / {{competence.name}}
|
||||||
|
à {{diffLibre}}
|
||||||
|
<br>
|
||||||
|
<span class="tooltip">
|
||||||
|
{{rolled.caracValue}} à {{numberFormat rolled.finalLevel decimals=0 sign=true}}
|
||||||
|
{{#if ajustements}}
|
||||||
|
<div class="tooltiptext ttt-ajustements">
|
||||||
|
<div>Ajustements</div>
|
||||||
|
{{#each ajustements as |item key|}}
|
||||||
|
<div class="{{#if item.strong}}strong-text{{/if}}">{{item.label}}: {{numberFormat item.value decimals=0
|
||||||
|
sign=true}}{{#if item.unit}}{{item.unit}}{{/if}}</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</span>
|
||||||
|
{{#if rolled.needSignificative}}<label class="rdd-need-significative">(×½)</label>{{/if}} =
|
||||||
|
{{rolled.score}}%
|
||||||
|
</h4>
|
||||||
|
<div><span>{{rolled.roll}} : </span><span class="rdd-roll-{{rolled.code}} strong-text">{{rolled.quality}}</span></div>
|
||||||
|
<hr>
|
||||||
|
{{#if tactique}}
|
||||||
|
<div>
|
||||||
|
{{#if (eq tactique 'charge')}}
|
||||||
|
<img style="float: left; border: 0;" src="icons/svg/thrust.svg" alt="charge" height="32" width="32" />
|
||||||
|
C'est une charge, vos parades auront un
|
||||||
|
-4 et vous ne pouvez pas esquiver!
|
||||||
|
{{ else if (eq tactique 'feinte')}}
|
||||||
|
Votre feinte peut faire mouche!
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
<div>
|
||||||
|
<span><strong>{{show.cible}}</strong> doit se défendre, ou encaisser à
|
||||||
|
{{~#if (eq dmg.mortalite 'non-mortel')}}
|
||||||
|
<span class="rdd-roll-norm">({{numberFormat dmg.total decimals=0 sign=true}})</span> (dommages non-mortel)
|
||||||
|
{{else if (eq dmg.mortalite 'mortel')}}
|
||||||
|
<span class="rdd-need-echec">{{numberFormat dmg.total decimals=0 sign=true}}</span>.
|
||||||
|
{{else}}
|
||||||
|
<span class="rdd-roll-etotal">{{numberFormat dmg.total decimals=0 sign=true}}</span> (entités de cauchemar)
|
||||||
|
{{~/if}}.
|
||||||
|
{{#if show.isRecul}}Si votre adversaire ne fait pas une esquive, il devra reculer sous le choc!{{/if}}
|
||||||
|
Le coup vise: {{dmg.loc.label}}.
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{{#if (eq particuliereAttaque 'rapidite')}}
|
||||||
|
<div>
|
||||||
|
<span>
|
||||||
|
<br>Votre attaque rapide vous permet une deuxième attaque, ou défense supplémentaire!
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
33
templates/chat-resultat-competence.html
Normal file
33
templates/chat-resultat-competence.html
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<h4>
|
||||||
|
{{#if show.title}}{{show.title}}: {{/if}}
|
||||||
|
{{#if selectedCarac}}{{selectedCarac.label}}
|
||||||
|
{{#if competence}} / {{competence.name}}{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
<br>
|
||||||
|
<span class="tooltip">
|
||||||
|
{{rolled.caracValue}} à {{numberFormat rolled.finalLevel decimals=0 sign=true}}
|
||||||
|
{{#if ajustements}}
|
||||||
|
<div class="tooltiptext ttt-ajustements">
|
||||||
|
<div>Ajustements</div>
|
||||||
|
{{#each ajustements as |item key|}}
|
||||||
|
<div class="{{#if item.strong}}strong-text{{/if}}" >{{item.label}}: {{numberFormat item.value decimals=0 sign=true}}{{#if item.unit}}{{item.unit}}{{/if}}</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</span>
|
||||||
|
{{#if rolled.needSignificative}}<label class="rdd-need-significative">(×½)</label>{{/if}} =
|
||||||
|
{{rolled.score}}%
|
||||||
|
</h4>
|
||||||
|
<div><span>{{rolled.roll}} : </span><span class="rdd-roll-{{rolled.code}} strong-text">{{rolled.quality}}</span></div>
|
||||||
|
{{#if show.points}}
|
||||||
|
<hr>
|
||||||
|
<div>
|
||||||
|
<span>{{rolled.ptTache}} points de tâche{{#if rolled.ptQualite}}, ajustement Qualité {{numberFormat rolled.ptQualite decimals=0 sign=true}}{{/if}}</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{~#if show.explications}}
|
||||||
|
{{#unless show.points}}<hr>{{/unless}}
|
||||||
|
<div>
|
||||||
|
{{show.explications}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
33
templates/chat-resultat-general.html
Normal file
33
templates/chat-resultat-general.html
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<h4>
|
||||||
|
{{#if show.title}}{{show.title}}: {{/if}}
|
||||||
|
{{#if selectedCarac}}{{selectedCarac.label}}
|
||||||
|
{{#if competence}} / {{competence.name}}{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
<br>
|
||||||
|
<span class="tooltip">
|
||||||
|
{{rolled.caracValue}} à {{numberFormat rolled.finalLevel decimals=0 sign=true}}
|
||||||
|
{{#if ajustements}}
|
||||||
|
<div class="tooltiptext ttt-ajustements">
|
||||||
|
<div>Ajustements</div>
|
||||||
|
{{#each ajustements as |item key|}}
|
||||||
|
<div class="{{#if item.strong}}strong-text{{/if}}" >{{item.label}}: {{numberFormat item.value decimals=0 sign=true}}{{#if item.unit}}{{item.unit}}{{/if}}</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</span>
|
||||||
|
{{#if rolled.needSignificative}}<label class="rdd-need-significative">(×½)</label>{{/if}} =
|
||||||
|
{{rolled.score}}%
|
||||||
|
</h4>
|
||||||
|
<div><span>{{rolled.roll}} : </span><span class="rdd-roll-{{rolled.code}} strong-text">{{rolled.quality}}</span></div>
|
||||||
|
{{#if show.points}}
|
||||||
|
<hr>
|
||||||
|
<div>
|
||||||
|
<span>{{rolled.ptTache}} points de tâche{{#if rolled.ptQualite}}, ajustement Qualité {{numberFormat rolled.ptQualite decimals=0 sign=true}}{{/if}}</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
{{~#if show.explications}}
|
||||||
|
{{#unless show.points}}<hr>{{/unless}}
|
||||||
|
<div>
|
||||||
|
{{show.explications}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
@ -1,9 +1,10 @@
|
|||||||
<h4>
|
<h4>
|
||||||
{{#if show.title}}{{show.title}}: {{/if}}
|
{{#if show.title}}{{show.title}}: {{/if}}
|
||||||
|
<br>
|
||||||
<span class="tooltip">
|
<span class="tooltip">
|
||||||
{{rolled.caracValue}} à {{numberFormat rolled.finalLevel decimals=0 sign=true}}
|
{{rolled.caracValue}} à {{numberFormat rolled.finalLevel decimals=0 sign=true}}
|
||||||
{{#if ajustements}}
|
{{#if ajustements}}
|
||||||
<div class="tooltiptext tooltiptext-ajustements">
|
<div class="tooltiptext ttt-ajustements">
|
||||||
<div>Ajustements</div>
|
<div>Ajustements</div>
|
||||||
{{#each ajustements as |item key|}}
|
{{#each ajustements as |item key|}}
|
||||||
<div class="{{#if item.strong}}strong-text{{/if}}" >{{item.label}}: {{numberFormat item.value decimals=0 sign=true}}{{#if item.unit}}{{item.unit}}{{/if}}</div>
|
<div class="{{#if item.strong}}strong-text{{/if}}" >{{item.label}}: {{numberFormat item.value decimals=0 sign=true}}{{#if item.unit}}{{item.unit}}{{/if}}</div>
|
||||||
@ -14,16 +15,15 @@
|
|||||||
{{#if rolled.needSignificative}}<label class="rdd-need-significative">(×½)</label>{{/if}} =
|
{{#if rolled.needSignificative}}<label class="rdd-need-significative">(×½)</label>{{/if}} =
|
||||||
{{rolled.score}}%
|
{{rolled.score}}%
|
||||||
</h4>
|
</h4>
|
||||||
<div>
|
<div><span>{{rolled.roll}} : </span><span class="rdd-roll-{{rolled.code}} strong-text">{{rolled.quality}}</span></div>
|
||||||
<span>{{rolled.roll}} : </span>
|
|
||||||
<span class="rdd-roll-{{rolled.code}} strong-text">{{rolled.quality}}</span>
|
|
||||||
</div>
|
|
||||||
{{#if show.points}}
|
{{#if show.points}}
|
||||||
|
<hr>
|
||||||
<div>
|
<div>
|
||||||
<span>{{rolled.ptTache}} points de tâche{{#if rolled.ptQualite}}, ajustement Qualité {{numberFormat rolled.ptQualite decimals=0 sign=true}}{{/if}}</span>
|
<span>{{rolled.ptTache}} points de tâche{{#if rolled.ptQualite}}, ajustement Qualité {{numberFormat rolled.ptQualite decimals=0 sign=true}}{{/if}}</span>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{~#if show.explications}}
|
{{~#if show.explications}}
|
||||||
|
{{#unless show.points}}<hr>{{/unless}}
|
||||||
<div>
|
<div>
|
||||||
{{show.explications}}
|
{{show.explications}}
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
<h4>
|
<h4>
|
||||||
{{#if isSortReserve}}Mise en réserve{{else}}Lancement{{/if}} du sort {{selectedSort.name}} r{{selectedSort.data.ptreve_reel}}
|
{{#if isSortReserve}}Mise en réserve{{else}}Lancement{{/if}} du sort {{selectedSort.name}} (r {{selectedSort.data.ptreve_reel}})
|
||||||
<br>
|
<br>
|
||||||
<span class="tooltip">
|
<span class="tooltip">
|
||||||
{{competence.name}}: {{rolled.caracValue}} à {{numberFormat rolled.finalLevel decimals=0 sign=true}}
|
{{competence.name}}: {{rolled.caracValue}} à {{numberFormat rolled.finalLevel decimals=0 sign=true}}
|
||||||
<div class="tooltiptext tooltiptext-ajustements">
|
<div class="tooltiptext ttt-ajustements">
|
||||||
<div>Ajustements</div>
|
<div>Ajustements</div>
|
||||||
{{#each ajustements as |item key|}}
|
{{#each ajustements as |item key|}}
|
||||||
<div class="{{#if item.strong}}strong-text{{/if}}" >{{item.label}}: {{numberFormat item.value decimals=0 sign=true}}{{#if item.unit}}{{item.unit}}{{/if}}</div>
|
<div class="{{#if item.strong}}strong-text{{/if}}" >{{item.label}}: {{numberFormat item.value decimals=0 sign=true}}{{#if item.unit}}{{item.unit}}{{/if}}</div>
|
||||||
@ -14,11 +14,12 @@
|
|||||||
{{rolled.score}}%
|
{{rolled.score}}%
|
||||||
</h4>
|
</h4>
|
||||||
<div>Pour {{selectedSort.data.ptreve_reel}} points de rêve en {{coordLabel}} ({{coord}})</div>
|
<div>Pour {{selectedSort.data.ptreve_reel}} points de rêve en {{coordLabel}} ({{coord}})</div>
|
||||||
|
<div>
|
||||||
|
<span>{{rolled.roll}} : </span><span class="rdd-roll-{{rolled.code}} strong-text">{{rolled.quality}}</span>
|
||||||
|
{{#if show.reveInsuffisant}}<span>Pas assez de rêve!</span>{{/if}}
|
||||||
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
<div>
|
<div>
|
||||||
<span>{{rolled.roll}} :</span>
|
|
||||||
<span class="rdd-roll-{{rolled.code}} strong-text">{{rolled.quality}}</span>
|
|
||||||
{{#if show.reveInsuffisant}}<span>Pas assez de rêve!</span>{{/if}}
|
|
||||||
<span>
|
<span>
|
||||||
{{#if rolled.isETotal}}
|
{{#if rolled.isETotal}}
|
||||||
Echec TOTAL du sort!
|
Echec TOTAL du sort!
|
||||||
|
24
templates/chat-resultat-tache.html
Normal file
24
templates/chat-resultat-tache.html
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<h4>
|
||||||
|
{{tache.name}}: Tâche {{selectedCarac.label}} / {{competence.name}}
|
||||||
|
<span class="tooltip">
|
||||||
|
{{rolled.caracValue}} à {{numberFormat rolled.finalLevel decimals=0 sign=true}}
|
||||||
|
{{#if ajustements}}
|
||||||
|
<div class="tooltiptext ttt-ajustements">
|
||||||
|
<div>Ajustements</div>
|
||||||
|
{{#each ajustements as |item key|}}
|
||||||
|
<div class="{{#if item.strong}}strong-text{{/if}}" >{{item.label}}: {{numberFormat item.value decimals=0 sign=true}}{{#if item.unit}}{{item.unit}}{{/if}}</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
</span>
|
||||||
|
{{#if rolled.needSignificative}}<label class="rdd-need-significative">(×½)</label>{{/if}} =
|
||||||
|
{{rolled.score}}%
|
||||||
|
</h4>
|
||||||
|
<div><span>{{rolled.roll}} : </span><span class="rdd-roll-{{rolled.code}} strong-text">{{rolled.quality}}</span></div>
|
||||||
|
<hr>
|
||||||
|
<div>
|
||||||
|
Après {{tache.data.periodicite}} vous avez obtenu {{rolled.ptTache}} points de tâche,
|
||||||
|
votre avancement est de <span class="rdd-roll-{{#if (gt tache.data.points_de_tache_courant 0)}}norm{{else}}etotal{{/if}}">{{tache.data.points_de_tache_courant}} sur {{tache.data.points_de_tache}}</span> Points de Tâche.
|
||||||
|
{{#if tache.data.fatigue}}<br><span>Vous êtes fatigué de {{tache.data.fatigue}} cases.</span>{{/if}}
|
||||||
|
{{#if rolled.isETotal}}<br><span>Votre échec total augmente de 1 la difficulté de la tâche!</span>{{/if~}}
|
||||||
|
</div>
|
Loading…
Reference in New Issue
Block a user