forked from public/foundryvtt-reve-de-dragon
Compare commits
34 Commits
foundryvtt
...
foundryvtt
Author | SHA1 | Date | |
---|---|---|---|
0d67d9af88 | |||
45a562f502 | |||
21fc62b302 | |||
c37c68e6db | |||
ca893088d2 | |||
e69fb222c3 | |||
c76bf912d1 | |||
4b1573ab8b | |||
e0049cc2f7 | |||
8e0949442d | |||
28427bc7c7 | |||
50980d5216 | |||
a75ee8fbc6 | |||
78c757a21a | |||
6d06c96497 | |||
5402508b26 | |||
43d097581e | |||
7785851719 | |||
8f127bc66b | |||
8c5f6b8f1b | |||
00630849cb | |||
c4392f0320 | |||
7a92ee85ef | |||
56ea9dd2e4 | |||
ee42902b5c | |||
838d4381a4 | |||
2232224951 | |||
1251d04860 | |||
63c6d5ff0f | |||
c0d37e42ca | |||
c8c13d626c | |||
e1ca7ab738 | |||
8f1ee315ef | |||
5daf15901a |
@ -41,7 +41,8 @@
|
||||
"TypeOmbre": "Ombre de Thanatos",
|
||||
"TypeSouffle": "Souffle de Dragon",
|
||||
"TypeTete": "Tête de Dragon",
|
||||
"TypePossession": "Possession"
|
||||
"TypePossession": "Possession",
|
||||
"TypeSortreserve": "Sort en réserve"
|
||||
},
|
||||
"EFFECT": {
|
||||
"StatusStunned": "Sonné",
|
||||
|
@ -15,6 +15,7 @@ import { DialogSplitItem } from "./dialog-split-item.js";
|
||||
import { ReglesOptionelles } from "./regles-optionelles.js";
|
||||
import { DialogRepos } from "./dialog-repos.js";
|
||||
import { RdDSheetUtility } from "./rdd-sheet-utility.js";
|
||||
import { STATUSES } from "./status-effects.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class RdDActorSheet extends ActorSheet {
|
||||
@ -99,8 +100,7 @@ export class RdDActorSheet extends ActorSheet {
|
||||
formData.difficultesLibres = CONFIG.RDD.difficultesLibres;
|
||||
|
||||
formData.hautreve = {
|
||||
isDemiReve: this.actor.getEffectByLabel("Demi-rêve"),
|
||||
sortsReserve: formData.system.reve.reserve.list,
|
||||
isDemiReve: this.actor.getEffect(STATUSES.StatusDemiReve),
|
||||
rencontres: duplicate(formData.system.reve.rencontre.list),
|
||||
casesTmr: formData.itemsByType.casetmr,
|
||||
cacheTMR: this.actor.isTMRCache()
|
||||
@ -180,7 +180,8 @@ export class RdDActorSheet extends ActorSheet {
|
||||
});
|
||||
html.find('.item-delete').click(async event => {
|
||||
const li = RdDSheetUtility.getEventElement(event);
|
||||
RdDUtility.confirmerSuppression(this, li);
|
||||
const item = this.actor.getObjet(li.data("item-id"));
|
||||
RdDUtility.confirmerSuppressionItem(this, item, li);
|
||||
});
|
||||
html.find('.item-vendre').click(async event => {
|
||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
||||
@ -197,7 +198,11 @@ export class RdDActorSheet extends ActorSheet {
|
||||
});
|
||||
html.find('.subacteur-delete').click(async event => {
|
||||
const li = RdDSheetUtility.getEventElement(event);
|
||||
RdDUtility.confirmerSuppressionSubacteur(this, li);
|
||||
const actorId = li.data("actor-id");
|
||||
if (actorId) {
|
||||
const subActor = game.actors.get(actorId);
|
||||
RdDUtility.confirmerSuppressionSubacteur(this, subActor, li);
|
||||
}
|
||||
});
|
||||
|
||||
html.find('.encaisser-direct').click(async event => {
|
||||
@ -356,11 +361,15 @@ export class RdDActorSheet extends ActorSheet {
|
||||
await DialogRepos.create(this.actor);
|
||||
});
|
||||
html.find('.delete-active-effect').click(async event => {
|
||||
let id = $(event.currentTarget).parents(".active-effect").data('id');
|
||||
this.actor.enleverActiveEffectById(id);
|
||||
if (game.user.isGM) {
|
||||
let effect = $(event.currentTarget).parents(".active-effect").data('effect');
|
||||
this.actor.removeEffect(effect);
|
||||
}
|
||||
});
|
||||
html.find('.enlever-tous-effets').click(async event => {
|
||||
this.actor.enleverTousLesEffets();
|
||||
if (game.user.isGM) {
|
||||
await this.actor.removeEffects();
|
||||
}
|
||||
});
|
||||
html.find('.conteneur-name a').click(async event => {
|
||||
RdDUtility.toggleAfficheContenu(RdDSheetUtility.getItemId(event));
|
||||
|
@ -104,7 +104,8 @@ export class RdDActorVehiculeSheet extends ActorSheet {
|
||||
// Delete Inventory Item
|
||||
html.find('.item-delete').click(async event => {
|
||||
const li = RdDSheetUtility.getEventElement(event);
|
||||
RdDUtility.confirmerSuppression(this, li);
|
||||
const item = this.actor.getObjet(li.data("item-id"));
|
||||
RdDUtility.confirmerSuppressionItem(this, item, li);
|
||||
});
|
||||
html.find('.item-vendre').click(async event => {
|
||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
||||
|
187
module/actor.js
187
module/actor.js
@ -17,7 +17,7 @@ import { RdDAudio } from "./rdd-audio.js";
|
||||
import { RdDItemCompetence } from "./item-competence.js";
|
||||
import { RdDItemArme } from "./item-arme.js";
|
||||
import { RdDAlchimie } from "./rdd-alchimie.js";
|
||||
import { StatusEffects } from "./status-effects.js";
|
||||
import { STATUSES, StatusEffects } from "./status-effects.js";
|
||||
import { RdDItemCompetenceCreature } from "./item-competencecreature.js";
|
||||
import { RdDItemSigneDraconique } from "./item-signedraconique.js";
|
||||
import { ReglesOptionelles } from "./regles-optionelles.js";
|
||||
@ -44,6 +44,7 @@ const POSSESSION_SANS_DRACONIC = {
|
||||
}
|
||||
};
|
||||
|
||||
const PAS_DE_BLESSURE = { "active": false, "psdone": false, "scdone": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "loc": "" };
|
||||
/* -------------------------------------------- */
|
||||
/**
|
||||
* Extend the base Actor entity by defining a custom roll data structure which is ideal for the Simple system.
|
||||
@ -52,8 +53,6 @@ const POSSESSION_SANS_DRACONIC = {
|
||||
export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
static init() {
|
||||
Hooks.on("deleteActiveEffect", (effect, options, userId) => RdDActor.getParentActor(effect)?.onDeleteActiveEffect(effect, options));
|
||||
|
||||
Hooks.on("preUpdateItem", (item, change, options, id) => RdDActor.getParentActor(item)?.onPreUpdateItem(item, change, options, id));
|
||||
Hooks.on("createItem", (item, options, id) => RdDActor.getParentActor(item)?.onCreateItem(item, options, id));
|
||||
Hooks.on("deleteItem", (item, options, id) => RdDActor.getParentActor(item)?.onDeleteItem(item, options, id));
|
||||
@ -199,8 +198,7 @@ export class RdDActor extends Actor {
|
||||
/* -------------------------------------------- */
|
||||
async checkMonnaiePresence() { // Ajout opportuniste si les pièces n'existent pas.
|
||||
if (!this.items) return; // Sanity check during import
|
||||
let manquantes = Monnaie.monnaiesManquantes(this.itemTypes['monnaie']);
|
||||
//console.log("Manque : ", manquantes);
|
||||
let manquantes = Monnaie.monnaiesManquantes(this);
|
||||
if (manquantes.length > 0) {
|
||||
await this.createEmbeddedDocuments('Item', manquantes, { renderSheet: false });
|
||||
}
|
||||
@ -419,23 +417,9 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async deleteSortReserve(sortReserve) {
|
||||
let reserve = duplicate(this.system.reve.reserve);
|
||||
let tmr = TMRUtility.getTMR(sortReserve.coord);
|
||||
let index = reserve.list.findIndex(tmr.type == 'fleuve'
|
||||
? sort => (TMRUtility.getTMR(sort.coord).type == 'fleuve' && sort.sort.name == sortReserve.sort.name)
|
||||
: sort => (sort.coord == sortReserve.coord && sort.sort.name == sortReserve.sort.name)
|
||||
);
|
||||
if (index >= 0) {
|
||||
reserve.list.splice(index, 1);
|
||||
await this.update({ "system.reve.reserve": reserve });
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getSurprise(isCombat = undefined) {
|
||||
let niveauSurprise = this.getActiveEffects()
|
||||
let niveauSurprise = this.getEffects()
|
||||
.map(effect => StatusEffects.valeurSurprise(effect, isCombat))
|
||||
.reduce(Misc.sum(), 0);
|
||||
if (niveauSurprise > 1) {
|
||||
@ -562,7 +546,7 @@ export class RdDActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_supprimerBlessure(blessure) {
|
||||
mergeObject(blessure, { "active": false, "psdone": false, "scdone": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "loc": "" });
|
||||
mergeObject(blessure, PAS_DE_BLESSURE);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -605,39 +589,30 @@ export class RdDActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async remiseANeuf() {
|
||||
let message = {
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
|
||||
content: "Remise à neuf de " + this.name
|
||||
};
|
||||
if (this.isEntite([ENTITE_NONINCARNE])) {
|
||||
return;
|
||||
}
|
||||
if (this.isEntite([ENTITE_INCARNE, ENTITE_BLURETTE])) {
|
||||
await this.santeIncDec("endurance", this.system.sante.endurance.max - this.system.sante.endurance.value);
|
||||
}
|
||||
else {
|
||||
|
||||
ChatMessage.create({
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name),
|
||||
content: 'Remise à neuf de ' + this.name
|
||||
});
|
||||
const updates = {
|
||||
'system.sante.endurance.value' : this.system.sante.endurance.max
|
||||
};
|
||||
if (!this.isEntite([ENTITE_INCARNE, ENTITE_BLURETTE])) {
|
||||
if (this.system.blessures) {
|
||||
const blessures = duplicate(this.system.blessures);
|
||||
for (let listeBlessures of [blessures.legeres.liste, blessures.graves.liste, blessures.critiques.liste]) {
|
||||
for (let blessure of listeBlessures) {
|
||||
this._supprimerBlessure(blessure);
|
||||
}
|
||||
}
|
||||
await this.update({ "system.blessures": blessures });
|
||||
updates['system.blessures.legeres.liste'] = [PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE, PAS_DE_BLESSURE];
|
||||
updates['system.blessures.graves.liste'] = [PAS_DE_BLESSURE, PAS_DE_BLESSURE];
|
||||
updates['system.blessures.critiques.liste'] = [PAS_DE_BLESSURE];
|
||||
}
|
||||
updates['system.sante.vie.value'] = this.system.sante.vie.max;
|
||||
updates['system.sante.fatigue.value'] = 0;
|
||||
if (this.isPersonnage()) {
|
||||
await this.setEthylisme(1);
|
||||
}
|
||||
|
||||
await this.santeIncDec("vie", this.system.sante.vie.max - this.system.sante.vie.value);
|
||||
await this.santeIncDec("endurance", this.system.sante.endurance.max - this.system.sante.endurance.value);
|
||||
if (ReglesOptionelles.isUsing("appliquer-fatigue") && this.system.sante.fatigue) {
|
||||
await this.update({ "system.sante.fatigue.value": 0 });
|
||||
updates['system.compteurs.ethylisme'] = { value:1, nb_doses: 0, jet_moral: false};
|
||||
}
|
||||
}
|
||||
ChatMessage.create(message);
|
||||
this.sheet.render(true);
|
||||
await this.update(updates);
|
||||
await this.removeEffects(e => e.flags.core.statusId !== STATUSES.StatusDemiReve);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -849,10 +824,13 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async sortMisEnReserve(rollData, sort) {
|
||||
let reserve = duplicate(this.system.reve.reserve.list);
|
||||
reserve.push({ coord: rollData.tmr.coord, sort: sort, draconic: duplicate(rollData.competence) });
|
||||
await this.update({ "system.reve.reserve.list": reserve });
|
||||
async sortMisEnReserve(sort, draconic, coord, ptreve) {
|
||||
await this.createEmbeddedDocuments("Item", [{
|
||||
type: 'sortreserve',
|
||||
name: sort.name,
|
||||
img: sort.img,
|
||||
system: { sortid: sort.id, draconic: (draconic ?? sort.system.draconic), ptreve: ptreve, coord: coord, heurecible: 'Vaisseau' } }],
|
||||
{ renderSheet: false});
|
||||
this.currentTMR.updateTokens();
|
||||
}
|
||||
|
||||
@ -929,26 +907,27 @@ export class RdDActor extends Actor {
|
||||
if (!competence) {
|
||||
return;
|
||||
}
|
||||
const stress = this.system.compteurs.experience.value;
|
||||
const niveau = Number(competence.system.niveau);
|
||||
const stressTransforme = this.system.compteurs.experience.value;
|
||||
const xpRequis = RdDItemCompetence.getCompetenceNextXp(niveau) - competence.system.xp;
|
||||
if (stressTransforme <= 0 || niveau >= competence.system.niveau_archetype || xpRequis <= 0) {
|
||||
const xpSuivant = RdDItemCompetence.getCompetenceNextXp(niveau);
|
||||
const xpRequis = xpSuivant - competence.system.xp;
|
||||
if (stress <= 0 || niveau >= competence.system.niveau_archetype) {
|
||||
ui.notifications.info(`La compétence ne peut pas augmenter!
|
||||
stress disponible: ${stressTransforme}
|
||||
stress disponible: ${stress}
|
||||
expérience requise: ${xpRequis}
|
||||
niveau : ${niveau}
|
||||
archétype : ${competence.system.niveau_archetype}`);
|
||||
return;
|
||||
}
|
||||
const xpUtilise = Math.min(stressTransforme, xpRequis);
|
||||
const gainNiveau = xpUtilise >= xpRequis ? 1 : 0;
|
||||
const xpUtilise = Math.max(0, Math.min(stress, xpRequis));
|
||||
const gainNiveau = (xpUtilise >= xpRequis || xpRequis <=0) ? 1 : 0;
|
||||
const nouveauNiveau = niveau + gainNiveau;
|
||||
const nouveauXp = gainNiveau > 0 ? Math.max(competence.system.xp - xpRequis, 0) : (competence.system.xp + xpUtilise);
|
||||
const nouveauXp = gainNiveau > 0 ? Math.max(competence.system.xp - xpSuivant, 0) : (competence.system.xp + xpUtilise);
|
||||
await competence.update({
|
||||
"system.xp": nouveauXp,
|
||||
"system.niveau": nouveauNiveau,
|
||||
});
|
||||
const stressTransformeRestant = Math.max(0, stressTransforme - xpUtilise);
|
||||
const stressTransformeRestant = Math.max(0, stress - xpUtilise);
|
||||
await this.update({ "system.compteurs.experience.value": stressTransformeRestant });
|
||||
this.updateExperienceLog('Dépense stress', xpUtilise, `Stress en ${competence.name} ${gainNiveau ? "pour passer à " + nouveauNiveau : ""}`);
|
||||
}
|
||||
@ -1132,11 +1111,11 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async deleteAllConteneur(itemId) {
|
||||
async deleteAllConteneur(itemId, options) {
|
||||
let list = [];
|
||||
list.push({ id: itemId, conteneurId: undefined }); // Init list
|
||||
this.buildSubConteneurObjetList(itemId, list);
|
||||
await this.deleteEmbeddedDocuments('Item', list.map(it => it.id));
|
||||
await this.deleteEmbeddedDocuments('Item', list.map(it => it.id), options);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -1424,6 +1403,15 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async actionRefoulement(item) {
|
||||
const refoulement = item?.system.refoulement ?? 0;
|
||||
if (refoulement>0){
|
||||
await this.ajouterRefoulement(refoulement);
|
||||
await item.delete();
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async ajouterRefoulement(value = 1) {
|
||||
let refoulement = this.system.reve.refoulement.value + value;
|
||||
@ -1589,12 +1577,12 @@ export class RdDActor extends Actor {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getSonne() {
|
||||
return this.getEffectByLabel("EFFECT.StatusStunned");
|
||||
return this.getEffect(STATUSES.StatusStunned);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async finDeRound(options = { terminer: false }) {
|
||||
for (let effect of this.getActiveEffects()) {
|
||||
for (let effect of this.getEffects()) {
|
||||
if (effect.duration.type !== 'none' && (effect.duration.remaining <= 0 || options.terminer)) {
|
||||
if (effect.system.origin) {
|
||||
await effect.update({ 'disabled': true });
|
||||
@ -1623,7 +1611,7 @@ export class RdDActor extends Actor {
|
||||
ui.notifications.info("Le personnage est hors combat, il ne reste donc pas sonné");
|
||||
return;
|
||||
}
|
||||
await this.setStatusEffect("EFFECT.StatusStunned", sonne);
|
||||
await this.setEffect(STATUSES.StatusStunned, sonne);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -1776,7 +1764,7 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
await this.update({ "system.sante": sante })
|
||||
if (this.isDead()) {
|
||||
await this.setStatusEffect("EFFECT.StatusComma", true);
|
||||
await this.setEffect(STATUSES.StatusComma, true);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@ -1924,6 +1912,7 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
return;
|
||||
}
|
||||
case 'queue': case 'ombre': return await this.actionRefoulement(item);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2435,7 +2424,7 @@ export class RdDActor extends Actor {
|
||||
RdDItemSort.incrementBonusCase(this, selectedSort, rollData.tmr.coord);
|
||||
|
||||
if (rollData.isSortReserve) {
|
||||
await this.sortMisEnReserve(rollData, selectedSort);
|
||||
await this.sortMisEnReserve(selectedSort, rollData.competence, rollData.tmr.coord, Number(selectedSort.system.ptreve_reel));
|
||||
}
|
||||
}
|
||||
else {
|
||||
@ -2447,6 +2436,7 @@ export class RdDActor extends Actor {
|
||||
if (rolled.isETotal) { // Echec total !
|
||||
rollData.depenseReve = Math.min(reveActuel, Math.floor(rollData.depenseReve * 1.5))
|
||||
// TODO: mise en réserve d'un échec total...
|
||||
// await dialog mse en réserve, pour traitement échec total
|
||||
} else {
|
||||
rollData.depenseReve = 0
|
||||
}
|
||||
@ -3158,8 +3148,7 @@ export class RdDActor extends Actor {
|
||||
ui.notifications.warn("Vous êtes déja dans les TMR....");
|
||||
return
|
||||
}
|
||||
let demiReve = this.getActiveEffects(it => it.label == "Demi-rêve");
|
||||
if (mode != 'visu' && demiReve.length > 0) {
|
||||
if (mode != 'visu' && this.getEffect(STATUSES.StatusDemiReve)) {
|
||||
ui.notifications.warn("Le joueur ou le MJ est déja dans les Terres Médianes avec ce personnage ! Visualisation uniquement");
|
||||
mode = "visu"; // bascule le mode en visu automatiquement
|
||||
}
|
||||
@ -3174,7 +3163,7 @@ export class RdDActor extends Actor {
|
||||
});
|
||||
return;
|
||||
}
|
||||
await this.setStatusEffect("EFFECT.StatusDemiReve", true);
|
||||
await this.setEffect(STATUSES.StatusDemiReve, true);
|
||||
}
|
||||
|
||||
const fatigue = this.system.sante.fatigue.value;
|
||||
@ -3464,7 +3453,7 @@ export class RdDActor extends Actor {
|
||||
count--;
|
||||
} else {
|
||||
// TODO: status effect dead
|
||||
this.setStatusEffect("EFFECT.StatusComma", true);
|
||||
this.setEffect(STATUSES.StatusComma, true);
|
||||
ChatMessage.create({
|
||||
content: `<img class="chat-icon" src="icons/svg/skull.svg" alt="charge" />
|
||||
<strong>${this.name} vient de succomber à une seconde blessure critique ! Que les Dragons gardent son Archétype en paix !</strong>`
|
||||
@ -3916,9 +3905,9 @@ export class RdDActor extends Actor {
|
||||
let newVehicules = this.system.subacteurs.vehicules.filter(function (obj, index, arr) { return obj.id != actorId });
|
||||
let newSuivants = this.system.subacteurs.suivants.filter(function (obj, index, arr) { return obj.id != actorId });
|
||||
let newMontures = this.system.subacteurs.montures.filter(function (obj, index, arr) { return obj.id != actorId });
|
||||
await this.update({ 'system.subacteurs.vehicules': newVehicules });
|
||||
await this.update({ 'system.subacteurs.suivants': newSuivants });
|
||||
await this.update({ 'system.subacteurs.montures': newMontures });
|
||||
await this.update({ 'system.subacteurs.vehicules': newVehicules }, { renderSheet: false });
|
||||
await this.update({ 'system.subacteurs.suivants': newSuivants }, { renderSheet: false });
|
||||
await this.update({ 'system.subacteurs.montures': newMontures }, { renderSheet: false });
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -4099,61 +4088,47 @@ export class RdDActor extends Actor {
|
||||
async onUpdateActor(update, options, actorId) {
|
||||
const updatedEndurance = update?.system?.sante?.endurance
|
||||
if (updatedEndurance && options.diff) {
|
||||
await this.setStatusEffect("EFFECT.StatusUnconscious", updatedEndurance.value == 0)
|
||||
await this.setEffect(STATUSES.StatusUnconscious, updatedEndurance.value == 0)
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async onDeleteActiveEffect(effect, options) {
|
||||
switch (effect.label) {
|
||||
case 'EFFECT.StatusStunned':
|
||||
return;
|
||||
}
|
||||
getEffects(filter = e => true) {
|
||||
return this.getEmbeddedCollection("ActiveEffect").filter(filter);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getActiveEffects(matching = it => true) {
|
||||
return Array.from(this.getEmbeddedCollection("ActiveEffect").values()).filter(it => matching(it));
|
||||
getEffect(statusId) {
|
||||
return this.getEmbeddedCollection("ActiveEffect").find(it => it.flags?.core?.statusId == statusId);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getEffectByLabel(label) {
|
||||
return this.getActiveEffects().find(it => it.system?.label == label);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getEffectById(id) {
|
||||
return this.getActiveEffects().find(it => it.id == id);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async setStatusEffect(label, status, updates = {}) {
|
||||
async setEffect(statusId, status) {
|
||||
if (this.isEntite() || this.type == 'vehicule') {
|
||||
return;
|
||||
}
|
||||
console.log("setStatusEffect", label, status, updates)
|
||||
const existing = this.getEffectByLabel(label);
|
||||
if (existing) {
|
||||
existing.delete();
|
||||
console.log("setEffect", statusId, status)
|
||||
const effect = this.getEffect(statusId);
|
||||
if (!status && effect){
|
||||
await this.deleteEmbeddedDocuments('ActiveEffect', [effect.id]);
|
||||
}
|
||||
if (status) {
|
||||
const statusEffect = mergeObject(duplicate(StatusEffects.status(label)), updates);
|
||||
await this.createEmbeddedDocuments("ActiveEffect", [statusEffect]);
|
||||
if (status && !effect ) {
|
||||
await this.createEmbeddedDocuments("ActiveEffect", [StatusEffects.status(statusId)]);
|
||||
}
|
||||
}
|
||||
|
||||
enleverActiveEffectById(id) {
|
||||
if (game.user.isGM) {
|
||||
const existing = this.getEffectById(id);
|
||||
if (existing) {
|
||||
existing.delete();
|
||||
}
|
||||
async removeEffect(statusId) {
|
||||
const effect = this.getEffect(statusId);
|
||||
if (effect) {
|
||||
await this.deleteEmbeddedDocuments('ActiveEffect', [effect.id]);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
enleverTousLesEffets() {
|
||||
async removeEffects(filter = e => true) {
|
||||
if (game.user.isGM) {
|
||||
this.deleteEmbeddedDocuments('ActiveEffect', this.getActiveEffects().map(it => it.id));
|
||||
const ids = this.getEffects(filter).map(it => it.id);
|
||||
await this.deleteEmbeddedDocuments('ActiveEffect', ids);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
export const SYSTEM_RDD = 'foundryvtt-reve-de-dragon';
|
||||
export const SYSTEM_SOCKET_ID = 'system.foundryvtt-reve-de-dragon';
|
||||
export const LOG_HEAD = 'RdD | ';
|
||||
|
||||
export const HIDE_DICE = 'hide';
|
||||
export const SHOW_DICE = 'show';
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { Misc } from "./misc.js";
|
||||
import { RdDCombatManager } from "./rdd-combat.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
export class RdDItemCompetenceCreature extends Item {
|
||||
@ -16,24 +17,27 @@ export class RdDItemCompetenceCreature extends Item {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static toActionArme(item) {
|
||||
if (RdDItemCompetenceCreature.isCompetenceAttaque(item)) {
|
||||
static toActionArme(competencecreature) {
|
||||
if (RdDItemCompetenceCreature.isCompetenceAttaque(competencecreature)) {
|
||||
// si c'est un Item compétence: cloner pour ne pas modifier lma compétence
|
||||
let arme = (item instanceof Item) ? item.clone(): item;
|
||||
let arme = (competencecreature instanceof Item) ? competencecreature.clone(): competencecreature;
|
||||
mergeObject(arme.system,
|
||||
{
|
||||
competence: arme.name,
|
||||
resistance: 100,
|
||||
initiative: RdDCombatManager.calculInitiative(competencecreature.system.niveau, competencecreature.system.carac_value),
|
||||
niveau: competencecreature.system.niveau,
|
||||
equipe: true,
|
||||
resistance: 100,
|
||||
dommagesReels: arme.system.dommages,
|
||||
penetration: 0,
|
||||
force: 0,
|
||||
rapide: true,
|
||||
cac: competencecreature.system.isnaturelle ? "naturelle" : "",
|
||||
action: 'attaque'
|
||||
});
|
||||
return arme;
|
||||
}
|
||||
console.error("RdDItemCompetenceCreature.toActionArme(", item, ") : impossible de transformer l'Item en arme");
|
||||
console.error("RdDItemCompetenceCreature.toActionArme(", competencecreature, ") : impossible de transformer l'Item en arme");
|
||||
return undefined;
|
||||
}
|
||||
|
||||
@ -44,6 +48,6 @@ export class RdDItemCompetenceCreature extends Item {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static isCompetenceParade(item) {
|
||||
return item.type == 'competencecreature' && item.system.isparade;
|
||||
return item.type == 'competencecreature' && item.system.categorie_parade !== "";
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
import { Misc } from "./misc.js";
|
||||
import { LOG_HEAD, SYSTEM_RDD } from "./constants.js";
|
||||
|
||||
const MONNAIES_STANDARD = [
|
||||
{
|
||||
@ -22,28 +23,32 @@ const MONNAIES_STANDARD = [
|
||||
system: { quantite: 0, valeur_deniers: 1000, encombrement: 0.004, description: "" }
|
||||
}
|
||||
]
|
||||
const VALEURS_STANDARDS = MONNAIES_STANDARD.map(it =>it.system.valeur_deniers);
|
||||
|
||||
export class Monnaie {
|
||||
|
||||
static isSystemMonnaie(item) {
|
||||
let present = MONNAIES_STANDARD.find(monnaie => monnaie.system.valeur_deniers == item?.system?.valeur_deniers);
|
||||
return present;
|
||||
static isSystemMonnaie(item, items) {
|
||||
if (item.type == 'monnaie') {
|
||||
const valeur = item.system.valeur_deniers;
|
||||
if (VALEURS_STANDARDS.includes(valeur)) {
|
||||
const monnaiesDeValeur = items.filter(it => it.type == 'monnaie' && it.system.valeur_deniers == valeur)
|
||||
return monnaiesDeValeur.length<=1;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
static monnaiesData() {
|
||||
return MONNAIES_STANDARD;
|
||||
}
|
||||
|
||||
static filtrerMonnaies(items) {
|
||||
return items.filter(it => it.type == 'monnaie');
|
||||
}
|
||||
|
||||
static monnaiesManquantes(disponibles) {
|
||||
static monnaiesManquantes(actor) {
|
||||
const disponibles = actor.itemTypes['monnaie'];
|
||||
const manquantes = MONNAIES_STANDARD.filter(standard => !disponibles.find(disponible => Monnaie.deValeur(disponible, standard.system?.valeur_deniers)));
|
||||
if (manquantes.length>0) {
|
||||
console.error('monnaiesManquantes', manquantes, ' avec monnaies', disponibles, MONNAIES_STANDARD);
|
||||
if (manquantes.length > 0) {
|
||||
console.error(`${LOG_HEAD} monnaiesManquantes pour ${actor.name}`, manquantes, ' avec monnaies', disponibles, MONNAIES_STANDARD);
|
||||
}
|
||||
return []; //manquantes;
|
||||
return manquantes;
|
||||
}
|
||||
|
||||
static deValeur(monnaie, valeur) {
|
||||
|
@ -84,32 +84,36 @@ export class RdDItemSheet extends ItemSheet {
|
||||
}
|
||||
|
||||
formData.categorieCompetences = RdDItemCompetence.getCategorieCompetences()
|
||||
if (formData.type == 'tache' || formData.type == 'livre' || formData.type == 'meditation' || formData.type == 'oeuvre') {
|
||||
if (this.item.type == 'tache' || this.item.type == 'livre' || this.item.type == 'meditation' || this.item.type == 'oeuvre') {
|
||||
formData.caracList = duplicate(game.system.model.Actor.personnage.carac)
|
||||
formData.caracList["reve-actuel"] = duplicate(game.system.model.Actor.personnage.reve.reve)
|
||||
formData.competences = await RdDUtility.loadCompendium('foundryvtt-reve-de-dragon.competences')
|
||||
}
|
||||
if (formData.type == 'arme') {
|
||||
if (this.item.type == 'arme') {
|
||||
formData.competences = await RdDUtility.loadCompendium('foundryvtt-reve-de-dragon.competences', it => RdDItemCompetence.isCompetenceArme(it));
|
||||
console.log(formData.competences)
|
||||
}
|
||||
if (formData.type == 'recettealchimique') {
|
||||
if (this.item.type == 'recettealchimique') {
|
||||
RdDAlchimie.processManipulation(this.item, this.actor && this.actor.id);
|
||||
}
|
||||
if (formData.type == 'gemme') {
|
||||
if (this.item.type == 'gemme') {
|
||||
formData.gemmeTypeList = RdDGemme.getGemmeTypeOptionList();
|
||||
RdDGemme.calculDataDerivees(this.item);
|
||||
}
|
||||
if (formData.type == 'potion') {
|
||||
if (this.item.type == 'potion') {
|
||||
if (this.dateUpdated) {
|
||||
formData.system.prdate = this.dateUpdated;
|
||||
this.dateUpdated = undefined;
|
||||
}
|
||||
RdDHerbes.updatePotionData(formData);
|
||||
}
|
||||
if (formData.isOwned && formData.type == 'herbe' && (formData.system.categorie == 'Soin' || formData.system.categorie == 'Repos')) {
|
||||
if (formData.isOwned && this.item.type == 'herbe' && (formData.system.categorie == 'Soin' || formData.system.categorie == 'Repos')) {
|
||||
formData.isIngredientPotionBase = true;
|
||||
}
|
||||
if (this.item.type == 'sortreserve') {
|
||||
const sortId = this.item.system.sortid;
|
||||
formData.sort = formData.isOwned ? this.item.actor.items.get(sortId) : game.items.get(sortId);
|
||||
}
|
||||
formData.bonusCaseList = RdDItemSort.getBonusCaseList(formData, true);
|
||||
|
||||
return formData;
|
||||
@ -197,7 +201,8 @@ export class RdDItemSheet extends ItemSheet {
|
||||
});
|
||||
html.find('.item-delete').click(async event => {
|
||||
const li = RdDSheetUtility.getEventElement(event);
|
||||
RdDUtility.confirmerSuppression(this, li);
|
||||
const item = this.actor.getObjet(li.data("item-id"));
|
||||
RdDUtility.confirmerSuppressionItem(this, item, li);
|
||||
});
|
||||
html.find('.item-vendre').click(async event => {
|
||||
const item = RdDSheetUtility.getItem(event, this.actor);
|
||||
|
@ -36,7 +36,8 @@ export const defaultItemImg = {
|
||||
nourritureboisson: "systems/foundryvtt-reve-de-dragon/icons/objets/provision_crue.webp",
|
||||
signedraconique: "systems/foundryvtt-reve-de-dragon/icons/tmr/signe_draconique.webp",
|
||||
gemme: "systems/foundryvtt-reve-de-dragon/icons/gemmes/almaze.webp",
|
||||
possession: "systems/foundryvtt-reve-de-dragon/icons/entites/possession2.webp"
|
||||
possession: "systems/foundryvtt-reve-de-dragon/icons/entites/possession2.webp",
|
||||
sortreserve: "systems/foundryvtt-reve-de-dragon/icons/competence_oniros.webp",
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -145,24 +146,28 @@ export class RdDItem extends Item {
|
||||
}
|
||||
|
||||
getActionPrincipale(options = { warnIfNot: true }) {
|
||||
if (!this.isConteneur() && (this.system.quantite ?? 0) <= 0) {
|
||||
if (options.warnIfNot) {
|
||||
const warn = options.warnIfNot;
|
||||
switch (this.type) {
|
||||
case 'nourritureboisson': return this._actionOrWarnQuantiteZero(this.boisson ? 'Boire' : 'Manger', warn);
|
||||
case 'potion': return this._actionOrWarnQuantiteZero('Boire', warn);
|
||||
case 'livre': return this._actionOrWarnQuantiteZero('Lire', warn);
|
||||
case 'conteneur': return this._actionOrWarnQuantiteZero('Ouvrir', warn);
|
||||
case 'herbe': return this.isHerbeAPotion() ? this._actionOrWarnQuantiteZero('Décoction', warn) : undefined;
|
||||
case 'queue': case 'ombre': return this.system.refoulement>0 ? 'Refouler' : undefined;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
_actionOrWarnQuantiteZero(actionName, warn){
|
||||
if ((this.system.quantite ?? 0) <= 0) {
|
||||
if (warn) {
|
||||
ui.notifications.warn(`Vous n'avez plus de ${this.name}.`);
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
switch (this.type) {
|
||||
case 'nourritureboisson': return this.boisson ? 'Boire' : 'Manger';
|
||||
case 'potion': return 'Boire';
|
||||
case 'livre': return 'Lire';
|
||||
case 'conteneur': return 'Ouvrir';
|
||||
else {
|
||||
return actionName;
|
||||
}
|
||||
if (this.isHerbeAPotion()) { return 'Décoction'; }
|
||||
if (options.warnIfNot) {
|
||||
ui.notifications.warn(`Impossible d'utiliser un ${this.name}, aucune action associée définie.`);
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
|
||||
async diminuerQuantite(nombre, options = { diminuerQuantite: true, supprimerSiZero: false }) {
|
||||
|
141
module/migrations.js
Normal file
141
module/migrations.js
Normal file
@ -0,0 +1,141 @@
|
||||
import { LOG_HEAD, SYSTEM_RDD } from "./constants.js";
|
||||
import { Grammar } from "./grammar.js";
|
||||
|
||||
class Migration {
|
||||
get code() { return "sample"; }
|
||||
get version() { return "0.0.0"; }
|
||||
async migrate() { }
|
||||
|
||||
async applyItemsUpdates(computeUpdates) {
|
||||
await game.actors.forEach(async (actor) => {
|
||||
const actorItemUpdates = computeUpdates(actor.items);
|
||||
if (actorItemUpdates.length > 0) {
|
||||
console.log(
|
||||
this.code,
|
||||
`Applying updates on actor ${actor.name} items`,
|
||||
actorItemUpdates
|
||||
);
|
||||
await actor.updateEmbeddedDocuments("Item", actorItemUpdates);
|
||||
}
|
||||
});
|
||||
|
||||
const itemUpdates = computeUpdates(game.items);
|
||||
if (itemUpdates.length > 0) {
|
||||
console.log(this.code, "Applying updates on items", itemUpdates);
|
||||
await Item.updateDocuments(itemUpdates);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class _10_0_16_MigrationSortsReserve extends Migration {
|
||||
get code() { return "creation-item-sort-reserve"; }
|
||||
get version() { return "10.0.16"; }
|
||||
|
||||
async migrate() {
|
||||
await game.actors
|
||||
.filter((actor) => actor.type == "personnage")
|
||||
.filter((actor) => actor.system.reve?.reserve?.list?.length ?? 0 > 0)
|
||||
.forEach(async (actor) => {
|
||||
const sortsReserve = actor.system.reve.reserve.list.map(this.conversionSortReserve);
|
||||
console.log(`${LOG_HEAD} Migration des sorts en réserve de ${actor.name}`, sortsReserve);
|
||||
await actor.createEmbeddedDocuments("Item", sortsReserve, {
|
||||
renderSheet: false,
|
||||
});
|
||||
await actor.update({ 'system.reve.reserve.list': [] })
|
||||
});
|
||||
}
|
||||
|
||||
conversionSortReserve(it) {
|
||||
return {
|
||||
type: 'sortreserve',
|
||||
name: it.sort.name,
|
||||
img: it.sort.img,
|
||||
system: {
|
||||
// ATTENTION, utilisation de data / _id possibles, encore présents pour les anciens sorts en réserve
|
||||
sortid: it.sort._id,
|
||||
draconic: it.sort.draconic,
|
||||
ptreve: (it.sort.system ?? it.sort.data).ptreve_reel,
|
||||
coord: it.coord,
|
||||
heurecible: 'Vaisseau',
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
class _10_0_17_MigrationCompetenceCreature extends Migration {
|
||||
get code() { return "competences-creature-parade"; }
|
||||
get version() { return "10.0.17"; }
|
||||
|
||||
async migrate() {
|
||||
await this.applyItemsUpdates(items => items
|
||||
.filter(it => it.type == "competencecreature" && it.system.isparade && it.system.categorie_parade == "")
|
||||
.map(it => { return { _id: it.id, "system.categorie_parade": "armes-naturelles" } }));
|
||||
|
||||
await this.applyItemsUpdates(items => items
|
||||
.filter(it => it.type == "competencecreature" && it.system.iscombat)
|
||||
.map(it => { return { _id: it.id, "system.categorie": (Grammar.includesLowerCaseNoAccent(it.name, "lancee") ? "lancer" : "melee") } })
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export class Migrations {
|
||||
static getMigrations() {
|
||||
return [
|
||||
new _10_0_16_MigrationSortsReserve(),
|
||||
new _10_0_17_MigrationCompetenceCreature()
|
||||
];
|
||||
}
|
||||
|
||||
constructor() {
|
||||
game.settings.register(SYSTEM_RDD, "systemMigrationVersion", {
|
||||
name: "System Migration Version",
|
||||
scope: "world",
|
||||
config: false,
|
||||
type: String,
|
||||
default: "0.0.0",
|
||||
});
|
||||
}
|
||||
|
||||
migrate() {
|
||||
const currentVersion = game.settings.get(
|
||||
SYSTEM_RDD,
|
||||
"systemMigrationVersion"
|
||||
);
|
||||
if (isNewerVersion(game.system.version, currentVersion)) {
|
||||
const migrations = Migrations.getMigrations().filter(m => isNewerVersion(m.version, currentVersion));
|
||||
if (migrations.length > 0) {
|
||||
migrations.sort((a, b) =>
|
||||
isNewerVersion(a.version, b.version)
|
||||
? 1
|
||||
: isNewerVersion(b.version, a.version)
|
||||
? -1
|
||||
: 0
|
||||
);
|
||||
migrations.forEach(async (m) => {
|
||||
ui.notifications.info(
|
||||
`Executing migration ${m.code}: version ${currentVersion} is lower than ${m.version}`
|
||||
);
|
||||
await m.migrate();
|
||||
});
|
||||
ui.notifications.info(
|
||||
`Migrations done, version will change to ${game.system.version}`
|
||||
);
|
||||
} else {
|
||||
console.log(
|
||||
LOG_HEAD +
|
||||
`No migration needeed, version will change to ${game.system.version}`
|
||||
);
|
||||
}
|
||||
|
||||
game.settings.set(
|
||||
SYSTEM_RDD,
|
||||
"systemMigrationVersion",
|
||||
game.system.version
|
||||
);
|
||||
} else {
|
||||
console.log(LOG_HEAD + `No system version changed`);
|
||||
}
|
||||
}
|
||||
}
|
@ -10,6 +10,7 @@ import { RdDResolutionTable } from "./rdd-resolution-table.js";
|
||||
import { RdDRoll } from "./rdd-roll.js";
|
||||
import { RdDRollTables } from "./rdd-rolltables.js";
|
||||
import { ReglesOptionelles } from "./regles-optionelles.js";
|
||||
import { STATUSES } from "./status-effects.js";
|
||||
|
||||
/* -------------------------------------------- */
|
||||
const premierRoundInit = [
|
||||
@ -196,6 +197,11 @@ export class RdDCombatManager extends Combat {
|
||||
return actionsArme.sort(Misc.ascending(armeData => armeData.name + (armeData.system.mainInfo ?? '')));
|
||||
}
|
||||
|
||||
static listActionsCreature(competences) {
|
||||
return competences.filter(it => RdDItemCompetenceCreature.isCompetenceAttaque(it))
|
||||
.map(it => RdDItemCompetenceCreature.toActionArme(it));
|
||||
}
|
||||
|
||||
static listActionsPossessions(actor) {
|
||||
return RdDCombatManager._indexActions(actor.getPossessions().map(p =>
|
||||
{
|
||||
@ -217,17 +223,15 @@ export class RdDCombatManager extends Combat {
|
||||
if (actions.length>0) {
|
||||
return actions;
|
||||
}
|
||||
let items = actor.items;
|
||||
if (actor.isCreature()) {
|
||||
actions = actions.concat(items.filter(it => RdDItemCompetenceCreature.isCompetenceAttaque(it))
|
||||
.map(competence => RdDItemCompetenceCreature.toActionArme(competence)));
|
||||
actions = actions.concat(RdDCombatManager.listActionsCreature(actor.itemTypes['competencecreature']));
|
||||
} else {
|
||||
// Recupération des items 'arme'
|
||||
let armes = items.filter(it => RdDItemArme.isArmeUtilisable(it))
|
||||
const armes = actor.itemTypes['arme'].filter(it => RdDItemArme.isArmeUtilisable(it))
|
||||
//.concat(RdDItemArme.empoignade())
|
||||
.concat(RdDItemArme.mainsNues());
|
||||
|
||||
let competences = items.filter(it => it.type == 'competence');
|
||||
const competences = actor.itemTypes['competence'];
|
||||
actions = actions.concat(RdDCombatManager.listActionsArmes(armes, competences, actor.system.carac));
|
||||
|
||||
if (actor.system.attributs.hautrevant.value) {
|
||||
@ -327,22 +331,16 @@ export class RdDCombatManager extends Combat {
|
||||
initOffset = 9;
|
||||
initInfo = "Draconic"
|
||||
} else {
|
||||
compData = RdDItemCompetence.findCompetence(combatant.actor.items, arme.system.competence);
|
||||
compData = RdDItemCompetence.findCompetence(combatant.actor.items, action.system.competence);
|
||||
compNiveau = compData.system.niveau;
|
||||
initInfo = action.name + " / " + action.system.competence;
|
||||
|
||||
if (combatant.actor.type == 'creature' || combatant.actor.type == 'entite') {
|
||||
caracForInit = compData.system.carac_value;
|
||||
if (compData.system.categorie == "lancer") {
|
||||
initOffset = 7;
|
||||
}
|
||||
else {
|
||||
initOffset = 5;
|
||||
}
|
||||
} else {
|
||||
caracForInit = combatant.actor.system.carac[compData.system.defaut_carac].value;
|
||||
initOffset = RdDCombatManager._baseInitOffset(compData.system.categorie, action);
|
||||
initInfo = action.name + " / " + action.system.competence;
|
||||
|
||||
if (combatant.actor.type == 'creature' || combatant.actor.type == 'entite') {
|
||||
caracForInit = compData.system.carac_value;
|
||||
} else {
|
||||
caracForInit = combatant.actor.system.carac[compData.system.defaut_carac].value;
|
||||
}
|
||||
initOffset = RdDCombatManager._baseInitOffset(compData.system.categorie, action);
|
||||
}
|
||||
|
||||
let malus = combatant.actor.getEtatGeneral(); // Prise en compte état général
|
||||
@ -360,10 +358,12 @@ export class RdDCombatManager extends Combat {
|
||||
if (categorie == "lancer") { // Offset de principe pour les armes de jet
|
||||
return 7;
|
||||
}
|
||||
// Offset de principe pour les armes de jet
|
||||
switch (arme.system.cac) {
|
||||
case "empoignade": return 3;
|
||||
case "pugilat": return 4;
|
||||
case "empoignade":
|
||||
return 3;
|
||||
case "pugilat":
|
||||
case "naturelle":
|
||||
return 4;
|
||||
}
|
||||
return 5;
|
||||
}
|
||||
@ -833,7 +833,7 @@ export class RdDCombat {
|
||||
// # utilisation esquive
|
||||
const corpsACorps = this.defender.getCompetence("Corps à corps", { onMessage: it => console.info(it, this.defender) });
|
||||
const esquives = duplicate(this.defender.getCompetences("esquive", { onMessage: it => console.info(it, this.defender) }))
|
||||
esquives.forEach(e => e.usages = e?.id ? this.defender.getItemUse(e.id) : 0);
|
||||
esquives.forEach(e => e.system.nbUsage = e?._id ? this.defender.getItemUse(e._id) : 0);
|
||||
|
||||
const paramChatDefense = {
|
||||
passeArme: attackerRoll.passeArme,
|
||||
@ -1185,7 +1185,7 @@ export class RdDCombat {
|
||||
defenderRoll.show.recul = 'encaisse';
|
||||
} else if (rollRecul.rolled.isETotal || this._isReculCauseChute(impact)) {
|
||||
defenderRoll.show.recul = 'chute';
|
||||
await this.defender.setStatusEffect("EFFECT.StatusProne", true);
|
||||
await this.defender.setEffect(STATUSES.StatusProne, true);
|
||||
}
|
||||
else {
|
||||
defenderRoll.show.recul = 'recul';
|
||||
|
@ -35,6 +35,7 @@ import { RdDDice } from "./rdd-dice.js";
|
||||
import { RdDPossession } from "./rdd-possession.js";
|
||||
import { RdDSigneDraconiqueItemSheet } from "./item-signedraconique-sheet.js";
|
||||
import { Misc } from "./misc.js";
|
||||
import { Migrations } from './migrations.js';
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/* Foundry VTT Initialization */
|
||||
@ -183,7 +184,7 @@ Hooks.once("init", async function () {
|
||||
Items.registerSheet(SYSTEM_RDD, RdDItemSheet, {
|
||||
types: ["arme", "armure", "objet", "arme", "armure", "conteneur", "competence", "sort", "herbe", "ingredient", "livre", "potion", "munition", "rencontresTMR", "queue", "ombre", "souffle",
|
||||
"tete", "competencecreature", "tarot", "monnaie", "nombreastral", "tache", "meditation", "casetmr", "recettealchimique", "gemme",
|
||||
"musique", "chant", "danse", "jeu", "recettecuisine", "maladie", "poison", "oeuvre", "nourritureboisson", "possession"], makeDefault: true
|
||||
"musique", "chant", "danse", "jeu", "recettecuisine", "maladie", "poison", "oeuvre", "nourritureboisson", "possession", "sortreserve"], makeDefault: true
|
||||
});
|
||||
CONFIG.Combat.documentClass = RdDCombatManager;
|
||||
|
||||
@ -245,6 +246,9 @@ function registerUsageCount( registerKey ) {
|
||||
/* -------------------------------------------- */
|
||||
Hooks.once("ready", async function () {
|
||||
await migrationPngWebp_1_5_34()
|
||||
if (Misc.isUniqueConnectedGM()) {
|
||||
new Migrations().migrate();
|
||||
}
|
||||
|
||||
StatusEffects.onReady();
|
||||
RdDHerbes.initializeHerbes();
|
||||
|
@ -25,7 +25,7 @@ export class RdDRollTables {
|
||||
/* -------------------------------------------- */
|
||||
static async drawTextFromRollTable(tableName, toChat) {
|
||||
const drawResult = await RdDRollTables.genericGetTableResult(tableName, toChat);
|
||||
return drawResult.system.text;
|
||||
return drawResult.data.text;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
|
@ -26,7 +26,7 @@ export class RdDSheetUtility {
|
||||
destId: destItemId,
|
||||
targetActorId: actorId,
|
||||
itemId: item.id,
|
||||
sourceActorId: item.actor.id,
|
||||
sourceActorId: item.actor?.id,
|
||||
srcId: objetVersConteneur[item.id],
|
||||
onEnleverConteneur: () => { delete objetVersConteneur[item.id]; },
|
||||
onAjouterDansConteneur: (itemId, conteneurId) => { objetVersConteneur[itemId] = conteneurId; }
|
||||
|
@ -1,4 +1,3 @@
|
||||
import { SYSTEM_SOCKET_ID } from "./constants.js";
|
||||
import { RollDataAjustements } from "./rolldata-ajustements.js";
|
||||
import { RdDUtility } from "./rdd-utility.js";
|
||||
import { TMRUtility } from "./tmr-utility.js";
|
||||
@ -16,6 +15,7 @@ import { Misc } from "./misc.js";
|
||||
import { HtmlUtility } from "./html-utility.js";
|
||||
import { ReglesOptionelles } from "./regles-optionelles.js";
|
||||
import { RdDDice } from "./rdd-dice.js";
|
||||
import { STATUSES } from "./status-effects.js";
|
||||
/* -------------------------------------------- */
|
||||
|
||||
export class RdDTMRDialog extends Dialog {
|
||||
@ -55,7 +55,6 @@ export class RdDTMRDialog extends Dialog {
|
||||
this.fatigueParCase = this.viewOnly || !ReglesOptionelles.isUsing("appliquer-fatigue") ? 0 : this.actor.getTMRFatigue();
|
||||
this.cumulFatigue = 0;
|
||||
this.loadRencontres();
|
||||
this.loadSortsReserve();
|
||||
this.loadCasesSpeciales();
|
||||
this.allTokens = [];
|
||||
this.rencontreState = 'aucune';
|
||||
@ -81,9 +80,16 @@ export class RdDTMRDialog extends Dialog {
|
||||
this.casesSpeciales = this.actor.items.filter(item => Draconique.isCaseTMR(item));
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
loadSortsReserve() {
|
||||
this.sortsReserves = this.actor.system.reve.reserve.list;
|
||||
get sortsReserve() {
|
||||
return this.actor.itemTypes['sortreserve'];
|
||||
}
|
||||
|
||||
getSortsReserve(coord) {
|
||||
return this.actor.itemTypes['sortreserve'].filter(// Reserve sur une case fleuve ou normale
|
||||
TMRUtility.getTMR(coord).type == 'fleuve'
|
||||
? it => TMRUtility.getTMR(it.system.coord).type == 'fleuve'
|
||||
: it => it.system.coord == coord
|
||||
);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -97,10 +103,10 @@ export class RdDTMRDialog extends Dialog {
|
||||
this.updateTokens();
|
||||
this.forceDemiRevePositionView();
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_createTokens() {
|
||||
if (!this.isDemiReveCache()){
|
||||
if (!this.isDemiReveCache()) {
|
||||
this.demiReve = this._tokenDemiReve();
|
||||
this._trackToken(this.demiReve);
|
||||
}
|
||||
@ -117,7 +123,6 @@ export class RdDTMRDialog extends Dialog {
|
||||
updateTokens() {
|
||||
this._removeTokens(t => true);
|
||||
this.loadRencontres();
|
||||
this.loadSortsReserve();
|
||||
this.loadCasesSpeciales();
|
||||
this._createTokens();
|
||||
}
|
||||
@ -136,7 +141,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
return this.rencontresExistantes.map(it => this._tokenRencontre(it));
|
||||
}
|
||||
_getTokensSortsReserve() {
|
||||
return this.sortsReserves.map(it => this._tokenSortEnReserve(it));
|
||||
return this.actor.itemTypes['sortreserve'].map(it => this._tokenSortEnReserve(it));
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -148,8 +153,8 @@ export class RdDTMRDialog extends Dialog {
|
||||
const draconique = Draconique.get(caseData.system.specific);
|
||||
return draconique?.token(this.pixiTMR, caseData, () => caseData.system.coord);
|
||||
}
|
||||
_tokenSortEnReserve(sortEnReserve) {
|
||||
return EffetsDraconiques.sortReserve.token(this.pixiTMR, sortEnReserve.sort, () => sortEnReserve.coord);
|
||||
_tokenSortEnReserve(sortReserve) {
|
||||
return EffetsDraconiques.sortReserve.token(this.pixiTMR, sortReserve, () => sortReserve.system.coord);
|
||||
}
|
||||
|
||||
_tokenDemiReve() {
|
||||
@ -209,24 +214,12 @@ export class RdDTMRDialog extends Dialog {
|
||||
this.actor.rollLireSigneDraconique(this._getActorCoord());
|
||||
});
|
||||
|
||||
html.find('#dir-top').click((event) => {
|
||||
this.moveFromKey("top");
|
||||
});
|
||||
html.find('#dir-top-left').click((event) => {
|
||||
this.moveFromKey("top-left");
|
||||
});
|
||||
html.find('#dir-top-right').click((event) => {
|
||||
this.moveFromKey("top-right");
|
||||
});
|
||||
html.find('#dir-bottom-left').click((event) => {
|
||||
this.moveFromKey("bottom-left");
|
||||
});
|
||||
html.find('#dir-bottom-right').click((event) => {
|
||||
this.moveFromKey("bottom-right");
|
||||
});
|
||||
html.find('#dir-bottom').click((event) => {
|
||||
this.moveFromKey("bottom");
|
||||
});
|
||||
html.find('#dir-top').click((event) => this.moveFromKey("top"));
|
||||
html.find('#dir-top-left').click((event) => this.moveFromKey("top-left"));
|
||||
html.find('#dir-top-right').click((event) => this.moveFromKey("top-right"));
|
||||
html.find('#dir-bottom-left').click((event) => this.moveFromKey("bottom-left"));
|
||||
html.find('#dir-bottom-right').click((event) => this.moveFromKey("bottom-right"));
|
||||
html.find('#dir-bottom').click((event) => this.moveFromKey("bottom"));
|
||||
|
||||
// Gestion du cout de montée en points de rêve
|
||||
let reveCout = ((this.tmrdata.isRapide && !EffetsDraconiques.isDeplacementAccelere(this.actor)) ? -2 : -1) - this.actor.countMonteeLaborieuse();
|
||||
@ -238,13 +231,14 @@ export class RdDTMRDialog extends Dialog {
|
||||
// Le reste...
|
||||
this.updateValuesDisplay();
|
||||
let tmr = TMRUtility.getTMR(this._getActorCoord());
|
||||
await this.manageRencontre(tmr, () => {
|
||||
this.postRencontre(tmr);
|
||||
});
|
||||
await this.manageRencontre(tmr);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async updateValuesDisplay() {
|
||||
if (!this.rendered) {
|
||||
return;
|
||||
}
|
||||
const coord = this._getActorCoord();
|
||||
|
||||
HtmlUtility._showControlWhen($(".lire-signe-draconique"), this.actor.isResonanceSigneDraconique(coord));
|
||||
@ -254,9 +248,9 @@ export class RdDTMRDialog extends Dialog {
|
||||
|
||||
let tmrpos = document.getElementById("tmr-pos");
|
||||
if (this.isDemiReveCache()) {
|
||||
tmrpos.innerHTML = '?? (' + TMRUtility.getTMRType(coord) + ')';
|
||||
tmrpos.innerHTML = `?? ( ${ TMRUtility.getTMRType(coord)})`;
|
||||
} else {
|
||||
tmrpos.innerHTML = coord + " (" + TMRUtility.getTMRLabel(coord) + ")";
|
||||
tmrpos.innerHTML = `${coord} ( ${TMRUtility.getTMRLabel(coord)})`;
|
||||
}
|
||||
|
||||
let etat = document.getElementById("tmr-etatgeneral-value");
|
||||
@ -272,15 +266,17 @@ export class RdDTMRDialog extends Dialog {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
close() {
|
||||
if ( this.actor.tmrApp ) {
|
||||
async close() {
|
||||
this.descenteTMR = true;
|
||||
if (this.actor.tmrApp) {
|
||||
this.actor.tmrApp = undefined; // Cleanup reference
|
||||
if ( !this.viewOnly ) {
|
||||
this.actor.setStatusEffect("EFFECT.StatusDemiReve", false);
|
||||
if (!this.viewOnly) {
|
||||
await this.actor.setEffect(STATUSES.StatusDemiReve, false)
|
||||
this._tellToGM(this.actor.name + " a quitté les terres médianes");
|
||||
}
|
||||
this.actor.santeIncDec("fatigue", this.cumulFatigue).then(super.close()); // moving 1 cell costs 1 fatigue
|
||||
await this.actor.santeIncDec("fatigue", this.cumulFatigue)
|
||||
}
|
||||
await super.close(); // moving 1 cell costs 1 fatigue
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -316,11 +312,11 @@ export class RdDTMRDialog extends Dialog {
|
||||
this.currentRencontre.graphics = []; // Keep track of rectangles to delete it
|
||||
this.currentRencontre.locList = duplicate(listCoordTMR); // And track of allowed location
|
||||
for (let coordTMR of listCoordTMR) {
|
||||
let rect = this._getCaseRectangleCoord(coordTMR);
|
||||
var rectDraw = new PIXI.Graphics();
|
||||
rectDraw.beginFill(0xFFFF00, 0.3);
|
||||
const rect = this._getCaseRectangleCoord(coordTMR);
|
||||
const rectDraw = new PIXI.Graphics();
|
||||
rectDraw.beginFill(0xffff00, 0.3);
|
||||
// set the line style to have a width of 5 and set the color to red
|
||||
rectDraw.lineStyle(5, 0xFF0000);
|
||||
rectDraw.lineStyle(5, 0xff0000);
|
||||
// draw a rectangle
|
||||
rectDraw.drawRect(rect.x, rect.y, rect.w, rect.h);
|
||||
this.pixiApp.stage.addChild(rectDraw);
|
||||
@ -336,19 +332,13 @@ export class RdDTMRDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async choisirCasePortee(coord, portee) {
|
||||
if (this.actor.isTMRCache())
|
||||
{
|
||||
return;
|
||||
}
|
||||
// Récupère la liste des cases à portées
|
||||
let locList = TMRUtility.getTMRPortee(coord, portee);
|
||||
this.colorierZoneRencontre(locList);
|
||||
this.colorierZoneRencontre(TMRUtility.getTMRPortee(coord, portee));
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async choisirCaseType(type) {
|
||||
const locList = TMRUtility.filterTMR(it => it.type == type).map(it => it.coord);
|
||||
this.colorierZoneRencontre(locList);
|
||||
this.colorierZoneRencontre(TMRUtility.filterTMR(it => it.type == type).map(it => it.coord));
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -483,12 +473,13 @@ export class RdDTMRDialog extends Dialog {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async manageRencontre(tmr, postRencontre) {
|
||||
async manageRencontre(tmr) {
|
||||
if (this.viewOnly) {
|
||||
return;
|
||||
}
|
||||
this.descenteTMR = false;
|
||||
this.currentRencontre = undefined;
|
||||
if (this._presentCite(tmr, postRencontre)) {
|
||||
if (this._presentCite(tmr)) {
|
||||
return;
|
||||
}
|
||||
let rencontre = await this._jetDeRencontre(tmr);
|
||||
@ -498,27 +489,27 @@ export class RdDTMRDialog extends Dialog {
|
||||
console.log("manageRencontre", rencontre);
|
||||
this.currentRencontre = duplicate(rencontre);
|
||||
|
||||
let dialog = new RdDTMRRencontreDialog("", this, this.currentRencontre, postRencontre);
|
||||
let dialog = new RdDTMRRencontreDialog(this, this.currentRencontre, () => this.postRencontre(tmr));
|
||||
dialog.render(true);
|
||||
}
|
||||
else {
|
||||
postRencontre();
|
||||
this.postRencontre(tmr);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_presentCite(tmr, postRencontre) {
|
||||
_presentCite(tmr) {
|
||||
const presentCite = this.casesSpeciales.find(c => EffetsDraconiques.presentCites.isCase(c, tmr.coord));
|
||||
if (presentCite) {
|
||||
this.minimize();
|
||||
const caseData = presentCite;
|
||||
EffetsDraconiques.presentCites.choisirUnPresent(caseData, (type => this._utiliserPresentCite(presentCite, type, tmr, postRencontre)));
|
||||
EffetsDraconiques.presentCites.choisirUnPresent(caseData, (type => this._utiliserPresentCite(presentCite, type, tmr)));
|
||||
}
|
||||
return presentCite;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async _utiliserPresentCite(presentCite, typeRencontre, tmr, postRencontre) {
|
||||
async _utiliserPresentCite(presentCite, typeRencontre, tmr) {
|
||||
this.currentRencontre = TMRRencontres.getRencontre(typeRencontre);
|
||||
await TMRRencontres.evaluerForceRencontre(this.currentRencontre);
|
||||
await EffetsDraconiques.presentCites.ouvrirLePresent(this.actor, presentCite);
|
||||
@ -537,7 +528,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
await this._tentativeMaitrise(rencontreData);
|
||||
|
||||
this.maximize();
|
||||
postRencontre();
|
||||
this.postRencontre(tmr);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -573,6 +564,9 @@ export class RdDTMRDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async manageTmrInnaccessible(tmr) {
|
||||
if (!tmr) {
|
||||
return await this.actor.reinsertionAleatoire('Sortie de carte');
|
||||
}
|
||||
const caseTmrInnaccessible = this.casesSpeciales.find(c => EffetsDraconiques.isInnaccessible(c, tmr.coord));
|
||||
if (caseTmrInnaccessible) {
|
||||
return await this.actor.reinsertionAleatoire(caseTmrInnaccessible.name);
|
||||
@ -605,7 +599,6 @@ export class RdDTMRDialog extends Dialog {
|
||||
|
||||
async _resultatMaitriseCaseHumide(rollData) {
|
||||
await this.souffleSiEchecTotal(rollData);
|
||||
this.toclose = rollData.rolled.isEchec;
|
||||
if (rollData.rolled.isSuccess && rollData.double) {
|
||||
rollData.previous = { rolled: rollData.rolled, ajustements: rollData.ajustements };
|
||||
rollData.double = undefined;
|
||||
@ -618,7 +611,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.html`, rollData)
|
||||
});
|
||||
if (rollData.rolled.isEchec) {
|
||||
this.close();
|
||||
await this.close();
|
||||
}
|
||||
}
|
||||
|
||||
@ -728,8 +721,6 @@ export class RdDTMRDialog extends Dialog {
|
||||
if (rollData.rolled.isETotal) {
|
||||
rollData.souffle = await this.actor.ajouterSouffle({ chat: false });
|
||||
}
|
||||
this.toclose = rollData.rolled.isEchec;
|
||||
|
||||
rollData.poesie = await Poetique.getExtrait();
|
||||
ChatMessage.create({
|
||||
whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name),
|
||||
@ -774,9 +765,8 @@ export class RdDTMRDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async declencheSortEnReserve(coord) {
|
||||
|
||||
let sortsEnCoord = TMRUtility.getSortsReserve(this.sortsReserves, coord);
|
||||
if (sortsEnCoord.length > 0) {
|
||||
let sorts = this.getSortsReserve(coord);
|
||||
if (sorts.length > 0) {
|
||||
if (EffetsDraconiques.isSortReserveImpossible(this.actor)) {
|
||||
ui.notifications.error("Une queue ou un souffle vous empèche de déclencher de sort!");
|
||||
return;
|
||||
@ -784,8 +774,8 @@ export class RdDTMRDialog extends Dialog {
|
||||
if (!EffetsDraconiques.isUrgenceDraconique(this.actor) &&
|
||||
(EffetsDraconiques.isReserveEnSecurite(this.actor) || this.isReserveExtensible(coord))) {
|
||||
let msg = "Vous êtes sur une case avec un Sort en Réserve. Grâce à votre Tête <strong>Reserve en Sécurité</strong> ou <strong>Réserve Exensible</strong>, vous pouvez contrôler le déclenchement. Cliquez si vous souhaitez le déclencher : <ul>";
|
||||
for (let sortReserve of sortsEnCoord) {
|
||||
msg += "<li><a class='chat-card-button' id='sort-reserve' data-actor-id='" + this.actor._id + "' data-tmr-coord='" + coord + "' data-sort-id='" + sortReserve.sort._id + "'>" + sortReserve.sort.name + "</a></li>";
|
||||
for (let sort of sorts) {
|
||||
msg += `<li><a class="chat-card-button declencher-sort-reserve" data-actor-id="${this.actor.id}" data-tmr-coord="${coord}" data-sort-id='${sort.id}">${sort.name}</a></li>`;
|
||||
}
|
||||
msg += "</ol>";
|
||||
ChatMessage.create({
|
||||
@ -794,33 +784,35 @@ export class RdDTMRDialog extends Dialog {
|
||||
});
|
||||
return;
|
||||
}
|
||||
await this.processSortReserve(sortsEnCoord[0]);
|
||||
await this.processSortReserve(sorts[0]);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
lancerSortEnReserve(coord, sortId) {
|
||||
let sortEnCoord = TMRUtility.getSortsReserve(this.sortsReserves, coord);
|
||||
let sortReserve = sortEnCoord.find(sortReserve => sortReserve.sort._id == sortId);
|
||||
if (sortReserve) {
|
||||
this.processSortReserve(sortReserve);
|
||||
let sorts = this.getSortsReserve(coord);
|
||||
let sort = sorts.find(it => it.id == sortId);
|
||||
if (sort) {
|
||||
this.processSortReserve(sort);
|
||||
} else {
|
||||
ChatMessage.create({
|
||||
content: "Une erreur est survenue : impossible de récupérer le sort en réserve demandé.",
|
||||
whisper: ChatMessage.getWhisperRecipients(game.user.name)
|
||||
content:
|
||||
"Une erreur est survenue : impossible de récupérer le sort en réserve demandé.",
|
||||
whisper: ChatMessage.getWhisperRecipients(game.user.name),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async processSortReserve(sortReserve) {
|
||||
await this.actor.deleteSortReserve(sortReserve);
|
||||
//this.updateSortReserve();
|
||||
console.log("declencheSortEnReserve", sortReserve)
|
||||
this._tellToUserAndGM(`Vous avez déclenché le sort en réserve <strong> ${sortReserve.sort.name}</strong>
|
||||
avec ${sortReserve.sort.data.ptreve_reel} points de Rêve
|
||||
en ${sortReserve.coord} (${TMRUtility.getTMRLabel(sortReserve.coord)})
|
||||
`);
|
||||
await this.actor.deleteEmbeddedDocuments('Item', [sortReserve.id]);
|
||||
console.log("declencheSortEnReserve", sortReserve);
|
||||
this._tellToUserAndGM(`Vous avez déclenché
|
||||
${sortReserve.system.echectotal ? "<strong>l'échec total!</strong>" : "le sort"}
|
||||
en réserve <strong>${sortReserve.name}</strong>
|
||||
avec ${sortReserve.system.ptreve} points de Rêve
|
||||
en ${sortReserve.system.coord} (${TMRUtility.getTMRLabel(sortReserve.system.coord)}).
|
||||
L'heure ciblée est ${sortReserve.system.heurecible}`);
|
||||
this.close();
|
||||
}
|
||||
|
||||
@ -926,7 +918,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
|
||||
const isInArea = this.rencontreState == 'aucune'
|
||||
? (this.isTerreAttache(targetCoord) || this.isConnaissanceFleuve(currentCoord, targetCoord) || TMRUtility.distanceOddq(fromOddq, toOddq) <= 1)
|
||||
: this.currentRencontre?.locList.find(coord => coord == targetCoord) ?? false
|
||||
: this.currentRencontre?.locList?.find(coord => coord == targetCoord) ?? false
|
||||
if (isInArea) {
|
||||
switch (this.rencontreState) {
|
||||
case 'aucune': return 'normal';
|
||||
@ -975,7 +967,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
this.actor.notifyRefreshTMR();
|
||||
|
||||
if (deplacementType == 'normal') { // Pas de rencontres après un saut de type passeur/changeur/...
|
||||
await this.manageRencontre(tmr, () => this.postRencontre(tmr));
|
||||
await this.manageRencontre(tmr);
|
||||
}
|
||||
else {
|
||||
await this.postRencontre(tmr);
|
||||
@ -994,13 +986,14 @@ export class RdDTMRDialog extends Dialog {
|
||||
/* -------------------------------------------- */
|
||||
async postRencontre(tmr) {
|
||||
if (!(this.viewOnly || this.currentRencontre)) {
|
||||
await this.manageCaseHumide(tmr);
|
||||
await this.conquerirCiteFermee(tmr);
|
||||
await this.purifierPeriple(tmr);
|
||||
await this.conquerirTMR(tmr);
|
||||
await this.validerVisite(tmr);
|
||||
await this.declencheSortEnReserve(tmr.coord);
|
||||
await this.actor.checkSoufflePeage(tmr);
|
||||
// TODO: vérifier que la méthode s'arrête en cas de non-maîtrise
|
||||
if (!this.descenteTMR) await this.manageCaseHumide(tmr);
|
||||
if (!this.descenteTMR) await this.conquerirCiteFermee(tmr);
|
||||
if (!this.descenteTMR) await this.purifierPeriple(tmr);
|
||||
if (!this.descenteTMR) await this.conquerirTMR(tmr);
|
||||
if (!this.descenteTMR) await this.validerVisite(tmr);
|
||||
if (!this.descenteTMR) await this.declencheSortEnReserve(tmr.coord);
|
||||
if (!this.descenteTMR) await this.actor.checkSoufflePeage(tmr);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1019,7 +1012,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
let x = origEvent.clientX - canvasRect.left;
|
||||
let y = origEvent.clientY - canvasRect.top;
|
||||
let col = Math.floor(x / tmrConstants.cellw); // [From 0 -> 12]
|
||||
y -= (col % 2 == 0) ? tmrConstants.col1_y : tmrConstants.col2_y;
|
||||
y -= col % 2 == 0 ? tmrConstants.col1_y : tmrConstants.col2_y;
|
||||
let row = Math.floor(y / tmrConstants.cellh); // [From 0 -> 14]
|
||||
return { col: col, row: row };
|
||||
}
|
||||
@ -1029,7 +1022,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
_getCaseRectangleCoord(coord) {
|
||||
return this.pixiTMR.getCaseRectangle(TMRUtility.coordTMRToOddq(coord));
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_removeTokens(filter) {
|
||||
const tokensToRemove = this.allTokens.filter(filter);
|
||||
@ -1037,7 +1030,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
this.pixiApp.stage.removeChild(token.sprite);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_trackToken(token) {
|
||||
if (this.demiReve === token && this.isDemiReveCache()) {
|
||||
|
@ -2,7 +2,7 @@
|
||||
export class RdDTMRRencontreDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
constructor(html, tmrApp, rencontre, postRencontre) {
|
||||
constructor(tmrApp, rencontre, postRencontre) {
|
||||
const dialogConf = {
|
||||
title: "Rencontre en TMR!",
|
||||
content: "Vous rencontrez un " + rencontre.name + " de force " + rencontre.force + "<br>",
|
||||
|
@ -121,8 +121,10 @@ export class RdDUtility {
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-oeuvre-partial.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-liste-blessures-partial.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-blessure-partial.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-queues.html',
|
||||
// Conteneur/item in Actor sheet
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-item-queue.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-item.html',
|
||||
"systems/foundryvtt-reve-de-dragon/templates/actor-sheet-inventaire-monnaie.html",
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-liens-animaux.html',
|
||||
@ -130,6 +132,7 @@ export class RdDUtility {
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-liens-vehicules.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/actor-sheet-editor-notes-mj.html',
|
||||
//Items
|
||||
'systems/foundryvtt-reve-de-dragon/templates/header-item.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item-competence-sheet.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item-competencecreature-sheet.html',
|
||||
'systems/foundryvtt-reve-de-dragon/templates/item-arme-sheet.html',
|
||||
@ -390,6 +393,7 @@ export class RdDUtility {
|
||||
formData.possessions = this.arrayOrEmpty(formData.itemsByType['possession']);
|
||||
formData.maladiesPoisons = formData.maladies.concat(formData.poisons);
|
||||
formData.competences = (formData.itemsByType.competence ?? []).concat(formData.itemsByType.competencecreature ?? []);
|
||||
formData.sortsReserve = this.arrayOrEmpty(formData.itemsByType['sortreserve']);
|
||||
}
|
||||
|
||||
static filterEquipementParType(formData) {
|
||||
@ -690,12 +694,13 @@ export class RdDUtility {
|
||||
actor.tmrApp.positionnerDemiReve(coord);
|
||||
});
|
||||
// Gestion spécifique des sorts en réserve multiples (ie têtes)
|
||||
html.on("click", '#sort-reserve', event => {
|
||||
html.on("click", '.declencher-sort-reserve', event => {
|
||||
let coord = event.currentTarget.attributes['data-tmr-coord'].value;
|
||||
let sortId = event.currentTarget.attributes['data-sort-id'].value;
|
||||
let actorId = event.currentTarget.attributes['data-actor-id'].value;
|
||||
let actor = game.actors.get(actorId);
|
||||
actor.tmrApp.lancerSortEnReserve(coord, sortId);
|
||||
// TODO: supprimer le message?
|
||||
});
|
||||
|
||||
// gestion bouton tchat Possession
|
||||
@ -828,21 +833,17 @@ export class RdDUtility {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static confirmerSuppressionSubacteur(actorSheet, li) {
|
||||
let actorId = li.data("actor-id");
|
||||
let actor = game.actors.get(actorId);
|
||||
let msgTxt = "<p>Etes vous certain de vouloir supprimer le lien vers ce véhicule/monture/suivant : " + actor.name + " ?</p>";
|
||||
let d = new Dialog({
|
||||
title: "Confirmer la suppression du lien",
|
||||
content: msgTxt,
|
||||
static confirmerSuppression(sheet, htmlToDelete, options) {
|
||||
const d = new Dialog({
|
||||
title: options.title ?? 'Confirmer la suppression',
|
||||
content: `<p>Etes vous certain de vouloir supprimer ${options.supprimer ?? 'cet objet'} ?</p>`,
|
||||
buttons: {
|
||||
delete: {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Supprimer le lien",
|
||||
label: options.deleteLabel ?? 'Supprimer',
|
||||
callback: () => {
|
||||
console.log("Delete : ", actorId);
|
||||
actorSheet.actor.removeSubacteur(actorId);
|
||||
li.slideUp(200, () => actorSheet.render(false));
|
||||
options.onDelete();
|
||||
RdDUtility.slideOnDelete(sheet, htmlToDelete);
|
||||
}
|
||||
},
|
||||
cancel: {
|
||||
@ -856,11 +857,21 @@ export class RdDUtility {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async confirmerSuppression(actorSheet, li) {
|
||||
let itemId = li.data("item-id");
|
||||
let objet = actorSheet.actor.getObjet(itemId);
|
||||
static confirmerSuppressionSubacteur(sheet, subActor, htmlToDelete) {
|
||||
RdDUtility.confirmerSuppression(sheet, htmlToDelete,{
|
||||
supprimer: "le lien vers le véhicule/monture/suivant : " + subActor.name,
|
||||
deleteLabel: "Supprimer le lien",
|
||||
onDelete: () => {
|
||||
console.log("Delete : ", subActor.id);
|
||||
sheet.actor.removeSubacteur(subActor.id);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (objet.type == 'monnaie' && Monnaie.isSystemMonnaie(objet)) {
|
||||
/* -------------------------------------------- */
|
||||
static async confirmerSuppressionItem(sheet, item, htmlToDelete) {
|
||||
const itemId = item.id;
|
||||
if (Monnaie.isSystemMonnaie(item, sheet.actor.items)) {
|
||||
ui.notifications.warn("Suppression des monnaies de base impossible");
|
||||
return;
|
||||
}
|
||||
@ -872,8 +883,8 @@ export class RdDUtility {
|
||||
label: "Supprimer l'objet",
|
||||
callback: () => {
|
||||
console.log("Delete : ", itemId);
|
||||
actorSheet.actor.deleteEmbeddedDocuments('Item', [itemId]);
|
||||
li.slideUp(200, () => actorSheet.render(false));
|
||||
sheet.actor.deleteEmbeddedDocuments('Item', [itemId], { renderSheet: false });
|
||||
RdDUtility.slideOnDelete(sheet, htmlToDelete);
|
||||
}
|
||||
},
|
||||
cancel: {
|
||||
@ -881,15 +892,15 @@ export class RdDUtility {
|
||||
label: "Annuler"
|
||||
}
|
||||
}
|
||||
if (objet.type == 'conteneur' && objet.system.contenu.length > 0) {
|
||||
if (item.type == 'conteneur' && item.system.contenu.length > 0) {
|
||||
msgTxt += "<br>Ce conteneur n'est pas vide. Choisissez l'option de suppression";
|
||||
buttons['deleteall'] = {
|
||||
icon: '<i class="fas fa-check"></i>',
|
||||
label: "Supprimer le conteneur et tout son contenu",
|
||||
callback: () => {
|
||||
console.log("Delete : ", itemId);
|
||||
actorSheet.actor.deleteAllConteneur(itemId);
|
||||
li.slideUp(200, () => actorSheet.render(false));
|
||||
sheet.actor.deleteAllConteneur(itemId, { renderSheet: false });
|
||||
RdDUtility.slideOnDelete(sheet, htmlToDelete);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -903,6 +914,10 @@ export class RdDUtility {
|
||||
d.render(true);
|
||||
}
|
||||
|
||||
static slideOnDelete(sheet, htmlToDelete) {
|
||||
return htmlToDelete.slideUp(200, () => sheet.render(false));
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static afficherHeuresChanceMalchance(heureNaissance) {
|
||||
if (game.user.isGM) {
|
||||
|
@ -1,26 +1,41 @@
|
||||
import { SYSTEM_RDD } from "./constants.js";
|
||||
|
||||
const rddStatusEffects = [
|
||||
{ rdd: true, id: 'stun', label: 'EFFECT.StatusStunned', icon: 'icons/svg/stoned.svg', "duration.rounds": 1 },
|
||||
{ rdd: true, id: 'bleeding', label: 'EFFECT.StatusBleeding', icon: 'icons/svg/blood.svg' },
|
||||
{ rdd: true, id: 'prone', label: 'EFFECT.StatusProne', icon: 'icons/svg/falling.svg' },
|
||||
{ rdd: true, id: 'grappling', tint: '#33cc33', label: 'EFFECT.StatusGrappling', icon: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp' },
|
||||
{ rdd: true, id: 'grappled', tint: '#ff9900', label: 'EFFECT.StatusGrappled', icon: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp' },
|
||||
{ rdd: true, id: 'restrain', label: 'EFFECT.StatusRestrained', icon: 'icons/svg/net.svg' },
|
||||
{ rdd: true, id: 'unconscious', label: 'EFFECT.StatusUnconscious', icon: 'icons/svg/unconscious.svg' },
|
||||
{ rdd: true, id: 'blind', label: 'EFFECT.StatusBlind', icon: 'icons/svg/blind.svg' },
|
||||
{ rdd: true, id: 'comma', label: 'EFFECT.StatusComma', icon: 'icons/svg/skull.svg' },
|
||||
{ rdd: true, id: 'dead', label: 'EFFECT.StatusDead', icon: 'icons/svg/skull.svg' },
|
||||
{ rdd: true, id: 'demi-reve', label: 'EFFECT.StatusDemiReve', icon: 'systems/foundryvtt-reve-de-dragon/icons/heures/hd12.svg' }
|
||||
];
|
||||
const demiReveStatusEffect = rddStatusEffects.find(it => it.label == 'EFFECT.StatusDemiReve');
|
||||
export const STATUSES = {
|
||||
StatusStunned : 'stun',
|
||||
StatusBleeding: 'bleeding',
|
||||
StatusProne: 'prone',
|
||||
StatusGrappling: 'grappling',
|
||||
StatusGrappled: 'grappled',
|
||||
StatusRestrained: 'restrain',
|
||||
StatusUnconscious: 'unconscious',
|
||||
StatusBlind: 'blind',
|
||||
StatusComma: 'comma',
|
||||
StatusDead: 'dead',
|
||||
StatusDemiReve: 'demi-reve',
|
||||
}
|
||||
|
||||
const statusDemiSurprise = new Set(['EFFECT.StatusStunned', 'EFFECT.StatusProne', 'EFFECT.StatusRestrain']);
|
||||
const statusSurpriseTotale = new Set(['EFFECT.StatusUnconscious', 'EFFECT.StatusBlind', 'EFFECT.StatusComma']);
|
||||
const rddStatusEffects = [
|
||||
{ rdd: true, id: STATUSES.StatusStunned, label: 'EFFECT.StatusStunned', icon: 'icons/svg/stoned.svg', "duration.rounds": 1 },
|
||||
{ rdd: true, id: STATUSES.StatusBleeding, label: 'EFFECT.StatusBleeding', icon: 'icons/svg/blood.svg' },
|
||||
{ rdd: true, id: STATUSES.StatusProne, label: 'EFFECT.StatusProne', icon: 'icons/svg/falling.svg' },
|
||||
{ rdd: true, id: STATUSES.StatusGrappling, tint: '#33cc33', label: 'EFFECT.StatusGrappling', icon: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp' },
|
||||
{ rdd: true, id: STATUSES.StatusGrappled, tint: '#ff9900', label: 'EFFECT.StatusGrappled', icon: 'systems/foundryvtt-reve-de-dragon/icons/competence_corps_a_corps.webp' },
|
||||
{ rdd: true, id: STATUSES.StatusRestrained, label: 'EFFECT.StatusRestrained', icon: 'icons/svg/net.svg' },
|
||||
{ rdd: true, id: STATUSES.StatusUnconscious, label: 'EFFECT.StatusUnconscious', icon: 'icons/svg/unconscious.svg' },
|
||||
{ rdd: true, id: STATUSES.StatusBlind, label: 'EFFECT.StatusBlind', icon: 'icons/svg/blind.svg' },
|
||||
{ rdd: true, id: STATUSES.StatusComma, label: 'EFFECT.StatusComma', icon: 'icons/svg/skull.svg' },
|
||||
{ rdd: true, id: STATUSES.StatusDead, label: 'EFFECT.StatusDead', icon: 'icons/svg/skull.svg' },
|
||||
{ rdd: true, id: STATUSES.StatusDemiReve, label: 'EFFECT.StatusDemiReve', icon: 'systems/foundryvtt-reve-de-dragon/icons/heures/hd12.svg' }
|
||||
];
|
||||
const demiReveStatusEffect = rddStatusEffects.find(it => it.id == STATUSES.StatusDemiReve);
|
||||
|
||||
const statusDemiSurprise = [STATUSES.StatusStunned, STATUSES.StatusProne, STATUSES.StatusRestrained];
|
||||
const statusSurpriseTotale = [STATUSES.StatusUnconscious, STATUSES.StatusBlind, STATUSES.StatusComma];
|
||||
|
||||
export class StatusEffects {
|
||||
static onReady() {
|
||||
const rddStatusIds = rddStatusEffects.map(it => it.id);
|
||||
rddStatusEffects.forEach(it => it.flags = { core: { statusId: it.id } });
|
||||
const defaultStatusEffectIds = CONFIG.statusEffects.map(it => it.id);
|
||||
game.settings.register(SYSTEM_RDD, "use-status-effects", {
|
||||
name: "use-status-effects",
|
||||
@ -47,40 +62,36 @@ export class StatusEffects {
|
||||
|
||||
static valeurSurprise(effect, isCombat) {
|
||||
// const id = StatusEffects.statusId(effect);
|
||||
if (statusSurpriseTotale.has(effect.label)) {
|
||||
if (statusSurpriseTotale.includes(effect.flags?.core?.statusId)) {
|
||||
return 2;
|
||||
}
|
||||
return statusDemiSurprise.has(effect.label) || (isCombat && effect.label == demiReveStatusEffect.label) ? 1 : 0;
|
||||
}
|
||||
|
||||
static setMandatoryRdd() {
|
||||
CONFIG.statusEffects.filter(it => statusDemiSurprise.has(it.id) || statusSurpriseTotale.has(it.id))
|
||||
.forEach(it => it.rdd = true);
|
||||
return statusDemiSurprise.includes(effect.flags?.core?.statusId) || (isCombat && effect.flags?.core?.statusId == STATUSES.StatusDemiReve) ? 1 : 0;
|
||||
}
|
||||
|
||||
static _getUseStatusEffects() {
|
||||
const setting = game.settings.get(SYSTEM_RDD, "use-status-effects");
|
||||
return setting ? new Set(setting.split(',')) : new Set();
|
||||
return setting ? setting.split(',') : [];
|
||||
}
|
||||
|
||||
static _setUseStatusEffects(useStatusEffects) {
|
||||
static _setUseStatusEffects(statusIds) {
|
||||
if (game.user.isGM) {
|
||||
game.settings.set(SYSTEM_RDD, "use-status-effects", StatusEffects._toSetting(useStatusEffects));
|
||||
game.settings.set(SYSTEM_RDD, "use-status-effects", StatusEffects._toSetting(statusIds));
|
||||
}
|
||||
|
||||
for (let effect of CONFIG.RDD.allEffects) {
|
||||
effect.active = effect.rdd || useStatusEffects.has(effect.id);
|
||||
effect.active = effect.rdd || statusIds.includes(effect.flags?.core?.statusId);
|
||||
}
|
||||
CONFIG.statusEffects = CONFIG.RDD.allEffects.filter(it => it.active);
|
||||
}
|
||||
|
||||
static _toSetting(useStatusEffects) {
|
||||
return Array.from(useStatusEffects).join();
|
||||
static _toSetting(statusIds) {
|
||||
return statusIds.join();
|
||||
}
|
||||
|
||||
static status(label) {
|
||||
return rddStatusEffects.find(it => it.label == label) ?? { label: label };
|
||||
static status(statusId) {
|
||||
return rddStatusEffects.find(it => it.flags?.core?.statusId == statusId);
|
||||
}
|
||||
|
||||
static demiReve() {
|
||||
return demiReveStatusEffect;
|
||||
}
|
||||
@ -106,8 +117,10 @@ class StatusEffectsSettings extends FormApplication {
|
||||
}
|
||||
|
||||
getData() {
|
||||
const used = StatusEffects._getUseStatusEffects();
|
||||
let formData = super.getData();
|
||||
formData.effects = CONFIG.RDD.allEffects;
|
||||
formData.effects = duplicate(CONFIG.RDD.allEffects);
|
||||
formData.effects.forEach(it => it.active = used.includes(it.id))
|
||||
return formData;
|
||||
}
|
||||
|
||||
@ -118,10 +131,10 @@ class StatusEffectsSettings extends FormApplication {
|
||||
let selected = StatusEffects._getUseStatusEffects();
|
||||
let isChecked = event.currentTarget.checked;
|
||||
if (isChecked) {
|
||||
selected.add(id);
|
||||
selected.push(id);
|
||||
}
|
||||
else {
|
||||
selected.delete(id);
|
||||
selected = selected.filter(it => it != id)
|
||||
}
|
||||
StatusEffects._setUseStatusEffects(selected);
|
||||
}
|
||||
|
@ -433,9 +433,9 @@ export class TMRRencontres {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async msgEchecPasseurFou(tmrData) {
|
||||
tmrData.sortReserve = tmrData.actor.system.reve.reserve.list[0];
|
||||
tmrData.sortReserve = RdDDice.rollOneOf(tmrData.actor.itemTypes['sortreserve']);
|
||||
if (tmrData.sortReserve) {
|
||||
// Passeur fou positionne sur la case d'un ort en réserve // TODO : Choisir le sort le plus loin ou au hasard
|
||||
// Passeur fou positionne sur la case d'un sort en réserve
|
||||
tmrData.newTMR = TMRUtility.getTMR(tmrData.sortReserve.coord);
|
||||
} else {
|
||||
// Déplacement aléatoire de la force du Passeur Fou
|
||||
|
@ -379,18 +379,6 @@ export class TMRUtility {
|
||||
return await RdDDice.rollOneOf(TMRUtility.filterTMR(filter))
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getSortsReserve(reserveList, coord) {
|
||||
// TODO : Gérer les têtes spéciales réserve!
|
||||
let tmrDescr = this.getTMR(coord);
|
||||
//console.log("Sort réserve : ", tmrDescr);
|
||||
if (tmrDescr.type == 'fleuve') { // Gestion de la reserve en Fleuve
|
||||
return reserveList.filter(it => TMRUtility.getTMR(it.coord).type == 'fleuve');
|
||||
}
|
||||
// Reserve sur un case "normale"
|
||||
return reserveList.filter(it => it.coord == coord);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** Returns a list of case inside a given distance
|
||||
*
|
||||
|
@ -1,5 +1,4 @@
|
||||
import { Grammar } from "../grammar.js";
|
||||
import { Misc } from "../misc.js";
|
||||
import { RdDDice } from "../rdd-dice.js";
|
||||
import { TMRUtility } from "../tmr-utility.js";
|
||||
import { tmrConstants, tmrColors, tmrTokenZIndex } from "../tmr-constants.js";
|
||||
|
@ -12,8 +12,8 @@ export class SortReserve extends Draconique {
|
||||
manualMessage() { return false }
|
||||
async onActorCreateOwned(actor, item) { }
|
||||
|
||||
code() { return 'sort' }
|
||||
tooltip(sort) { return `${sort.name}, r${sort.data.ptreve_reel}` }
|
||||
code() { return 'sortreserve' }
|
||||
tooltip(sort) { return `${sort.name}, r${sort.system.ptreve}` }
|
||||
img() { return 'systems/foundryvtt-reve-de-dragon/icons/tmr/scroll.webp' }
|
||||
|
||||
createSprite(pixiTMR) {
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,27 +1,29 @@
|
||||
{"_id":"0zRL8bOpCXNQnIR4","name":"Ruade","permission":{"default":0,"Q2G6GTdrotKzYGUC":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":4,"description":null,"categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-pietinement.webp","effects":[]}
|
||||
{"_id":"4GmpkphbsmQjvVVK","name":"Escalade","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":false,"dommages":0,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_escalade.webp","effects":[]}
|
||||
{"_id":"6DK46pyO0hzEuuUg","name":"Morsure","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":1,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-morsure.webp","effects":[]}
|
||||
{"_id":"BjqRrGtHtTzuNpZB","name":"Griffes et Crocs","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":1,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-griffes.webp","effects":[]}
|
||||
{"_id":"CYpxxf1uTa78NWR9","name":"Esquive","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"dommages":0,"iscombat":false,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_esquive.webp","effects":[]}
|
||||
{"_id":"JTuBQCPdumw3DfxH","name":"Crête","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"dommages":3,"iscombat":true,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-crete.webp","effects":[]}
|
||||
{"_id":"Kt7WlB5Ui97X211z","name":"Vol","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"dommages":0,"iscombat":false,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-vol.webp","effects":[]}
|
||||
{"_id":"LWQHz5ymNBzh6ZEr","name":"Cornes","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":2,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-corne.webp","effects":[]}
|
||||
{"_id":"NctG7suzvGE7ZZzj","name":"Bras-bouches","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":2,"description":"","categorie_parade":"epees-lourdes","isparade":true,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-brasbouche.webp","effects":[]}
|
||||
{"_id":"OzHBowOMADRwcVXR","name":"Pierre Tenue","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":2,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-pierretenue.webp","effects":[]}
|
||||
{"_id":"PCwbR6lghjydTj93","name":"Grande morsure","permission":{"default":0,"Q2G6GTdrotKzYGUC":3},"type":"competencecreature","data":{"categorie_parade":"","niveau":0,"carac_value":0,"iscombat":true,"isparade":false,"dommages":2,"description":"","default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-morsure.webp","effects":[]}
|
||||
{"_id":"PrVuVpwuYaZtwRUi","name":"Piétinement","permission":{"default":0,"Q2G6GTdrotKzYGUC":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":4,"description":null,"categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-pietinement.webp","effects":[]}
|
||||
{"_id":"RAnasKnoA3OQgwfv","name":"Pinces","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":3,"description":"","categorie_parade":"epees-lourdes","isparade":true,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-pinces.webp","effects":[]}
|
||||
{"_id":"XgfRxSj8Ty1d3JFM","name":"Mandibules","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":2,"description":"","carac-value":null,"categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-mandibules.webp","effects":[]}
|
||||
{"_id":"Zpl2Bi451vB3r91W","name":"Coup de pied","permission":{"default":0,"Q2G6GTdrotKzYGUC":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":3,"description":null,"categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-coup_de_pied.webp","effects":[]}
|
||||
{"_id":"efl1HdDSKpBfImQ1","name":"Pierre Lancée","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":1,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-pierrelancee.webp","effects":[]}
|
||||
{"_id":"h9ASt4vrvEgxfj7j","name":"Tronçonneuse","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":10,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-tronconneuse.webp","effects":[]}
|
||||
{"_id":"jhua9kkCs55OV7Yl","name":"Grandes griffes","permission":{"default":0,"Q2G6GTdrotKzYGUC":3},"type":"competencecreature","data":{"categorie_parade":"sans-armes","niveau":0,"carac_value":0,"iscombat":true,"isparade":true,"dommages":2,"description":"","default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-griffes.webp","effects":[]}
|
||||
{"_id":"lzEdMrKXbOYrWG5S","name":"Vigilance","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":false,"dommages":0,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_vigilance.webp","effects":[]}
|
||||
{"_id":"ndNshntOYb1JFNqi","name":"Serres","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":2,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-serres.webp","effects":[]}
|
||||
{"_id":"os88Rsp7mBkahqmh","name":"Bec","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":0,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-beak.webp","effects":[]}
|
||||
{"_id":"qilRzXpVaGceNmQp","name":"Dague","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":true,"dommages":1,"description":"","categorie_parade":"dagues","isparade":true,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_dague.webp","effects":[]}
|
||||
{"_id":"qrd9AoZzFgyzFBxz","name":"Griffes","permission":{"default":0,"Q2G6GTdrotKzYGUC":3},"type":"competencecreature","data":{"categorie_parade":"sans-armes","niveau":0,"carac_value":0,"iscombat":true,"isparade":true,"dommages":1,"description":"","default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-griffes.webp","effects":[]}
|
||||
{"_id":"sUdXhpuVVOAlcVpo","name":"Pickpocket","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":false,"dommages":0,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_pickpocket.webp","effects":[]}
|
||||
{"_id":"shsUV8UpU18c0RJK","name":"Course","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":false,"dommages":0,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_course.webp","effects":[]}
|
||||
{"_id":"yBUVTjTXYfwvzusb","name":"Saut","permission":{"default":0,"Q2G6GTdrotKzYGUC":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":false,"dommages":0,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp","effects":[]}
|
||||
{"_id":"yDHZfK4RmwQW4YaW","name":"Discrétion","permission":{"default":0,"Q4cUvqxCxMoTJXDL":3},"type":"competencecreature","data":{"niveau":0,"carac_value":0,"iscombat":false,"dommages":0,"description":"","categorie_parade":"","isparade":false,"default_diffLibre":0},"flags":{},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_discretion.webp","effects":[]}
|
||||
{"_id":"0zRL8bOpCXNQnIR4","name":"Ruade","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.0zRL8bOpCXNQnIR4"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-pietinement.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":4,"description":null,"descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702692,"modifiedTime":1663625011172,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"4GmpkphbsmQjvVVK","name":"Escalade","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.4GmpkphbsmQjvVVK"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_escalade.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":false,"isparade":false,"ispossession":false,"dommages":0,"description":"","descriptionmj":""},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702692,"modifiedTime":1663625011172,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"6DK46pyO0hzEuuUg","name":"Morsure","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.6DK46pyO0hzEuuUg"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-morsure.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":1,"description":"","descriptionmj":"","categorie":"generale","isnaturelle":true},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702692,"modifiedTime":1663625011172,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"name":"Possession","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-entites.c0I93Q53i4ZmxpyT"}},"img":"systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp","effects":[],"system":{"categorie_parade":"","niveau":2,"default_diffLibre":0,"carac_value":14,"iscombat":true,"isparade":false,"ispossession":true,"dommages":0,"description":"<p>L'entité tente de prendre possession du corps de sa victime.</p>","descriptionmj":"","categorie":"melee"},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624948267,"modifiedTime":1663625011162,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"9u16zxXRurCtxuOX","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
||||
{"_id":"BjqRrGtHtTzuNpZB","name":"Griffes et Crocs","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.BjqRrGtHtTzuNpZB"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-griffes.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":1,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702692,"modifiedTime":1663625011172,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"CYpxxf1uTa78NWR9","name":"Esquive","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.CYpxxf1uTa78NWR9"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_esquive.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":false,"isparade":false,"ispossession":false,"dommages":0,"description":"","descriptionmj":""},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702692,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"JTuBQCPdumw3DfxH","name":"Crête","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.JTuBQCPdumw3DfxH"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-crete.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":3,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702693,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"Kt7WlB5Ui97X211z","name":"Vol","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.Kt7WlB5Ui97X211z"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-vol.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":false,"isparade":false,"ispossession":false,"dommages":0,"description":"","descriptionmj":""},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702693,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"LWQHz5ymNBzh6ZEr","name":"Cornes","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.LWQHz5ymNBzh6ZEr"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-corne.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":2,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702693,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"NctG7suzvGE7ZZzj","name":"Bras-bouches","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.NctG7suzvGE7ZZzj"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-brasbouche.webp","effects":[],"system":{"categorie_parade":"epees-lourdes","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":true,"ispossession":false,"dommages":2,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702693,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"OzHBowOMADRwcVXR","name":"Pierre Tenue","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.OzHBowOMADRwcVXR"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-pierretenue.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":2,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":false},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702693,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"PCwbR6lghjydTj93","name":"Grande morsure","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.PCwbR6lghjydTj93"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-morsure.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":2,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702693,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"PrVuVpwuYaZtwRUi","name":"Piétinement","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.PrVuVpwuYaZtwRUi"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-pietinement.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":4,"description":null,"descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702693,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"RAnasKnoA3OQgwfv","name":"Pinces","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.RAnasKnoA3OQgwfv"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-pinces.webp","effects":[],"system":{"categorie_parade":"epees-lourdes","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":true,"ispossession":false,"dommages":3,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702694,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"XgfRxSj8Ty1d3JFM","name":"Mandibules","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.XgfRxSj8Ty1d3JFM"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-mandibules.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":2,"description":"","descriptionmj":"","carac-value":null,"categorie":"generale","isnaturelle":true},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702694,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"Zpl2Bi451vB3r91W","name":"Coup de pied","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.Zpl2Bi451vB3r91W"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-coup_de_pied.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":3,"description":null,"descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702694,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"name":"Possession","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-entites.c0I93Q53i4ZmxpyT"}},"img":"systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp","effects":[],"system":{"categorie_parade":"","niveau":2,"default_diffLibre":0,"carac_value":14,"iscombat":true,"isparade":false,"ispossession":true,"dommages":0,"description":"<p>L'entité tente de prendre possession du corps de sa victime.</p>","descriptionmj":"","categorie":"draconic"},"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624976822,"modifiedTime":1663625011162,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"},"_id":"duVgxI3Cdko0KzAj","folder":null,"sort":0,"ownership":{"default":0,"Hp9ImM4o9YRTSdfu":3}}
|
||||
{"_id":"efl1HdDSKpBfImQ1","name":"Pierre Lancée","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.efl1HdDSKpBfImQ1"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-pierrelancee.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":1,"description":"","descriptionmj":"","categorie":"lancer","isnaturelle":false},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702694,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"h9ASt4vrvEgxfj7j","name":"Tronçonneuse","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.h9ASt4vrvEgxfj7j"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-tronconneuse.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":10,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702694,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"jhua9kkCs55OV7Yl","name":"Grandes griffes","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.jhua9kkCs55OV7Yl"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-griffes.webp","effects":[],"system":{"categorie_parade":"sans-armes","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":true,"ispossession":false,"dommages":2,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702694,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"lzEdMrKXbOYrWG5S","name":"Vigilance","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.lzEdMrKXbOYrWG5S"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_vigilance.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":false,"isparade":false,"ispossession":false,"dommages":0,"description":"","descriptionmj":""},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702694,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"ndNshntOYb1JFNqi","name":"Serres","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.ndNshntOYb1JFNqi"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-serres.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":2,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702694,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"os88Rsp7mBkahqmh","name":"Bec","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.os88Rsp7mBkahqmh"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-beak.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":false,"ispossession":false,"dommages":0,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702695,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"qilRzXpVaGceNmQp","name":"Dague","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.qilRzXpVaGceNmQp"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_dague.webp","effects":[],"system":{"categorie_parade":"dagues","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":true,"ispossession":false,"dommages":1,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":false},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702695,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"qrd9AoZzFgyzFBxz","name":"Griffes","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.qrd9AoZzFgyzFBxz"}},"img":"systems/foundryvtt-reve-de-dragon/icons/compcreature-griffes.webp","effects":[],"system":{"categorie_parade":"sans-armes","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":true,"isparade":true,"ispossession":false,"dommages":1,"description":"","descriptionmj":"","categorie":"melee","isnaturelle":true},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702695,"modifiedTime":1663625011173,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"sUdXhpuVVOAlcVpo","name":"Pickpocket","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.sUdXhpuVVOAlcVpo"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_pickpocket.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":false,"isparade":false,"ispossession":false,"dommages":0,"description":"","descriptionmj":""},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702695,"modifiedTime":1663625011174,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"shsUV8UpU18c0RJK","name":"Course","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.shsUV8UpU18c0RJK"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_course.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":false,"isparade":false,"ispossession":false,"dommages":0,"description":"","descriptionmj":""},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702695,"modifiedTime":1663625011174,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"yBUVTjTXYfwvzusb","name":"Saut","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.yBUVTjTXYfwvzusb"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_saut.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":false,"isparade":false,"ispossession":false,"dommages":0,"description":"","descriptionmj":"","categorie":"generale"},"ownership":{"default":0,"Q2G6GTdrotKzYGUC":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702695,"modifiedTime":1663625011174,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
{"_id":"yDHZfK4RmwQW4YaW","name":"Discrétion","type":"competencecreature","flags":{"core":{"sourceId":"Compendium.foundryvtt-reve-de-dragon.competences-creatures.yDHZfK4RmwQW4YaW"}},"img":"systems/foundryvtt-reve-de-dragon/icons/competence_discretion.webp","effects":[],"system":{"categorie_parade":"","niveau":0,"default_diffLibre":0,"carac_value":0,"iscombat":false,"isparade":false,"ispossession":false,"dommages":0,"description":"","descriptionmj":""},"ownership":{"default":0,"Q4cUvqxCxMoTJXDL":3},"folder":null,"sort":0,"_stats":{"systemId":"foundryvtt-reve-de-dragon","systemVersion":"10.0.16","coreVersion":"10.285","createdTime":1663624702695,"modifiedTime":1663625011174,"lastModifiedBy":"Hp9ImM4o9YRTSdfu"}}
|
||||
|
File diff suppressed because one or more lines are too long
@ -1146,9 +1146,16 @@ ul, li {
|
||||
|
||||
}
|
||||
|
||||
#sidebar #sidebar-tabs i.fa-comments:before, #sidebar #sidebar-tabs i.fa-fist-raised:before, #sidebar #sidebar-tabs i.fa-users:before, #sidebar #sidebar-tabs i.fa-map:before, #sidebar #sidebar-tabs i.fa-suitcase:before, #sidebar #sidebar-tabs i.fa-book-open:before, #sidebar #sidebar-tabs i.fa-th-list:before, #sidebar #sidebar-tabs i.fa-music:before, #sidebar #sidebar-tabs i.fa-atlas:before, #sidebar #sidebar-tabs i.fa-cogs:before {content: "";}
|
||||
#sidebar #sidebar-tabs i:is(
|
||||
.fa-comments, .fa-fist-raised, .fa-swords,
|
||||
.fa-users, .fa-user, .fa-map, .fa-suitcase,
|
||||
.fa-book-open, .fa-th-list, .fa-music,
|
||||
.fa-atlas,.fa-cogs
|
||||
):before {content: "";}
|
||||
#sidebar #sidebar-tabs i.fa-comments {background: url("img/ui/icon_sidebar_chat.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-fist-raised {background: url("img/ui/icon_sidebar_fight.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-swords {background: url("img/ui/icon_sidebar_fight.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-user {background: url("img/ui/icon_sidebar_actor.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-users {background: url("img/ui/icon_sidebar_actor.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-map {background: url("img/ui/icon_sidebar_scene.svg") no-repeat;}
|
||||
#sidebar #sidebar-tabs i.fa-suitcase {background: url("img/ui/icon_sidebar_item.svg") no-repeat;}
|
||||
|
@ -34,9 +34,10 @@
|
||||
],
|
||||
"url": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/",
|
||||
"license": "LICENSE.txt",
|
||||
"version": "10.0.13",
|
||||
"version": "10.0.18",
|
||||
"compatibility": {
|
||||
"minimum": "10"
|
||||
"minimum": "10",
|
||||
"verified": "10.286"
|
||||
},
|
||||
"esmodules": [
|
||||
"module/rdd-main.js"
|
||||
@ -332,7 +333,7 @@
|
||||
],
|
||||
"socket": true,
|
||||
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v10/system.json",
|
||||
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.0.13.zip",
|
||||
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.0.18.zip",
|
||||
"gridDistance": 1,
|
||||
"gridUnits": "m",
|
||||
"primaryTokenAttribute": "sante.vie",
|
||||
|
@ -576,7 +576,7 @@
|
||||
"types": ["objet", "arme", "armure", "conteneur", "competence", "sort", "herbe", "ingredient", "livre", "potion", "munition", "rencontresTMR", "queue", "ombre", "souffle",
|
||||
"tete", "competencecreature", "tarot", "monnaie", "nombreastral", "tache", "meditation", "casetmr", "recettealchimique",
|
||||
"musique", "chant", "danse", "jeu", "recettecuisine", "maladie", "poison", "oeuvre", "nourritureboisson", "signedraconique", "gemme",
|
||||
"possession" ],
|
||||
"possession", "sortreserve" ],
|
||||
"possession": {
|
||||
"typepossession": "",
|
||||
"possede": false,
|
||||
@ -679,9 +679,10 @@
|
||||
"categorie_parade": "",
|
||||
"niveau": 0,
|
||||
"default_diffLibre": 0,
|
||||
"categorie": "",
|
||||
"carac_value": 0,
|
||||
"iscombat": false,
|
||||
"isparade": false,
|
||||
"isnaturelle": true,
|
||||
"ispossession": false,
|
||||
"dommages": 0,
|
||||
"description": "Compétence : ...",
|
||||
@ -889,7 +890,7 @@
|
||||
"descriptionmj": ""
|
||||
},
|
||||
"oeuvre": {
|
||||
"default_carac": "",
|
||||
"default_carac": "",
|
||||
"competence": "",
|
||||
"niveau": 0,
|
||||
"reference": "",
|
||||
@ -943,6 +944,14 @@
|
||||
},
|
||||
"description": "",
|
||||
"descriptionmj": ""
|
||||
},
|
||||
"sortreserve": {
|
||||
"sortid" : "",
|
||||
"draconic": "",
|
||||
"coord": "",
|
||||
"ptreve": 0,
|
||||
"heurecible": "",
|
||||
"echectotal": false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
{{#if calc.surprise}}{{calc.surprise}}! {{/if}}
|
||||
{{#if effects}}
|
||||
{{#each effects as |effect key|}}
|
||||
<span class="active-effect" data-id="{{effect._id}}">
|
||||
<span class="active-effect" data-effect="{{effect.flags.core.statusId}}">
|
||||
<img class="button-effect-img delete-active-effect" src="{{effect.icon}}" alt="{{localize effect.label}}" width="24" height="24" />
|
||||
</span>
|
||||
{{/each}}
|
||||
|
15
templates/actor-sheet-item-queue.html
Normal file
15
templates/actor-sheet-item-queue.html
Normal file
@ -0,0 +1,15 @@
|
||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{queue._id}}">
|
||||
<img class="sheet-competence-img" src="{{queue.img}}" />
|
||||
<span class="display-label flex-grow">
|
||||
{{#if (eq queue.type 'ombre')}}
|
||||
<img class="sheet-competence-img" src="systems/foundryvtt-reve-de-dragon/icons/competence_thanatos.webp" />
|
||||
{{/if}}
|
||||
<a>{{queue.name}}</a>
|
||||
</span>
|
||||
<div class="item-controls">
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
{{#if queue.system.refoulement}}
|
||||
<a class="item-action">Refouler</a>
|
||||
{{/if}}
|
||||
</div>
|
||||
</li>
|
@ -1,4 +1,5 @@
|
||||
<li class="item flexrow list-item" data-item-id="{{oeuvre._id}}">
|
||||
<img class="sheet-competence-img" src="{{oeuvre.img}}" />
|
||||
<span>{{upperFirst typeOeuvre}}</span>
|
||||
<span class="competence-title {{classOeuvre}}">
|
||||
<a>{{oeuvre.name}} (niveau {{oeuvre.system.niveau}})</a>
|
||||
|
15
templates/actor-sheet-queues.html
Normal file
15
templates/actor-sheet-queues.html
Normal file
@ -0,0 +1,15 @@
|
||||
{{#if (or queues.length ombres.length)}}
|
||||
<h3>
|
||||
{{#if queues.length}}Queues de Dragon{{/if}}
|
||||
{{#if (and queues.length ombres.length)}} et {{/if}}
|
||||
{{#if ombres.length}}Ombres de Thanatos{{/if}}
|
||||
:</h3>
|
||||
<ul class="flex-group-left">
|
||||
{{#each queues as |queue key|}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-item-queue.html" queue=queue key=key}}
|
||||
{{/each}}
|
||||
{{#each ombres as |ombre key|}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-item-queue.html" queue=ombre key=key}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
@ -384,7 +384,9 @@
|
||||
<h3>Tâches</h3><a class='creer-tache'>Créer une nouvelle Tâche</a>
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each taches as |tache id|}}
|
||||
<li class="item flexrow list-item" data-item-id="{{tache._id}}"><span class="competence-title tache-label"><a>{{tache.name}}
|
||||
<li class="item flexrow list-item" data-item-id="{{tache._id}}">
|
||||
<img class="sheet-competence-img" src="{{tache.img}}" />
|
||||
<span class="competence-title tache-label"><a>{{tache.name}}
|
||||
({{tache.system.points_de_tache_courant}}{{#if
|
||||
(or @root.options.isGM (not tache.system.cacher_points_de_tache))
|
||||
}}/{{tache.system.points_de_tache}}{{/if}})</a></span>
|
||||
@ -462,28 +464,21 @@
|
||||
</li>
|
||||
{{/if}}
|
||||
<li class="item flexrow">
|
||||
<span class="competence-label flex-shrink">Demi rêve :
|
||||
{{#if options.isGM}}
|
||||
<span class="competence-label flex-shrink">Demi rêve :
|
||||
<span>{{caseTmr-label system.reve.tmrpos.coord}}</span>
|
||||
</span>
|
||||
<span>
|
||||
{{caseTmr-label system.reve.tmrpos.coord}}
|
||||
</span><span>
|
||||
<input class="competence-value" type="text" name="system.reve.tmrpos.coord" value="{{system.reve.tmrpos.coord}}" data-dtype="String"/>
|
||||
</span>
|
||||
|
||||
{{else}}
|
||||
<span class="competence-label flex-shrink">Demi rêve :
|
||||
{{#unless hautreve.cacheTMR}}
|
||||
<span>{{caseTmr-label system.reve.tmrpos.coord}}</span>
|
||||
{{/unless}}
|
||||
</span>
|
||||
<span>
|
||||
{{#if hautreve.cacheTMR}}
|
||||
{{else if hautreve.cacheTMR}}
|
||||
{{caseTmr-type system.reve.tmrpos.coord}}
|
||||
</span><span>
|
||||
??
|
||||
{{else}}
|
||||
{{else}}
|
||||
{{caseTmr-label system.reve.tmrpos.coord}}
|
||||
</span><span>
|
||||
{{system.reve.tmrpos.coord}}
|
||||
{{/if}}
|
||||
</span>
|
||||
{{/if}}
|
||||
</span>
|
||||
</li>
|
||||
{{/if}}
|
||||
<li class="item flexrow">
|
||||
@ -510,38 +505,14 @@
|
||||
</div>
|
||||
<hr>
|
||||
{{!-- Queues, Souffles, Tetes, Ombre --}}
|
||||
{{#if queues.length}}
|
||||
<h3>Queues:</h3>
|
||||
<ul class="flex-group-left">
|
||||
{{#each queues as |queue key|}}
|
||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{queue._id}}">
|
||||
<span class="display-label flex-grow"><a data-item-id="{{queue._id}}">{{queue.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
{{#if ombres.length}}
|
||||
<h3>Ombres de Thanatos:</h3>
|
||||
<ul class="item-list">
|
||||
{{#each ombres as |ombre key|}}
|
||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{ombre._id}}">
|
||||
<span class="display-label flex-grow"><a data-item-id="{{ombre._id}}">{{ombre.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-sheet-queues.html"}}
|
||||
{{#if souffles.length}}
|
||||
<h3>Souffles:</h3>
|
||||
<ul class="item-list">
|
||||
{{#each souffles as |souffle key|}}
|
||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{souffle._id}}">
|
||||
<span class="display-label flex-grow"><a data-item-id="{{souffle._id}}">{{souffle.name}}</a></span>
|
||||
<img class="sheet-competence-img" src="{{souffle.img}}" />
|
||||
<span class="display-label flex-grow"><a>{{souffle.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
@ -554,7 +525,8 @@
|
||||
<ul class="item-list">
|
||||
{{#each tetes as |tete key|}}
|
||||
<li class="item flexrow" data-attribute={{key}} data-item-id="{{tete._id}}">
|
||||
<span class="display-label flex-grow"><a data-item-id="{{tete._id}}">{{tete.name}}</a></span>
|
||||
<img class="sheet-competence-img" src="{{tete.img}}" />
|
||||
<span class="display-label flex-grow"><a>{{tete.name}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-delete" title="Delete Item"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
@ -563,12 +535,13 @@
|
||||
</ul>
|
||||
{{/if}}
|
||||
{{#if system.attributs.hautrevant.value}}
|
||||
{{#if (and options.isGM signesdraconiques.length)}}
|
||||
<h3>Signes draconiques</h3>
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each signesdraconiques as |signe key|}}
|
||||
<li class="item list-item flexrow" data-item-id="{{signe._id}}" data-attribute="{{key}}">
|
||||
<span class="display-label flex-grow"> <a data-item-id="{{signe._id}}">{{signe.name}}</a></span>
|
||||
{{#if (and options.isGM signesdraconiques.length)}}
|
||||
<h3>Signes draconiques</h3>
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each signesdraconiques as |signe key|}}
|
||||
<li class="item list-item flexrow" data-item-id="{{signe._id}}" data-attribute="{{key}}">
|
||||
<img class="sheet-competence-img" src="{{signe.img}}" />
|
||||
<span class="display-label flex-grow"><a>{{signe.name}}</a></span>
|
||||
<span class="flex-shrink">{{signe.system.difficulte}}</span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-delete" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
@ -576,9 +549,9 @@
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
|
||||
{{#if hautreve.rencontres.length}}
|
||||
{{/if}}
|
||||
|
||||
{{#if hautreve.rencontres.length}}
|
||||
<h3>Rencontres présentes:</h3>
|
||||
<ul class="item-list">
|
||||
{{#each hautreve.rencontres as |rencontre key|}}
|
||||
@ -594,29 +567,40 @@
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
{{#if hautreve.sortsReserve.length}}
|
||||
{{/if}}
|
||||
{{#if sortsReserve.length}}
|
||||
<h3>Sorts en Réserve:</h3>
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each hautreve.sortsReserve as |reserve key|}}
|
||||
<li class="item list-item flexrow" data-item-id="{{reserve._id}}" data-attribute="{{key}}">
|
||||
<img class="sheet-competence-img" src="{{reserve.sort.img}}" />
|
||||
<span class="display-label">{{reserve.sort.name}} r{{reserve.sort.system.ptreve_reel}}</span>
|
||||
<span>{{reserve.coord}} - {{caseTmr-label reserve.coord}}</span>
|
||||
{{#each sortsReserve as |sort key|}}
|
||||
<li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}">
|
||||
<img class="sheet-competence-img" src="{{sort.img}}" />
|
||||
<span class="display-label"><a>{{#if sort.system.echectotal}}Echec total: {{/if}}{{sort.name}} r{{sort.system.ptreve}}</a></span>
|
||||
<span>{{sort.system.coord}} - {{caseTmr-label sort.system.coord}}</span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-delete flex-shrink" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
{{#each hautreve.sortsReserve as |reserve key|}}
|
||||
<li class="item list-item flexrow" data-index="{{key}}">
|
||||
<img class="sheet-competence-img" src="{{reserve.img}}" />
|
||||
<span class="display-label">{{reserve.sort.name}} r{{reserve.sort.system.ptreve_reel}}</span>
|
||||
<span>{{reserve.coord}} - {{caseTmr-label reserve.coord}}</span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="delete-sort-reserve flex-shrink" title="Supprimer"><i class="fas fa-trash"></i></a>
|
||||
</div>
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
<h3>Sorts:</h3>
|
||||
<ul class="item-list alterne-list">
|
||||
{{#each sorts as |sort key|}}
|
||||
<li class="item list-item flexrow" data-item-id="{{sort._id}}" data-attribute="{{key}}">
|
||||
<img class="sheet-competence-img" src="{{sort.img}}" />
|
||||
<span class="display-label flex-grow">
|
||||
<a data-item-id="{{sort._id}}">{{sort.name}}
|
||||
- {{#if sort.system.caseTMRspeciale}}{{sort.system.caseTMRspeciale}}{{else}}{{upperFirst sort.system.caseTMR}}{{/if}}
|
||||
@ -634,6 +618,7 @@
|
||||
<ul class="item-list">
|
||||
{{#each meditations as |meditation key|}}
|
||||
<li class="item flexrow" data-item-id="{{meditation._id}}" data-attribute="{{key}}">
|
||||
<img class="sheet-competence-img" src="{{meditation.img}}" />
|
||||
<span class="meditation-label flex-grow"><a data-item-id="{{meditation._id}}">{{meditation.name}} - {{meditation.system.competence}}</a></span>
|
||||
<div class="item-controls flex-shrink">
|
||||
<a class="item-edit" title="Editer"><i class="fas fa-edit"></i></a>
|
||||
@ -642,12 +627,13 @@
|
||||
</li>
|
||||
{{/each}}
|
||||
</ul>
|
||||
<hr>
|
||||
<hr>
|
||||
{{#if hautreve.casesTmr}}
|
||||
<h3>Cases Spéciales:</h3>
|
||||
<ul class="item-list">
|
||||
{{#each hautreve.casesTmr as |casetmr key|}}
|
||||
<li class="item flexrow" data-item-id="{{casetmr._id}}" data-attribute="{{key}}">
|
||||
<img class="sheet-competence-img" src="{{casetmr.img}}" />
|
||||
<span class="display-label"><a data-item-id="{{casetmr._id}}">{{casetmr.name}}</a></span>
|
||||
<span>{{casetmr.system.coord}} - {{caseTmr-label casetmr.system.coord}}</span>
|
||||
<div class="item-controls flex-shrink">
|
||||
|
@ -34,7 +34,7 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Minutes</label>
|
||||
<label for="minutesRelative">Minutes</label>
|
||||
<select name="minutesRelative" id="minutesRelative" data-dtype="String">
|
||||
{{#select minutesRelative}}
|
||||
{{#each minutesOptions as |key|}}
|
||||
|
@ -50,10 +50,11 @@
|
||||
<br>
|
||||
{{/if}}
|
||||
{{#if (ne attaqueCategorie 'tir')}}
|
||||
{{#each esquives as |esq key|}}
|
||||
{{#each esquives as |esquive key|}}
|
||||
<a class='chat-card-button' id='esquiver-button' data-attackerId='{{../attackerId}}' data-defenderTokenId='{{../defenderTokenId}}'
|
||||
data-compid='{{esq._id}}' data-competence='{{esq.name}}'>
|
||||
{{esq.name}} à {{../diffLibre}} {{#if esq.usage}} (Utilisations : {{esq.usage}}){{/if}}
|
||||
data-compid='{{esquive._id}}' data-competence='{{esquive.name}}'>
|
||||
{{log 'esquive' esquive}}
|
||||
{{esquive.name}} à {{../diffLibre}} {{#if esquive.system.nbUsage}} (Utilisations : {{esquive.system.nbUsage}}){{/if}}
|
||||
</a>
|
||||
<br>
|
||||
{{/each}}
|
||||
|
@ -1,6 +1,6 @@
|
||||
<form class="dialog-roll-sort">
|
||||
<h2>Lancer le <span class="sort-ou-rituel">{{#if sort.system.isrituel}}rituel{{else}}sort{{/if}}</span>:
|
||||
<select name="sort" class="roll-sort flex-grow" data-dtype="String">
|
||||
<h2 class="flexrow">Lancer le {{#if sort.system.isrituel}}rituel{{else}}sort{{/if}}:
|
||||
<select name="sort" class="roll-sort" data-dtype="String">
|
||||
{{#select sort}}
|
||||
{{#each sortList as |sort key|}}
|
||||
<option value={{key}}>{{this.name}} - {{#if this.system.caseTMRspeciale}} {{this.system.caseTMRspeciale}}
|
||||
|
6
templates/header-item.html
Normal file
6
templates/header-item.html
Normal file
@ -0,0 +1,6 @@
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
@ -1,10 +1,5 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
@ -1,35 +1,29 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Protection</label>
|
||||
<input class="attribute-value" type="text" name="system.protection" value="{{system.protection}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Encombrement </label>
|
||||
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Détérioration</label>
|
||||
<input class="attribute-value" type="text" name="system.deterioration" value="{{system.deterioration}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Malus Armure </label>
|
||||
<input class="attribute-value" type="text" name="system.malus" value="{{system.malus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group item-cout">
|
||||
<label for="xp">Prix (sols) </label>
|
||||
<input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Protection</label>
|
||||
<input class="attribute-value" type="text" name="system.protection" value="{{system.protection}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Encombrement </label>
|
||||
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Détérioration</label>
|
||||
<input class="attribute-value" type="text" name="system.deterioration" value="{{system.deterioration}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Malus Armure </label>
|
||||
<input class="attribute-value" type="text" name="system.malus" value="{{system.malus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group item-cout">
|
||||
<label for="xp">Prix (sols) </label>
|
||||
<input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,27 +1,20 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="niveau">Coordonnées TMR </label>
|
||||
<input class="attribute-value" type="text" name="system.coord" value="{{system.coord}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="niveau">Mode spécifique</label>
|
||||
<select name="system.specific" id="specific" data-dtype="String">
|
||||
{{#select system.specific}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/casetmr-specific-list.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="niveau">Coordonnées TMR </label>
|
||||
<input class="attribute-value" type="text" name="system.coord" value="{{system.coord}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="niveau">Mode spécifique</label>
|
||||
<select name="system.specific" id="specific" data-dtype="String">
|
||||
{{#select system.specific}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/casetmr-specific-list.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,24 +1,16 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Niveau</label>
|
||||
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Référence / Auteur</label>
|
||||
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Niveau</label>
|
||||
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Référence / Auteur</label>
|
||||
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,37 +1,46 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="system.categorie">Catégorie</label>
|
||||
<select name="system.categorie" class="categorie" data-dtype="String">
|
||||
{{#select system.categorie}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-categorie-competence.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="niveau">Valeur de Caractéristique </label>
|
||||
<input class="attribute-value" type="text" name="system.carac_value" value="{{system.carac_value}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="niveau">Niveau </label>
|
||||
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="default_diffLibre">Difficulté libre par défaut</label>
|
||||
<input class="attribute-value" type="text" name="system.default_diffLibre" value="{{system.default_diffLibre}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.ispossession">Attaque de possession</label>
|
||||
<input class="attribute-value" type="checkbox" name="system.ispossession" {{#if system.ispossession}}checked{{/if}}/>
|
||||
</div>
|
||||
{{#unless system.ispossession}}
|
||||
<div class="form-group">
|
||||
<label for="system.iscombat">Compétence d'attaque</label>
|
||||
<input class="attribute-value" type="checkbox" name="system.iscombat" {{#if system.iscombat}}checked{{/if}}/>
|
||||
</div>
|
||||
{{#if system.iscombat}}
|
||||
<div class="form-group">
|
||||
<label for="niveau">Niveau </label>
|
||||
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
|
||||
<label for="system.isnaturelle">Arme naturelle</label>
|
||||
<input class="attribute-value" type="checkbox" name="system.isnaturelle" {{#if system.isnaturelle}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="niveau">Valeur de Caractéristique </label>
|
||||
<input class="attribute-value" type="text" name="system.carac_value" value="{{system.carac_value}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="default_diffLibre">Difficulté libre par défaut</label>
|
||||
<input class="attribute-value" type="text" name="system.default_diffLibre" value="{{system.default_diffLibre}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Arme ? </label>
|
||||
<input class="attribute-value" type="checkbox" name="system.iscombat" {{#if system.iscombat}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Parade ? </label>
|
||||
<input class="attribute-value" type="checkbox" name="system.isparade" {{#if system.isparade}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Possession ? </label>
|
||||
<input class="attribute-value" type="checkbox" name="system.ispossession" {{#if system.ispossession}}checked{{/if}}/>
|
||||
<label for="niveau">Dommages (+dom)</label>
|
||||
<input class="attribute-value" type="text" name="system.dommages" value="{{system.dommages}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="form-group">
|
||||
<label>Catégorie parade </label>
|
||||
<select name="system.categorie_parade" id="categorie_parade" data-dtype="String">
|
||||
@ -40,13 +49,8 @@
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="niveau">Dommages (+dom), si applicable </label>
|
||||
<input class="attribute-value" type="text" name="system.dommages" value="{{system.dommages}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{/unless}}
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,47 +1,39 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Encombrement </label>
|
||||
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Capacite (points d'Encombrement portable)</label>
|
||||
<input class="attribute-value" type="text" name="system.capacite" value="{{system.capacite}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Qualité</label>
|
||||
<input class="attribute-value" type="text" name="system.qualite" value="{{system.qualite}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group item-cout">
|
||||
<label for="xp">Prix (sols) </label>
|
||||
<input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{#if isOwned}}
|
||||
<div class="flexcol">
|
||||
<span><label>Contenu : </label></span>
|
||||
<ul class="item-list alterne-list">
|
||||
<li class="competence-header flexrow">
|
||||
<span class="equipement-nom">Nom</span>
|
||||
<span class="equipement-detail">Q.</span>
|
||||
<span class="equipement-detail">Enc.</span>
|
||||
<span class="equipement-actions">Actions</span>
|
||||
</li>
|
||||
{{buildContenu this}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Encombrement </label>
|
||||
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Capacite (points d'Encombrement portable)</label>
|
||||
<input class="attribute-value" type="text" name="system.capacite" value="{{system.capacite}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Qualité</label>
|
||||
<input class="attribute-value" type="text" name="system.qualite" value="{{system.qualite}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group item-cout">
|
||||
<label for="xp">Prix (sols) </label>
|
||||
<input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{#if isOwned}}
|
||||
<div class="flexcol">
|
||||
<span><label>Contenu : </label></span>
|
||||
<ul class="item-list alterne-list">
|
||||
<li class="competence-header flexrow">
|
||||
<span class="equipement-nom">Nom</span>
|
||||
<span class="equipement-detail">Q.</span>
|
||||
<span class="equipement-detail">Enc.</span>
|
||||
<span class="equipement-actions">Actions</span>
|
||||
</li>
|
||||
{{buildContenu this}}
|
||||
</ul>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,41 +1,33 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Type</label>
|
||||
<select name="system.type" data-dtype="String">
|
||||
{{#select system.type}}
|
||||
<option value="recreative">Récréative</option>
|
||||
<option value="soliste">Soliste</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Agilité ?</label>
|
||||
<input class="attribute-value" type="checkbox" name="system.agilite" {{#if system.agilite}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Apparence ?</label>
|
||||
<input class="attribute-value" type="checkbox" name="system.apparence" {{#if system.apparence}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Niveau</label>
|
||||
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Référence / Auteur</label>
|
||||
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Type</label>
|
||||
<select name="system.type" data-dtype="String">
|
||||
{{#select system.type}}
|
||||
<option value="recreative">Récréative</option>
|
||||
<option value="soliste">Soliste</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Agilité ?</label>
|
||||
<input class="attribute-value" type="checkbox" name="system.agilite" {{#if system.agilite}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Apparence ?</label>
|
||||
<input class="attribute-value" type="checkbox" name="system.apparence" {{#if system.apparence}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Niveau</label>
|
||||
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Référence / Auteur</label>
|
||||
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,11 +1,5 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
@ -50,7 +44,5 @@
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
</form>
|
@ -1,10 +1,5 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||
</div>
|
||||
</header>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
@ -48,7 +43,5 @@
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
</form>
|
@ -1,39 +1,32 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Type</label>
|
||||
<select name="system.type" data-dtype="String">
|
||||
{{#select system.type}}
|
||||
<option value="adressehasard">Adresse/Hasard</option>
|
||||
<option value="de">Dés</option>
|
||||
<option value="carte">Cartes</option>
|
||||
<option value="reflexion">Reflexion</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Base</label>
|
||||
<input class="attribute-value" type="text" name="system.base" value="{{system.base}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Caractéristique/Compétence</label>
|
||||
<input class="attribute-value" type="text" name="system.caraccomp" value="{{system.caraccomp}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Référence / Auteur</label>
|
||||
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Type</label>
|
||||
<select name="system.type" data-dtype="String">
|
||||
{{#select system.type}}
|
||||
<option value="adressehasard">Adresse/Hasard</option>
|
||||
<option value="de">Dés</option>
|
||||
<option value="carte">Cartes</option>
|
||||
<option value="reflexion">Reflexion</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Base</label>
|
||||
<input class="attribute-value" type="text" name="system.base" value="{{system.base}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Caractéristique/Compétence</label>
|
||||
<input class="attribute-value" type="text" name="system.caraccomp" value="{{system.caraccomp}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Référence / Auteur</label>
|
||||
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,84 +1,76 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Compétence</label>
|
||||
<select name="system.competence" id="competenceselect" data-dtype="String">
|
||||
{{#select system.competence}}
|
||||
{{#each competences as |competence key|}}
|
||||
<option value="{{competence.name}}">{{competence.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Thème</label>
|
||||
<input class="attribute-value" type="text" name="system.theme" value="{{system.theme}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Support</label>
|
||||
<input class="attribute-value" type="text" name="system.support" value="{{system.support}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Heure</label>
|
||||
<select name="system.heure" id="heure" data-dtype="String">
|
||||
{{#select system.heure}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/heures-select-option.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Purification</label>
|
||||
<input class="attribute-value" type="text" name="system.purification" value="{{system.purification}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Vêture</label>
|
||||
<input class="attribute-value" type="text" name="system.veture" value="{{system.veture}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Comportement</label>
|
||||
<input class="attribute-value" type="text" name="system.comportement" value="{{system.comportement}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Case TMR</label>
|
||||
<select name="system.tmr" id="tmr" data-dtype="String">
|
||||
{{#select system.tmr}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/sort-tmr.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Malus</label>
|
||||
{{#if isGM}}
|
||||
<select name="system.malus" id="malus" data-dtype="Number">
|
||||
{{#select system.malus}}
|
||||
<option value="0">0</option>
|
||||
<option value="-1">-1</option>
|
||||
<option value="-2">-2</option>
|
||||
<option value="-3">-3</option>
|
||||
<option value="-4">-4</option>
|
||||
<option value="-5">-5</option>
|
||||
<option value="-6">-6</option>
|
||||
<option value="-7">-7</option>
|
||||
<option value="-8">-8</option>
|
||||
<option value="-9">-9</option>
|
||||
<option value="-10">-10</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
{{else}}
|
||||
<label>>{{system.malus}}</label>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Compétence</label>
|
||||
<select name="system.competence" id="competenceselect" data-dtype="String">
|
||||
{{#select system.competence}}
|
||||
{{#each competences as |competence key|}}
|
||||
<option value="{{competence.name}}">{{competence.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Thème</label>
|
||||
<input class="attribute-value" type="text" name="system.theme" value="{{system.theme}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Support</label>
|
||||
<input class="attribute-value" type="text" name="system.support" value="{{system.support}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Heure</label>
|
||||
<select name="system.heure" id="heure" data-dtype="String">
|
||||
{{#select system.heure}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/heures-select-option.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Purification</label>
|
||||
<input class="attribute-value" type="text" name="system.purification" value="{{system.purification}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Vêture</label>
|
||||
<input class="attribute-value" type="text" name="system.veture" value="{{system.veture}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Comportement</label>
|
||||
<input class="attribute-value" type="text" name="system.comportement" value="{{system.comportement}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Case TMR</label>
|
||||
<select name="system.tmr" id="tmr" data-dtype="String">
|
||||
{{#select system.tmr}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/sort-tmr.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Malus</label>
|
||||
{{#if isGM}}
|
||||
<select name="system.malus" id="malus" data-dtype="Number">
|
||||
{{#select system.malus}}
|
||||
<option value="0">0</option>
|
||||
<option value="-1">-1</option>
|
||||
<option value="-2">-2</option>
|
||||
<option value="-3">-3</option>
|
||||
<option value="-4">-4</option>
|
||||
<option value="-5">-5</option>
|
||||
<option value="-6">-6</option>
|
||||
<option value="-7">-7</option>
|
||||
<option value="-8">-8</option>
|
||||
<option value="-9">-9</option>
|
||||
<option value="-10">-10</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
{{else}}
|
||||
<label>>{{system.malus}}</label>
|
||||
{{/if}}
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,32 +1,24 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Quantité</label>
|
||||
<input class="attribute-value" type="text" name="system.quantite" value="{{system.quantite}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Valeur en Deniers</label>
|
||||
{{#if isGM}}
|
||||
<input class="attribute-value" type="text" name="system.valeur_deniers" value="{{system.valeur_deniers}}" data-dtype="Number"/>
|
||||
{{else}}
|
||||
<label for="xp">{{system.valeur_deniers}}</label>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Encombrement</label>
|
||||
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Quantité</label>
|
||||
<input class="attribute-value" type="text" name="system.quantite" value="{{system.quantite}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Valeur en Deniers</label>
|
||||
{{#if isGM}}
|
||||
<input class="attribute-value" type="text" name="system.valeur_deniers" value="{{system.valeur_deniers}}" data-dtype="Number"/>
|
||||
{{else}}
|
||||
<label for="xp">{{system.valeur_deniers}}</label>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Encombrement</label>
|
||||
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,32 +1,24 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Encombrement </label>
|
||||
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Quantité </label>
|
||||
<input class="attribute-value" type="text" name="system.quantite" value="{{system.quantite}}" data-dtype="Number" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Qualité</label>
|
||||
<input class="attribute-value" type="text" name="system.qualite" value="{{system.qualite}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group item-cout">
|
||||
<label for="xp">Prix (sols) </label>
|
||||
<input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Encombrement </label>
|
||||
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Quantité </label>
|
||||
<input class="attribute-value" type="text" name="system.quantite" value="{{system.quantite}}" data-dtype="Number" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Qualité</label>
|
||||
<input class="attribute-value" type="text" name="system.qualite" value="{{system.qualite}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group item-cout">
|
||||
<label for="xp">Prix (sols) </label>
|
||||
<input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,24 +1,16 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Niveau</label>
|
||||
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Référence / Auteur</label>
|
||||
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">Niveau</label>
|
||||
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Référence / Auteur</label>
|
||||
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,30 +1,23 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Nombre</label>
|
||||
<input class="attribute-value" type="text" name="system.value" value="{{system.value}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Nombre valide ? </label>
|
||||
<input class="attribute-value" type="checkbox" name="system.istrue" {{#if system.istrue}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Index du jour concerné</label>
|
||||
<input class="attribute-value" type="text" name="system.jourindex" value="{{system.jourindex}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Label du jour</label>
|
||||
<input class="attribute-value" type="text" name="system.jourlabel" value="{{system.jourlabel}}" data-dtype="String"/>
|
||||
</div>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Nombre</label>
|
||||
<input class="attribute-value" type="text" name="system.value" value="{{system.value}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Nombre valide ? </label>
|
||||
<input class="attribute-value" type="checkbox" name="system.istrue" {{#if system.istrue}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Index du jour concerné</label>
|
||||
<input class="attribute-value" type="text" name="system.jourindex" value="{{system.jourindex}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Label du jour</label>
|
||||
<input class="attribute-value" type="text" name="system.jourlabel" value="{{system.jourlabel}}" data-dtype="String"/>
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,11 +1,5 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}" />
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name" /></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
@ -55,7 +49,5 @@
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
</form>
|
@ -1,36 +1,28 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Encombrement </label>
|
||||
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Quantité </label>
|
||||
<input class="attribute-value" type="text" name="system.quantite" value="{{system.quantite}}" data-dtype="Number" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Résistance</label>
|
||||
<input class="attribute-value" type="text" name="system.resistance" value="{{system.resistance}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Qualité</label>
|
||||
<input class="attribute-value" type="text" name="system.qualite" value="{{system.qualite}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group item-cout">
|
||||
<label for="xp">Prix (sols) </label>
|
||||
<input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Encombrement </label>
|
||||
<input class="attribute-value" type="text" name="system.encombrement" value="{{system.encombrement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Quantité </label>
|
||||
<input class="attribute-value" type="text" name="system.quantite" value="{{system.quantite}}" data-dtype="Number" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Résistance</label>
|
||||
<input class="attribute-value" type="text" name="system.resistance" value="{{system.resistance}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Qualité</label>
|
||||
<input class="attribute-value" type="text" name="system.qualite" value="{{system.qualite}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group item-cout">
|
||||
<label for="xp">Prix (sols) </label>
|
||||
<input class="attribute-value" type="text" name="system.cout" value="{{system.cout}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,20 +1 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Refoulement</label>
|
||||
<input class="attribute-value" type="text" name="system.refoulement" value="{{system.refoulement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
</form>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/item-queue-sheet.html"}}
|
||||
|
@ -1,29 +1,19 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Type de possession </label>
|
||||
<input class="attribute-value" type="text" name="system.typepossession" value="{{system.typepossession}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Possédé ? </label>
|
||||
<input class="attribute-value" type="checkbox" name="system.istrue" {{#if system.istrue}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Compteur </label>
|
||||
<input class="attribute-value" type="text" name="system.compteur" value="{{system.compteur}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Type de possession </label>
|
||||
<input class="attribute-value" type="text" name="system.typepossession" value="{{system.typepossession}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Possédé ? </label>
|
||||
<input class="attribute-value" type="checkbox" name="system.istrue" {{#if system.istrue}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Compteur </label>
|
||||
<input class="attribute-value" type="text" name="system.compteur" value="{{system.compteur}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,20 +1,20 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Refoulement</label>
|
||||
<input class="attribute-value" type="text" name="system.refoulement" value="{{system.refoulement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label></label>
|
||||
<label class="attribute-value">{{#if (eq type 'ombre')}}Ombre de thanatos
|
||||
{{else if (eq type 'queue')}}Queue de Dragon
|
||||
{{/if}}
|
||||
</label>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="system.refoulement">Refoulement</label>
|
||||
<input class="attribute-value" type="text" name="system.refoulement" value="{{system.refoulement}}" data-dtype="Number"/>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,44 +1,36 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">But</label>
|
||||
<input class="attribute-value" type="text" name="system.but" value="{{system.but}}" data-dtype="String"/>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label class="alchimie-title" for="xp">But</label>
|
||||
<input class="attribute-value" type="text" name="system.but" value="{{system.but}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<span><label class="alchimie-title">Manipulation : </label></span>
|
||||
<div class="form-group medium-editor">
|
||||
{{editor system.manipulation_update target="system.manipulation" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<span><label class="alchimie-title">Manipulation : </label></span>
|
||||
<div class="form-group medium-editor">
|
||||
{{editor system.manipulation_update target="system.manipulation" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<span><label class="alchimie-title">Utilisation : </label></span>
|
||||
<div class="form-group small-editor">
|
||||
{{editor system.utilisation target="system.utilisation" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<span><label class="alchimie-title">Utilisation : </label></span>
|
||||
<div class="form-group small-editor">
|
||||
{{editor system.utilisation target="system.utilisation" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<span><label class="alchimie-title">Enchantement : </label></span>
|
||||
<div class="form-group small-editor">
|
||||
{{editor system.enchantement target="system.enchantement" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<span><label class="alchimie-title">Enchantement : </label></span>
|
||||
<div class="form-group small-editor">
|
||||
{{editor system.enchantement target="system.enchantement" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<span><label class="alchimie-title">Sur-effet : </label></span>
|
||||
<div class="form-group small-editor">
|
||||
{{editor system.sureffet target="system.sureffet" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<span><label class="alchimie-title">Sur-effet : </label></span>
|
||||
<div class="form-group small-editor">
|
||||
{{editor system.sureffet target="system.sureffet" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,42 +1,34 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label>Niveau</label>
|
||||
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Durée</label>
|
||||
<input class="attribute-value" type="text" name="system.duree" value="{{system.duree}}" data-dtype="String"/>
|
||||
</div>system
|
||||
<div class="form-group">
|
||||
<label>Sust</label>
|
||||
<input class="attribute-value" type="text" name="system.sust" value="{{system.sust}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Exotisme</label>
|
||||
<input class="attribute-value" type="text" name="system.exotisme" value="{{system.exotisme}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Référence / Auteur</label>
|
||||
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<span><label>Ingrédients : </label></span>
|
||||
<div class="form-group editor">
|
||||
{{editor system.ingredients target="system.ingredients" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label>Niveau</label>
|
||||
<input class="attribute-value" type="text" name="system.niveau" value="{{system.niveau}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Durée</label>
|
||||
<input class="attribute-value" type="text" name="system.duree" value="{{system.duree}}" data-dtype="String"/>
|
||||
</div>system
|
||||
<div class="form-group">
|
||||
<label>Sust</label>
|
||||
<input class="attribute-value" type="text" name="system.sust" value="{{system.sust}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Exotisme</label>
|
||||
<input class="attribute-value" type="text" name="system.exotisme" value="{{system.exotisme}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Référence / Auteur</label>
|
||||
<input class="attribute-value" type="text" name="system.reference" value="{{system.reference}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="flexcol">
|
||||
<span><label>Ingrédients : </label></span>
|
||||
<div class="form-group editor">
|
||||
{{editor system.ingredients target="system.ingredients" button=true owner=owner editable=editable}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,16 +1,7 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,82 +1,74 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label>Draconic </label>
|
||||
<select name="system.draconic" id="draconic" data-dtype="String">
|
||||
{{#select system.draconic}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/sort-draconic.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Case TMR </label>
|
||||
<select name="system.caseTMR" id="caseTMR" data-dtype="String">
|
||||
{{#select system.caseTMR}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/sort-tmr.html"}}
|
||||
<option value="special">Case spéciale TMR (saisie ci-dessous)</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Case TMR Spéciale </label>
|
||||
<input class="attribute-value" type="text" name="system.caseTMRspeciale" value="{{system.caseTMRspeciale}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Difficulté </label>
|
||||
<input class="attribute-value" type="text" name="system.difficulte" value="{{system.difficulte}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Coût en Rêve </label>
|
||||
<input class="attribute-value" type="text" name="system.ptreve" value="{{system.ptreve}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Coût en Seuil </label>
|
||||
<input class="attribute-value" type="text" name="system.coutseuil" value="{{system.coutseuil}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="rituel">Rituel </label>
|
||||
<input class="attribute-value" type="checkbox" name="system.isrituel" {{#if system.isrituel}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Durée </label>
|
||||
<input class="attribute-value" type="text" name="system.duree" value="{{system.duree}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Portée </label>
|
||||
<input class="attribute-value" type="text" name="system.portee" value="{{system.portee}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Cible </label>
|
||||
<input class="attribute-value" type="text" name="system.cible" value="{{system.cible}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Jet de Resistance</label>
|
||||
<input class="attribute-value" type="text" name="system.JR" value="{{system.JR}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">XP </label>
|
||||
<input class="attribute-value" type="text" name="system.xp" value="{{system.xp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{#if owner}}
|
||||
{{#each bonusCaseList as |bcData key|}}
|
||||
<div class="form-group">
|
||||
<label for="bonuscase">Case/Bonus :</label>
|
||||
<input class="attribute-value" type="text" name="caseValue" value="{{bcData.case}}" data-dtype="String"/>
|
||||
<input class="attribute-value" type="text" name="bonusValue" value="{{bcData.bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label>Draconic</label>
|
||||
<select name="system.draconic" id="draconic" data-dtype="String">
|
||||
{{#select system.draconic}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/sort-draconic.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.caseTMR">Case TMR</label>
|
||||
<select name="system.caseTMR" id="caseTMR" data-dtype="String">
|
||||
{{#select system.caseTMR}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/sort-tmr.html"}}
|
||||
<option value="special">Case spéciale TMR (saisie ci-dessous)</option>
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.caseTMRspeciale">Case TMR Spéciale</label>
|
||||
<input class="attribute-value" type="text" name="system.caseTMRspeciale" value="{{system.caseTMRspeciale}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.difficulte">Difficulté</label>
|
||||
<input class="attribute-value" type="text" name="system.difficulte" value="{{system.difficulte}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.ptreve">Coût en Rêve</label>
|
||||
<input class="attribute-value" type="text" name="system.ptreve" value="{{system.ptreve}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.coutseuil">Coût en Seuil</label>
|
||||
<input class="attribute-value" type="text" name="system.coutseuil" value="{{system.coutseuil}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.isrituel">Rituel</label>
|
||||
<input class="attribute-value" type="checkbox" name="system.isrituel" {{#if system.isrituel}}checked{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.duree">Durée</label>
|
||||
<input class="attribute-value" type="text" name="system.duree" value="{{system.duree}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.portee">Portée</label>
|
||||
<input class="attribute-value" type="text" name="system.portee" value="{{system.portee}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.cible">Cible</label>
|
||||
<input class="attribute-value" type="text" name="system.cible" value="{{system.cible}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.JR">Jet de Resistance</label>
|
||||
<input class="attribute-value" type="text" name="system.JR" value="{{system.JR}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.xp">XP</label>
|
||||
<input class="attribute-value" type="text" name="system.xp" value="{{system.xp}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{#if owner}}
|
||||
{{#each bonusCaseList as |bcData key|}}
|
||||
<div class="form-group">
|
||||
<label for="caseValue">Case/Bonus :</label>
|
||||
<input class="attribute-value" type="text" name="caseValue" value="{{bcData.case}}" data-dtype="String"/>
|
||||
<input class="attribute-value" type="text" name="bonusValue" value="{{bcData.bonus}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{/each}}
|
||||
{{/if}}
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
45
templates/item-sortreserve-sheet.html
Normal file
45
templates/item-sortreserve-sheet.html
Normal file
@ -0,0 +1,45 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
|
||||
<section class="sheet-body">
|
||||
{{#if (and system.sortid sort)}}
|
||||
<div class="form-group">
|
||||
<label>Sort</label>
|
||||
<label>{{sort.name}} - {{sort.system.draconic}} / {{sort.system.difficulte}}</label>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="form-group">
|
||||
<label>Draconic</label>
|
||||
<select name="system.draconic" id="draconic" data-dtype="String">
|
||||
{{#select system.draconic}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/sort-draconic.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
{{/if}}
|
||||
<div class="form-group">
|
||||
<label for="system.coord">Case TMR</label>
|
||||
<input class="attribute-value" type="text" name="system.coord" value="{{system.coord}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label></label>
|
||||
<label class="attribute-value" >{{caseTmr-label system.coord}}</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.ptreve">Rêve</label>
|
||||
<input class="attribute-value" type="text" name="system.ptreve" value="{{system.ptreve}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.heurecible">Heure de naissance cible</label>
|
||||
<select type="text" name="system.heurecible" value="{{system.heurecible}}" data-dtype="String">
|
||||
{{#select system.heurecible}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/heures-select-option.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="system.echectotal">Echec total</label>
|
||||
<input class="attribute-value" type="checkbox" name="system.echectotal" {{#if system.echectotal}}checked{{/if}} />
|
||||
</div>
|
||||
</section>
|
||||
</form>
|
@ -1,16 +1,8 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,80 +1,72 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Caractéristique</label>
|
||||
<select name="system.carac" id="caracselect" data-dtype="String">
|
||||
{{#select system.carac}}
|
||||
{{#each caracList as |carac key|}}
|
||||
<option value="{{key}}">{{carac.label}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Compétence</label>
|
||||
<select name="system.competence" id="competenceselect" data-dtype="String">
|
||||
{{#select system.competence}}
|
||||
{{#each competences as |competence key|}}
|
||||
<option value="{{competence.name}}">{{competence.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="form-group">
|
||||
<label for="xp">Caractéristique</label>
|
||||
<select name="system.carac" id="caracselect" data-dtype="String">
|
||||
{{#select system.carac}}
|
||||
{{#each caracList as |carac key|}}
|
||||
<option value="{{key}}">{{carac.label}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Difficulté</label>
|
||||
<input class="attribute-value" type="text" name="system.difficulte" value="{{system.difficulte}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Périodicité</label>
|
||||
<input class="attribute-value" type="text" name="system.periodicite" value="{{system.periodicite}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Fatigue</label>
|
||||
<input class="attribute-value" type="text" name="system.fatigue" value="{{system.fatigue}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{#if isGM}}
|
||||
<div class="form-group">
|
||||
<label for="xp">Cacher les Points de Tâches nécessaires au joueur</label>
|
||||
<input class="attribute-value" type="checkbox" name="system.cacher_points_de_tache" value="{{system.cacher_points_de_tache}}" {{checked system.cacher_points_de_tache}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Compétence</label>
|
||||
<select name="system.competence" id="competenceselect" data-dtype="String">
|
||||
{{#select system.competence}}
|
||||
{{#each competences as |competence key|}}
|
||||
<option value="{{competence.name}}">{{competence.name}}</option>
|
||||
{{/each}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Difficulté</label>
|
||||
<input class="attribute-value" type="text" name="system.difficulte" value="{{system.difficulte}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Périodicité</label>
|
||||
<input class="attribute-value" type="text" name="system.periodicite" value="{{system.periodicite}}" data-dtype="String"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Fatigue</label>
|
||||
<input class="attribute-value" type="text" name="system.fatigue" value="{{system.fatigue}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{#if isGM}}
|
||||
<div class="form-group">
|
||||
<label for="xp">Cacher les Points de Tâches nécessaires au joueur</label>
|
||||
<input class="attribute-value" type="checkbox" name="system.cacher_points_de_tache" value="{{system.cacher_points_de_tache}}" {{checked system.cacher_points_de_tache}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Points de tâches nécessaires</label>
|
||||
<input class="attribute-value" type="text" name="system.points_de_tache" value="{{system.points_de_tache}}" data-dtype="Number"/>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="form-group">
|
||||
<label for="xp">Points de tâches nécessaires</label>
|
||||
{{#if system.cacher_points_de_tache}}
|
||||
<input class="attribute-value" type="text" value="?????" data-dtype="Number" disabled/>
|
||||
{{else}}
|
||||
<input class="attribute-value" type="text" name="system.points_de_tache" value="{{system.points_de_tache}}" data-dtype="Number"/>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="form-group">
|
||||
<label for="xp">Points de tâches nécessaires</label>
|
||||
{{#if system.cacher_points_de_tache}}
|
||||
<input class="attribute-value" type="text" value="?????" data-dtype="Number" disabled/>
|
||||
{{else}}
|
||||
<input class="attribute-value" type="text" name="system.points_de_tache" value="{{system.points_de_tache}}" data-dtype="Number"/>
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label for="xp">Points de tâches obtenus</label>
|
||||
<input class="attribute-value" type="text" name="system.points_de_tache_courant" value="{{system.points_de_tache_courant}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Nombre de Succès</label>
|
||||
<input class="attribute-value" type="text" name="system.nb_jet_succes" value="{{system.nb_jet_succes}}" data-dtype="Number" {{#if isGM}}{{else}}disabled{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Nombre d'Echecs</label>
|
||||
<input class="attribute-value" type="text" name="system.nb_jet_echec" value="{{system.nb_jet_echec}}" data-dtype="Number" {{#if isGM}}{{else}}disabled{{/if}}/>
|
||||
</div>
|
||||
{{/if}}
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label for="xp">Points de tâches obtenus</label>
|
||||
<input class="attribute-value" type="text" name="system.points_de_tache_courant" value="{{system.points_de_tache_courant}}" data-dtype="Number"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Nombre de Succès</label>
|
||||
<input class="attribute-value" type="text" name="system.nb_jet_succes" value="{{system.nb_jet_succes}}" data-dtype="Number" {{#if isGM}}{{else}}disabled{{/if}}/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="xp">Nombre d'Echecs</label>
|
||||
<input class="attribute-value" type="text" name="system.nb_jet_echec" value="{{system.nb_jet_echec}}" data-dtype="Number" {{#if isGM}}{{else}}disabled{{/if}}/>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,29 +1,21 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="flexcol">
|
||||
<div class="form-group">
|
||||
<label>Aspect</label>
|
||||
<input class="attribute-value" type="text" name="system.concept" value="{{system.concept}}" data-dtype="String" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Sens</label>
|
||||
<select name="system.aspect" id="aspect" data-dtype="String">
|
||||
{{#select system.aspect}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-aspect-tarot.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
<div class="flexcol">
|
||||
<div class="form-group">
|
||||
<label>Aspect</label>
|
||||
<input class="attribute-value" type="text" name="system.concept" value="{{system.concept}}" data-dtype="String" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>Sens</label>
|
||||
<select name="system.aspect" id="aspect" data-dtype="String">
|
||||
{{#select system.aspect}}
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/enum-aspect-tarot.html"}}
|
||||
{{/select}}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -1,16 +1,8 @@
|
||||
<form class="{{cssClass}}" autocomplete="off">
|
||||
<header class="sheet-header">
|
||||
<img class="profile-img" src="{{img}}" data-edit="img" title="{{name}}"/>
|
||||
<div class="header-fields">
|
||||
<h1 class="charname"><input name="name" type="text" value="{{name}}" placeholder="Name"/></h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/header-item.html"}}
|
||||
{{!-- Sheet Body --}}
|
||||
<section class="sheet-body">
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
|
||||
</section>
|
||||
|
||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||
</section>
|
||||
</form>
|
||||
|
@ -7,7 +7,7 @@
|
||||
{{else}}
|
||||
<input class="resource-content select-effect" type="checkbox" name="{{effect.id}}" {{#if effect.active}}checked{{/if}}/>
|
||||
{{/if}}
|
||||
<img class="button-effect-img" height="16" width="16" src="{{effect.icon}}" alt="{{ localize effect.label}}" />
|
||||
<img class="button-effect-img" height="16" width="16" src="{{effect.icon}}" alt="{{localize effect.label}}" />
|
||||
<label>{{localize effect.label}}</label>
|
||||
</li>
|
||||
{{/each}}
|
||||
|
Reference in New Issue
Block a user