Version 12.0.24 #724
@ -1,4 +1,8 @@
|
|||||||
# 12.0
|
# 12.0
|
||||||
|
## 12.0.24 - Les ajustements d'Astrobazzarh
|
||||||
|
- corrections
|
||||||
|
- on peut maintenant saisir et supprimer les bonus de cases de manière intuitive
|
||||||
|
|
||||||
## 12.0.23 - La bibliothèque d'Astrobazzarh
|
## 12.0.23 - La bibliothèque d'Astrobazzarh
|
||||||
- corrections mineures
|
- corrections mineures
|
||||||
- meilleure gestion de la parade des armes naturelles
|
- meilleure gestion de la parade des armes naturelles
|
||||||
|
@ -269,7 +269,7 @@ export class Mapping {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static bonusCase(sort) {
|
static bonusCase(sort) {
|
||||||
const list = RdDItemSort.bonuscaseStringToList(sort.system.bonuscase).sort(Misc.descending(it => it.bonus))
|
const list = RdDItemSort.stringToBonuscases(sort.system.bonuscase).sort(Misc.descending(it => it.bonus))
|
||||||
if (list.length > 0) {
|
if (list.length > 0) {
|
||||||
const bonus = list[0]
|
const bonus = list[0]
|
||||||
return `+${bonus.bonus}% en ${bonus.case}`
|
return `+${bonus.bonus}% en ${bonus.case}`
|
||||||
|
@ -13,6 +13,7 @@ import { Misc } from "./misc.js";
|
|||||||
import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
||||||
import { RdDItemCompetenceCreature } from "./item-competencecreature.js";
|
import { RdDItemCompetenceCreature } from "./item-competencecreature.js";
|
||||||
import { ITEM_TYPES, RdDItem } from "./item.js";
|
import { ITEM_TYPES, RdDItem } from "./item.js";
|
||||||
|
import { FLEUVE_COORD, TMRUtility } from "./tmr-utility.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extend the basic ItemSheet for RdD specific items
|
* Extend the basic ItemSheet for RdD specific items
|
||||||
@ -100,55 +101,59 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
descriptionmj: await TextEditor.enrichHTML(this.item.system.descriptionmj, { async: true }),
|
descriptionmj: await TextEditor.enrichHTML(this.item.system.descriptionmj, { async: true }),
|
||||||
isComestible: this.item.getUtilisationCuisine(),
|
isComestible: this.item.getUtilisationCuisine(),
|
||||||
options: RdDSheetUtility.mergeDocumentRights(this.options, this.item, this.isEditable),
|
options: RdDSheetUtility.mergeDocumentRights(this.options, this.item, this.isEditable),
|
||||||
|
competences: await SystemCompendiums.getCompetences('personnage'),
|
||||||
|
categories: RdDItem.getCategories(this.item.type),
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.item.type == ITEM_TYPES.competencecreature) {
|
if (this.item.type == ITEM_TYPES.competencecreature) {
|
||||||
formData.isparade = RdDItemCompetenceCreature.isParade(this.item)
|
formData.isparade = RdDItemCompetenceCreature.isParade(this.item)
|
||||||
formData.isdommages = RdDItemCompetenceCreature.isDommages(this.item)
|
formData.isdommages = RdDItemCompetenceCreature.isDommages(this.item)
|
||||||
}
|
}
|
||||||
|
if (this.item.type == ITEM_TYPES.tache ||
|
||||||
const competences = await SystemCompendiums.getCompetences('personnage');
|
this.item.type == ITEM_TYPES.livre ||
|
||||||
formData.categories = RdDItem.getCategories(this.item.type)
|
this.item.type == ITEM_TYPES.meditation ||
|
||||||
if (this.item.type == 'tache' || this.item.type == 'livre' || this.item.type == 'meditation' || this.item.type == 'oeuvre') {
|
this.item.type == ITEM_TYPES.oeuvre) {
|
||||||
formData.caracList = foundry.utils.duplicate(game.model.Actor.personnage.carac)
|
formData.caracList = foundry.utils.duplicate(game.model.Actor.personnage.carac)
|
||||||
formData.caracList["reve-actuel"] = foundry.utils.duplicate(game.model.Actor.personnage.reve.reve)
|
formData.caracList["reve-actuel"] = foundry.utils.duplicate(game.model.Actor.personnage.reve.reve)
|
||||||
formData.competences = competences;
|
|
||||||
}
|
}
|
||||||
if (this.item.type == 'arme') {
|
if (this.item.type == ITEM_TYPES.arme) {
|
||||||
formData.competences = competences.filter(it => it.isCompetenceArme())
|
formData.competences = formData.competences.filter(it => it.isCompetenceArme())
|
||||||
}
|
}
|
||||||
if (['sort', 'sortreserve'].includes(this.item.type)) {
|
if (this.item.type == ITEM_TYPES.recettecuisine) {
|
||||||
formData.competences = competences.filter(it => RdDItemCompetence.isDraconic(it));
|
|
||||||
}
|
|
||||||
if (this.item.type == 'recettecuisine') {
|
|
||||||
formData.ingredients = await TextEditor.enrichHTML(this.object.system.ingredients, { async: true })
|
formData.ingredients = await TextEditor.enrichHTML(this.object.system.ingredients, { async: true })
|
||||||
}
|
}
|
||||||
if (this.item.type == 'extraitpoetique') {
|
if (this.item.type == ITEM_TYPES.extraitpoetique) {
|
||||||
formData.extrait = await TextEditor.enrichHTML(this.object.system.extrait, { async: true })
|
formData.extrait = await TextEditor.enrichHTML(this.object.system.extrait, { async: true })
|
||||||
formData.texte = await TextEditor.enrichHTML(this.object.system.texte, { async: true })
|
formData.texte = await TextEditor.enrichHTML(this.object.system.texte, { async: true })
|
||||||
}
|
}
|
||||||
if (this.item.type == 'recettealchimique') {
|
if (this.item.type == ITEM_TYPES.recettealchimique) {
|
||||||
RdDAlchimie.processManipulation(this.item, this.actor && this.actor.id);
|
RdDAlchimie.processManipulation(this.item, this.actor?.id);
|
||||||
formData.manipulation_update = await TextEditor.enrichHTML(this.object.system.manipulation_update, { async: true })
|
formData.manipulation_update = await TextEditor.enrichHTML(this.object.system.manipulation_update, { async: true })
|
||||||
formData.utilisation = await TextEditor.enrichHTML(this.object.system.utilisation, { async: true })
|
formData.utilisation = await TextEditor.enrichHTML(this.object.system.utilisation, { async: true })
|
||||||
formData.enchantement = await TextEditor.enrichHTML(this.object.system.enchantement, { async: true })
|
formData.enchantement = await TextEditor.enrichHTML(this.object.system.enchantement, { async: true })
|
||||||
formData.sureffet = await TextEditor.enrichHTML(this.object.system.sureffet, { async: true })
|
formData.sureffet = await TextEditor.enrichHTML(this.object.system.sureffet, { async: true })
|
||||||
}
|
}
|
||||||
if (this.item.type == 'gemme') {
|
if (this.item.type == ITEM_TYPES.gemme) {
|
||||||
formData.gemmeTypeList = RdDGemme.getGemmeTypeOptionList();
|
formData.gemmeTypeList = RdDGemme.getGemmeTypeOptionList();
|
||||||
RdDGemme.calculDataDerivees(this.item);
|
RdDGemme.calculDataDerivees(this.item)
|
||||||
}
|
}
|
||||||
if (this.item.type == 'potion') {
|
if (this.item.type == ITEM_TYPES.potion) {
|
||||||
await RdDHerbes.addPotionFormData(formData);
|
RdDHerbes.calculFormData(formData, this.item)
|
||||||
}
|
}
|
||||||
if (formData.options.isOwned && this.item.type == 'herbe' && (formData.system.categorie == 'Soin' || formData.system.categorie == 'Repos')) {
|
if (this.item.type == ITEM_TYPES.herbe) {
|
||||||
formData.isIngredientPotionBase = true;
|
if (formData.options.isOwned && ['Soin', 'Repos'].includes(formData.system.categorie)) {
|
||||||
|
formData.isIngredientPotionBase = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (this.item.type == 'sortreserve') {
|
if (this.item.type == ITEM_TYPES.sortreserve) {
|
||||||
const sortId = this.item.system.sortid;
|
const sortId = this.item.system.sortid;
|
||||||
|
formData.competences = formData.competences.filter(it => RdDItemCompetence.isDraconic(it));
|
||||||
formData.sort = formData.options.isOwned ? this.item.actor.items.get(sortId) : game.items.get(sortId);
|
formData.sort = formData.options.isOwned ? this.item.actor.items.get(sortId) : game.items.get(sortId);
|
||||||
}
|
}
|
||||||
formData.bonusCaseList = RdDItemSort.getBonusCaseList(formData, true);
|
if (this.item.type == ITEM_TYPES.sort) {
|
||||||
|
formData.competences = formData.competences.filter(it => RdDItemCompetence.isDraconic(it));
|
||||||
|
formData.bonusCaseList = RdDItemSort.getBonusCaseList(this.item);
|
||||||
|
}
|
||||||
return formData;
|
return formData;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,6 +190,9 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
this.html.find('.delete-bonus-case').click((event) => {
|
||||||
|
this.supprimerBonusCase(event.currentTarget.attributes['data-deleteCoord'].value)
|
||||||
|
})
|
||||||
|
|
||||||
this.html.find('.date-enchantement').change((event) => {
|
this.html.find('.date-enchantement').change((event) => {
|
||||||
const jour = Number(this.html.find('input.date-enchantement[name="enchantement.jour"]').val());
|
const jour = Number(this.html.find('input.date-enchantement[name="enchantement.jour"]').val());
|
||||||
@ -264,23 +272,66 @@ export class RdDItemSheet extends ItemSheet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async supprimerBonusCase(deleteCoord){
|
||||||
|
if (this.item.type == ITEM_TYPES.sort) {
|
||||||
|
const oldList = RdDItemSort.getBonusCaseList(this.item)
|
||||||
|
const newList = oldList.filter(it => it.case != deleteCoord);
|
||||||
|
if (newList.length != oldList.length) {
|
||||||
|
await this.item.update({
|
||||||
|
'system.bonuscase': RdDItemSort.bonuscasesToString(newList)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
/** @override */
|
/** @override */
|
||||||
_updateObject(event, formData) {
|
_updateObject(event, formData) {
|
||||||
switch (this.item.type) {
|
switch (this.item.type) {
|
||||||
case ITEM_TYPES.sort:
|
case ITEM_TYPES.sort:
|
||||||
// Données de bonus de cases ?
|
formData['system.bonuscase'] = RdDItemSort.bonuscasesToString(RdDItemSheet._listCaseTmr(
|
||||||
formData['system.bonuscase'] = RdDItemSort.buildBonuscaseFromArrays(formData.bonusValue, formData.caseValue)
|
formData.caseTmrCoord,
|
||||||
|
formData.caseTmrBonus,
|
||||||
|
formData.caseTmrAdd
|
||||||
|
))
|
||||||
break
|
break
|
||||||
case ITEM_TYPES.competence:
|
case ITEM_TYPES.competence:
|
||||||
if (formData['system.niveau'] == undefined) {
|
formData['system.niveau'] = formData.system.niveau ?? formData.system.base
|
||||||
formData['system.niveau'] = formData['system.base']
|
break
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.item.update(formData);
|
return this.item.update(formData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* -------------------------------------------- */
|
||||||
|
/**
|
||||||
|
* reconstruit les bonus de cases
|
||||||
|
* @param {*} caseTmrCoord tableau des coordonées
|
||||||
|
* @param {*} caseTmrBonus tableau des bonus
|
||||||
|
* @param {*} caseTmrAdd case à ajouter
|
||||||
|
* @returns list d'objets {coord, bonus}
|
||||||
|
*/
|
||||||
|
static _listCaseTmr(caseTmrCoord, caseTmrBonus, caseTmrAdd) {
|
||||||
|
const listCaseTmrCoord = caseTmrCoord == undefined ? [] : Array.isArray(caseTmrCoord) ? caseTmrCoord : [caseTmrCoord]
|
||||||
|
const listCaseTmrBonus = caseTmrBonus == undefined ? [] : Array.isArray(caseTmrBonus) ? caseTmrBonus : [caseTmrBonus]
|
||||||
|
if (caseTmrAdd != undefined && caseTmrAdd != '' && TMRUtility.verifyTMRCoord(caseTmrAdd) && !listCaseTmrCoord.includes(caseTmrAdd)) {
|
||||||
|
listCaseTmrCoord.push(TMRUtility.getTMR(caseTmrAdd).coord)
|
||||||
|
listCaseTmrBonus.push(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
const list = [];
|
||||||
|
const caseChecked = {};
|
||||||
|
for (let i = 0; i < listCaseTmrBonus.length && i < listCaseTmrCoord.length; i++) {
|
||||||
|
const coord = listCaseTmrCoord[i] == FLEUVE_COORD ? FLEUVE_COORD : (listCaseTmrCoord[i]?.toUpperCase() ?? 'A1')
|
||||||
|
const bonus = listCaseTmrBonus[i] ?? 0
|
||||||
|
if (TMRUtility.verifyTMRCoord(coord) && bonus >= 0 && !caseChecked[coord]) {
|
||||||
|
caseChecked[coord] = coord
|
||||||
|
list.push({ case: coord, bonus: bonus })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return list
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _onDragStart(event) {
|
async _onDragStart(event) {
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ import { Grammar } from "./grammar.js";
|
|||||||
import { RdDItemCompetence } from "./item-competence.js";
|
import { RdDItemCompetence } from "./item-competence.js";
|
||||||
import { ITEM_TYPES } from "./item.js";
|
import { ITEM_TYPES } from "./item.js";
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
import { TMRUtility } from "./tmr-utility.js";
|
import { FLEUVE_COORD, TMRType, TMRUtility } from "./tmr-utility.js";
|
||||||
|
|
||||||
const VOIES_DRACONIC = [
|
const VOIES_DRACONIC = [
|
||||||
{ code: 'O', label: "Voie d'Oniros", short: 'Oniros', ordre: 'a' },
|
{ code: 'O', label: "Voie d'Oniros", short: 'Oniros', ordre: 'a' },
|
||||||
@ -80,89 +80,60 @@ export class RdDItemSort extends Item {
|
|||||||
return variable;
|
return variable;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static buildBonusCaseList(bonuscase, newCase) {
|
|
||||||
const list = RdDItemSort.bonuscaseStringToList(bonuscase)
|
|
||||||
if (newCase) {
|
|
||||||
list.push({ case: "Nouvelle", bonus: 0 })
|
|
||||||
}
|
|
||||||
return list;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retourne une liste de bonus/case pour un item-sheet
|
* Retourne une liste de bonus/case pour un item-sheet
|
||||||
* @param {} item
|
* @param {} item
|
||||||
*/
|
*/
|
||||||
static getBonusCaseList(item, newCase = false) {
|
static getBonusCaseList(item) {
|
||||||
// Gestion spéciale case bonus
|
// Gestion spéciale case bonus
|
||||||
if (item.type == ITEM_TYPES.sort) {
|
if (item.type == ITEM_TYPES.sort) {
|
||||||
return RdDItemSort.buildBonusCaseList(item.system.bonuscase, newCase);
|
return RdDItemSort.stringToBonuscases(item.system.bonuscase)
|
||||||
}
|
}
|
||||||
return undefined;
|
return [];
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
/** Met à jour les données de formulaire
|
|
||||||
* si static des bonus de cases sont présents
|
|
||||||
* */
|
|
||||||
static buildBonuscaseFromArrays(bonuses, coords) {
|
|
||||||
if (bonuses) {
|
|
||||||
const list = [];
|
|
||||||
const caseCheck = {};
|
|
||||||
for (let i = 0; i < bonuses.length && i < coords.length; i++) {
|
|
||||||
const coord = coords[i] == 'Fleuve' ? 'Fleuve' : (coords[i]?.toUpperCase() ?? 'A1');
|
|
||||||
const bonus = bonuses[i] || 0;
|
|
||||||
if (TMRUtility.verifyTMRCoord(coord) && bonus > 0 && caseCheck[coord] == undefined) {
|
|
||||||
caseCheck[coord] = bonus;
|
|
||||||
list.push({ case: coord, bonus: bonus });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return RdDItemSort._bonuscaseListToString(list);
|
|
||||||
}
|
|
||||||
return undefined;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static incrementBonusCase(actor, sort, coord) {
|
static incrementBonusCase(actor, sort, coord) {
|
||||||
if (TMRUtility.getTMR(coord).type == "fleuve") {
|
if (TMRUtility.isFleuve(coord)) {
|
||||||
coord = 'Fleuve';
|
coord = FLEUVE_COORD;
|
||||||
|
}
|
||||||
|
let list = RdDItemSort.stringToBonuscases(sort.system.bonuscase);
|
||||||
|
const existing = list.find(it => it.case == coord)
|
||||||
|
const bonus = Number(existing?.bonus ?? 0) + 1
|
||||||
|
if (existing) {
|
||||||
|
existing.bonus = bonus
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
list.push({ case: coord, bonus: 1 })
|
||||||
}
|
}
|
||||||
const list = RdDItemSort.buildBonusCaseList(sort.system.bonuscase, false);
|
|
||||||
const bonus = Number(list.find(it => it.case == coord)?.bonus ?? 0);
|
|
||||||
const modified = { case: coord, bonus: bonus + 1 };
|
|
||||||
|
|
||||||
const bonuscase = RdDItemSort._bonuscaseListToString(
|
actor.updateEmbeddedDocuments('Item', [{ _id: sort._id, 'system.bonuscase': RdDItemSort.bonuscasesToString(list) }]);
|
||||||
list.filter(it => it.case != coord).concat(modified)
|
|
||||||
);
|
|
||||||
|
|
||||||
// Sauvegarde/update
|
|
||||||
actor.updateEmbeddedDocuments('Item', [{ _id: sort._id, 'system.bonuscase': bonuscase }]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getCaseBonus(sort, coord) {
|
static getCaseBonus(sort, coord) {
|
||||||
const isFleuve = TMRUtility.getTMR(coord).type == "fleuve";
|
const search = TMRUtility.isFleuve(coord)
|
||||||
|
? it => it.case == 'Fleuve'
|
||||||
let bc = RdDItemSort.buildBonusCaseList(sort.system.bonuscase, false)
|
: it => it.case == coord;
|
||||||
.filter(it => it.case == coord || (isFleuve && it.case == 'Fleuve'))
|
const bc = RdDItemSort.stringToBonuscases(sort.system.bonuscase)
|
||||||
.find(it => true)
|
.find(search)
|
||||||
return Number(bc?.bonus ?? 0);
|
return Number(bc?.bonus ?? 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static _bonuscaseListToString(list) {
|
static bonuscasesToString(list) {
|
||||||
return list.map(it => `${it.case}:${it.bonus}`)
|
return list.map(it => `${it.case}:${it.bonus}`)
|
||||||
.sort(Misc.ascending())
|
.sort(Misc.ascending())
|
||||||
.join(',');
|
.join(',');
|
||||||
}
|
}
|
||||||
static bonuscaseStringToList(bonuscase) {
|
|
||||||
|
static stringToBonuscases(bonuscase) {
|
||||||
if (bonuscase == undefined || bonuscase == '') {
|
if (bonuscase == undefined || bonuscase == '') {
|
||||||
return []
|
return []
|
||||||
}
|
}
|
||||||
return bonuscase.split(',').map(it => {
|
return bonuscase.split(',')
|
||||||
const b = it.split(':');
|
.map(it => it.split(':'))
|
||||||
return { case: b[0], bonus: b[1] };
|
.map(it => { return { case: it[0], bonus: it[1] } });
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -28,9 +28,9 @@ export class RdDHerbes extends Item {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async addPotionFormData(formData) {
|
static calculFormData(formData, item) {
|
||||||
formData.isSoins = formData.system.categorie.includes('Soin');
|
formData.isSoins = item.system.categorie.includes('Soin');
|
||||||
formData.isRepos = formData.system.categorie.includes('Repos');
|
formData.isRepos = item.system.categorie.includes('Repos');
|
||||||
if (formData.isSoins) {
|
if (formData.isSoins) {
|
||||||
RdDHerbes.calculBonusHerbe(formData, this.herbesSoins, 12);
|
RdDHerbes.calculBonusHerbe(formData, this.herbesSoins, 12);
|
||||||
}
|
}
|
||||||
@ -40,7 +40,7 @@ export class RdDHerbes extends Item {
|
|||||||
formData.herbesSoins = RdDHerbes.buildHerbesList(this.herbesSoins, 12);
|
formData.herbesSoins = RdDHerbes.buildHerbesList(this.herbesSoins, 12);
|
||||||
formData.herbesRepos = RdDHerbes.buildHerbesList(this.herbesRepos, 7);
|
formData.herbesRepos = RdDHerbes.buildHerbesList(this.herbesRepos, 7);
|
||||||
formData.dateActuelle = game.system.rdd.calendrier.dateCourante();
|
formData.dateActuelle = game.system.rdd.calendrier.dateCourante();
|
||||||
formData.enchantement = RdDTimestamp.splitIndexDate(formData.system.prdate);
|
formData.enchantement = RdDTimestamp.splitIndexDate(item.system.prdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -2,228 +2,216 @@ import { Misc } from "./misc.js";
|
|||||||
import { Grammar } from "./grammar.js";
|
import { Grammar } from "./grammar.js";
|
||||||
import { RdDDice } from "./rdd-dice.js";
|
import { RdDDice } from "./rdd-dice.js";
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
export const TMRType = {
|
||||||
const TMRMapping = {
|
cite: { type: 'cite', name: "cité", genre: "f" },
|
||||||
A1: { type: "cite", label: "Cité Vide" },
|
sanctuaire: { type: 'sanctuaire', name: "sanctuaire", genre: 'm' },
|
||||||
B1: { type: "plaines", label: "Plaines d’Assorh" },
|
plaines: { type: 'plaines', name: "plaines", genre: "fp" },
|
||||||
C1: { type: "necropole", label: "Nécropole de Kroak" },
|
pont: { type: 'pont', name: "pont", genre: "m" },
|
||||||
D1: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
collines: { type: 'collines', name: "collines", genre: "p" },
|
||||||
E1: { type: "monts", label: "Monts de Kanaï" },
|
foret: { type: 'foret', name: "forêt", genre: "f" },
|
||||||
F1: { type: "cite", label: "Cité Glauque" },
|
monts: { type: 'monts', name: "monts", genre: "p" },
|
||||||
G1: { type: "desolation", label: "Désolation de Jamais" },
|
desert: { type: 'desert', name: "désert", genre: "m" },
|
||||||
H1: { type: "lac", label: "Lac d’Anticalme" },
|
fleuve: { type: 'fleuve', name: "fleuve", genre: "m" },
|
||||||
I1: { type: "plaines", label: "Plaines Grises" },
|
lac: { type: 'lac', name: "lac", genre: "m" },
|
||||||
J1: { type: "monts", label: "Monts Fainéants" },
|
marais: { type: 'marais', name: "marais", genre: "m" },
|
||||||
K1: { type: "cite", label: "Cité d’Onkause" },
|
gouffre: { type: 'gouffre', name: "gouffre", genre: "m" },
|
||||||
L1: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
necropole: { type: 'necropole', name: "nécropole", genre: "f" },
|
||||||
M1: { type: "cite", label: "Cité Jalouse" },
|
desolation: { type: 'desolation', name: "désolation", genre: "f" }
|
||||||
|
|
||||||
A2: { type: "desert", label: "Désert de Mieux" },
|
|
||||||
B2: { type: "collines", label: "Collines de Dawell" },
|
|
||||||
C2: { type: "marais", label: "Marais Glignants" },
|
|
||||||
D2: { type: "cite", label: "Cité de Frost" },
|
|
||||||
E2: { type: "plaines", label: "Plaines de Fiask" },
|
|
||||||
F2: { type: "lac", label: "Lac de Misère" },
|
|
||||||
G2: { type: "marais", label: "Marais Nuisants" },
|
|
||||||
H2: { type: "collines", label: "Collines de Parta" },
|
|
||||||
I2: { type: "foret", label: "Forêt Fade" },
|
|
||||||
J2: { type: "desert", label: "Désert de Poly" },
|
|
||||||
K2: { type: "foret", label: "Forêt Tamée" },
|
|
||||||
L2: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
M2: { type: "necropole", label: "Nécropole de Logos" },
|
|
||||||
|
|
||||||
A3: { type: "desolation", label: "Désolation de Demain" },
|
|
||||||
B3: { type: "plaines", label: "Plaines de Rubéga" },
|
|
||||||
C3: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
D3: { type: "gouffre", label: "Gouffre d’Oki" },
|
|
||||||
E3: { type: "foret", label: "Forêt d’Estoubh" },
|
|
||||||
F3: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
G3: { type: "gouffre", label: "Gouffre de Sun" },
|
|
||||||
H3: { type: "foret", label: "Forêt de Ganna" },
|
|
||||||
I3: { type: "monts", label: "Monts Grinçants" },
|
|
||||||
J3: { type: "cite", label: "Cité Venin" },
|
|
||||||
K3: { type: "plaines", label: "Plaines de Dois" },
|
|
||||||
L3: { type: "lac", label: "Lac Laineux" },
|
|
||||||
M3: { type: "monts", label: "Monts de Vdah" },
|
|
||||||
|
|
||||||
A4: { type: "foret", label: "Forêt de Falconax" },
|
|
||||||
B4: { type: "monts", label: "Monts Crâneurs" },
|
|
||||||
C4: { type: "pont", label: "Pont de Giolii" },
|
|
||||||
D4: { type: "lac", label: "Lac de Foam" },
|
|
||||||
E4: { type: "plaines", label: "Plaines d’Orti" },
|
|
||||||
F4: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
G4: { type: "sanctuaire", label: "Sanctuaire Blanc" },
|
|
||||||
H4: { type: "plaines", label: "Plaines de Psark" },
|
|
||||||
I4: { type: "plaines", label: "Plaines de Xiax" },
|
|
||||||
J4: { type: "collines", label: "Collines d’Encre" },
|
|
||||||
K4: { type: "pont", label: "Pont de Fah" },
|
|
||||||
L4: { type: "sanctuaire", label: "Sanctuaire Mauve" },
|
|
||||||
M4: { type: "gouffre", label: "Gouffre Grisant" },
|
|
||||||
|
|
||||||
A5: { type: "plaines", label: "Plaines de Trilkh" },
|
|
||||||
B5: { type: "collines", label: "Collines de Tanegy" },
|
|
||||||
C5: { type: "marais", label: "Marais Flouants" },
|
|
||||||
D5: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
E5: { type: "monts", label: "Monts Brûlants" },
|
|
||||||
F5: { type: "cite", label: "Cité de Panople" },
|
|
||||||
G5: { type: "pont", label: "Pont d’Ik" },
|
|
||||||
H5: { type: "desert", label: "Désert de Krane" },
|
|
||||||
I5: { type: "desolation", label: "Désolation de Toujours" },
|
|
||||||
J5: { type: "marais", label: "Marais de Jab" },
|
|
||||||
K5: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
L5: { type: "collines", label: "Collines Suaves" },
|
|
||||||
M5: { type: "cite", label: "Cité Rimarde" },
|
|
||||||
|
|
||||||
A6: { type: "necropole", label: "Nécropole de Zniak" },
|
|
||||||
B6: { type: "foret", label: "Forêt de Bust" },
|
|
||||||
C6: { type: "cite", label: "Cité Pavois" },
|
|
||||||
D6: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
E6: { type: "sanctuaire", label: "Sanctuaire de Plaine" },
|
|
||||||
F6: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
G6: { type: "marais", label: "Marais Glutants" },
|
|
||||||
H6: { type: "monts", label: "Monts Gurdes" },
|
|
||||||
I6: { type: "necropole", label: "Nécropole de Xotar" },
|
|
||||||
J6: { type: "lac", label: "Lac d’Iaupe" },
|
|
||||||
K6: { type: "desolation", label: "Désolation de Poor" },
|
|
||||||
L6: { type: "foret", label: "Forêt Gueuse" },
|
|
||||||
M6: { type: "desolation", label: "Désolation de Presque" },
|
|
||||||
|
|
||||||
A7: { type: "plaines", label: "Plaines de l’Arc" },
|
|
||||||
B7: { type: "marais", label: "Marais Bluants" },
|
|
||||||
C7: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
D7: { type: "plaines", label: "Plaines d’Affa" },
|
|
||||||
E7: { type: "foret", label: "Forêt de Glusks" },
|
|
||||||
F7: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
G7: { type: "cite", label: "Cité de Terwa" },
|
|
||||||
H7: { type: "gouffre", label: "Gouffre de Kapfa" },
|
|
||||||
I7: { type: "plaines", label: "Plaines de Troo" },
|
|
||||||
J7: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
K7: { type: "cite", label: "Cité de Kolix" },
|
|
||||||
L7: { type: "gouffre", label: "Gouffre d’Episophe" },
|
|
||||||
M7: { type: "desert", label: "Désert de Lave" },
|
|
||||||
|
|
||||||
A8: { type: "gouffre", label: "Gouffre de Shok" },
|
|
||||||
B8: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
C8: { type: "foret", label: "Forêt Turmide" },
|
|
||||||
D8: { type: "cite", label: "Cité d’Olak" },
|
|
||||||
E8: { type: "plaines", label: "Plaines d’Iolise" },
|
|
||||||
F8: { type: "lac", label: "Lac des Chats" },
|
|
||||||
G8: { type: "plaines", label: "Plaines Sans Joie" },
|
|
||||||
H8: { type: "foret", label: "Forêt d’Ourf" },
|
|
||||||
I8: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
J8: { type: "monts", label: "Monts Barask" },
|
|
||||||
K8: { type: "desert", label: "Désert de Fumée" },
|
|
||||||
L8: { type: "monts", label: "Monts Tavelés" },
|
|
||||||
M8: { type: "plaines", label: "Plaines Lavées" },
|
|
||||||
|
|
||||||
A9: { type: "collines", label: "Collines de Korrex" },
|
|
||||||
B9: { type: "lac", label: "Lac de Lucre" },
|
|
||||||
C9: { type: "monts", label: "Monts Tuméfiés" },
|
|
||||||
D9: { type: "pont", label: "Pont d’Orx" },
|
|
||||||
E9: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
F9: { type: "plaines", label: "Plaines de Foe" },
|
|
||||||
G9: { type: "desolation", label: "Désolation de Sel" },
|
|
||||||
H9: { type: "collines", label: "Collines de Noirseul" },
|
|
||||||
I9: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
J9: { type: "marais", label: "Marais Gronchants" },
|
|
||||||
K9: { type: "sanctuaire", label: "Sanctuaire Noir" },
|
|
||||||
L9: { type: "collines", label: "Collines Cornues" },
|
|
||||||
M9: { type: "necropole", label: "Nécropole de Zonar" },
|
|
||||||
|
|
||||||
A10: { type: "sanctuaire", label: "Sanctuaire d’Olis" },
|
|
||||||
B10: { type: "monts", label: "Monts Salés" },
|
|
||||||
C10: { type: "marais", label: "Marais de Dom" },
|
|
||||||
D10: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
E10: { type: "gouffre", label: "Gouffre de Junk" },
|
|
||||||
F10: { type: "marais", label: "Marais Zultants" },
|
|
||||||
G10: { type: "cite", label: "Cité de Sergal" },
|
|
||||||
H10: { type: "plaines", label: "Plaines Noires" },
|
|
||||||
I10: { type: "lac", label: "Lac Wanito" },
|
|
||||||
J10: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
K10: { type: "plaines", label: "Plaines Jaunes" },
|
|
||||||
L10: { type: "desert", label: "Désert de Nicrop" },
|
|
||||||
M10: { type: "foret", label: "Forêt de Jajou" },
|
|
||||||
|
|
||||||
A11: { type: "desolation", label: "Désolation d’Hier" },
|
|
||||||
B11: { type: "cite", label: "Cité de Brilz" },
|
|
||||||
C11: { type: "pont", label: "Pont de Roï" },
|
|
||||||
D11: { type: "desolation", label: "Désolation de Partout" },
|
|
||||||
E11: { type: "lac", label: "Lac de Glinster" },
|
|
||||||
F11: { type: "cite", label: "Cité de Noape" },
|
|
||||||
G11: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
H11: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
I11: { type: "pont", label: "Pont de Yalm" },
|
|
||||||
J11: { type: "plaines", label: "Plaines de Miltiar" },
|
|
||||||
K11: { type: "cite", label: "Cité Tonnerre" },
|
|
||||||
L11: { type: "collines", label: "Collines de Kol" },
|
|
||||||
M11: { type: "cite", label: "Cité Crapaud" },
|
|
||||||
|
|
||||||
A12: { type: "plaines", label: "Plaines Sages" },
|
|
||||||
B12: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
C12: { type: "lac", label: "Lac de Fricassa" },
|
|
||||||
D12: { type: "collines", label: "Collines d’Huaï" },
|
|
||||||
E12: { type: "monts", label: "Monts Ajourés" },
|
|
||||||
F12: { type: "necropole", label: "Nécropole de Throat" },
|
|
||||||
G12: { type: "plaines", label: "Plaines de Lufmil" },
|
|
||||||
H12: { type: "collines", label: "Collines de Tooth" },
|
|
||||||
I12: { type: "gouffre", label: "Gouffre Abimeux" },
|
|
||||||
J12: { type: "cite", label: "Cité Folle" },
|
|
||||||
K12: { type: "desolation", label: "Désolation d’Amour" },
|
|
||||||
L12: { type: "plaines", label: "Plaines Venteuses" },
|
|
||||||
M12: { type: "collines", label: "Collines Révulsantes" },
|
|
||||||
|
|
||||||
A13: { type: "fleuve", label: "Fleuve de l'Oubli" },
|
|
||||||
B13: { type: "gouffre", label: "Gouffre des Litiges" },
|
|
||||||
C13: { type: "desert", label: "Désert de Neige" },
|
|
||||||
D13: { type: "cite", label: "Cité Sordide" },
|
|
||||||
E13: { type: "plaines", label: "Plaines de Xnez" },
|
|
||||||
F13: { type: "foret", label: "Forêt des Cris" },
|
|
||||||
G13: { type: "plaines", label: "Plaines Calcaires" },
|
|
||||||
H13: { type: "desolation", label: "Désolation de Rien" },
|
|
||||||
I13: { type: "monts", label: "Monts Bigleux" },
|
|
||||||
J13: { type: "gouffre", label: "Gouffre de Gromph" },
|
|
||||||
K13: { type: "foret", label: "Forêt de Kluth" },
|
|
||||||
L13: { type: "monts", label: "Monts Dormants" },
|
|
||||||
M13: { type: "plaines", label: "Plaines d’Anjou" },
|
|
||||||
|
|
||||||
A14: { type: "collines", label: "Collines de Stolis" },
|
|
||||||
B14: { type: "necropole", label: "Nécropole de Gorlo" },
|
|
||||||
C14: { type: "foret", label: "Forêt de Bissam" },
|
|
||||||
D14: { type: "sanctuaire", label: "Sanctuaire Plat" },
|
|
||||||
E14: { type: "monts", label: "Monts de Quath" },
|
|
||||||
F14: { type: "plaines", label: "Plaines Brisées" },
|
|
||||||
G14: { type: "desert", label: "Désert de Sek" },
|
|
||||||
H14: { type: "plaines", label: "Plaines Blanches" },
|
|
||||||
I14: { type: "cite", label: "Cité Destituée" },
|
|
||||||
J14: { type: "desert", label: "Désert de Sank" },
|
|
||||||
K14: { type: "necropole", label: "Nécropole d’Antinéar" },
|
|
||||||
L14: { type: "plaines", label: "Plaines de Jislith" },
|
|
||||||
M14: { type: "desolation", label: "Désolation d’Après" },
|
|
||||||
|
|
||||||
A15: { type: "cite", label: "Cité de Mielh" },
|
|
||||||
C15: { type: "plaines", label: "Plaines de Toué" },
|
|
||||||
E15: { type: "foret", label: "Forêt des Furies" },
|
|
||||||
G15: { type: "plaines", label: "Plaines des Soupirs" },
|
|
||||||
I15: { type: "monts", label: "Monts des Dragées" },
|
|
||||||
K15: { type: "collines", label: "Collines Pourpres" },
|
|
||||||
M15: { type: "cite", label: "Cité de Klana" }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const TMRType = {
|
export const FLEUVE_COORD = 'Fleuve'
|
||||||
cite: { name: "cité", genre: "f" },
|
|
||||||
sanctuaire: { name: "sanctuaire", genre: 'm' },
|
const TMRMapping = {
|
||||||
plaines: { name: "plaines", genre: "fp" },
|
Fleuve: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
pont: { name: "pont", genre: "m" },
|
A1: { type: TMRType.cite.type, label: "Cité Vide" },
|
||||||
collines: { name: "collines", genre: "p" },
|
B1: { type: TMRType.plaines.type, label: "Plaines d’Assorh" },
|
||||||
foret: { name: "forêt", genre: "f" },
|
C1: { type: TMRType.necropole.type, label: "Nécropole de Kroak" },
|
||||||
monts: { name: "monts", genre: "p" },
|
D1: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
desert: { name: "désert", genre: "m" },
|
E1: { type: TMRType.monts.type, label: "Monts de Kanaï" },
|
||||||
fleuve: { name: "fleuve", genre: "m" },
|
F1: { type: TMRType.cite.type, label: "Cité Glauque" },
|
||||||
lac: { name: "lac", genre: "m" },
|
G1: { type: TMRType.desolation.type, label: "Désolation de Jamais" },
|
||||||
marais: { name: "marais", genre: "m" },
|
H1: { type: TMRType.lac.type, label: "Lac d’Anticalme" },
|
||||||
gouffre: { name: "gouffre", genre: "m" },
|
I1: { type: TMRType.plaines.type, label: "Plaines Grises" },
|
||||||
necropole: { name: "nécropole", genre: "f" },
|
J1: { type: TMRType.monts.type, label: "Monts Fainéants" },
|
||||||
desolation: { name: "désolation", genre: "f" }
|
K1: { type: TMRType.cite.type, label: "Cité d’Onkause" },
|
||||||
|
L1: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
M1: { type: TMRType.cite.type, label: "Cité Jalouse" },
|
||||||
|
A2: { type: TMRType.desert.type, label: "Désert de Mieux" },
|
||||||
|
B2: { type: TMRType.collines.type, label: "Collines de Dawell" },
|
||||||
|
C2: { type: TMRType.marais.type, label: "Marais Glignants" },
|
||||||
|
D2: { type: TMRType.cite.type, label: "Cité de Frost" },
|
||||||
|
E2: { type: TMRType.plaines.type, label: "Plaines de Fiask" },
|
||||||
|
F2: { type: TMRType.lac.type, label: "Lac de Misère" },
|
||||||
|
G2: { type: TMRType.marais.type, label: "Marais Nuisants" },
|
||||||
|
H2: { type: TMRType.collines.type, label: "Collines de Parta" },
|
||||||
|
I2: { type: TMRType.foret.type, label: "Forêt Fade" },
|
||||||
|
J2: { type: TMRType.desert.type, label: "Désert de Poly" },
|
||||||
|
K2: { type: TMRType.foret.type, label: "Forêt Tamée" },
|
||||||
|
L2: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
M2: { type: TMRType.necropole.type, label: "Nécropole de Logos" },
|
||||||
|
A3: { type: TMRType.desolation.type, label: "Désolation de Demain" },
|
||||||
|
B3: { type: TMRType.plaines.type, label: "Plaines de Rubéga" },
|
||||||
|
C3: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
D3: { type: TMRType.gouffre.type, label: "Gouffre d’Oki" },
|
||||||
|
E3: { type: TMRType.foret.type, label: "Forêt d’Estoubh" },
|
||||||
|
F3: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
G3: { type: TMRType.gouffre.type, label: "Gouffre de Sun" },
|
||||||
|
H3: { type: TMRType.foret.type, label: "Forêt de Ganna" },
|
||||||
|
I3: { type: TMRType.monts.type, label: "Monts Grinçants" },
|
||||||
|
J3: { type: TMRType.cite.type, label: "Cité Venin" },
|
||||||
|
K3: { type: TMRType.plaines.type, label: "Plaines de Dois" },
|
||||||
|
L3: { type: TMRType.lac.type, label: "Lac Laineux" },
|
||||||
|
M3: { type: TMRType.monts.type, label: "Monts de Vdah" },
|
||||||
|
A4: { type: TMRType.foret.type, label: "Forêt de Falconax" },
|
||||||
|
B4: { type: TMRType.monts.type, label: "Monts Crâneurs" },
|
||||||
|
C4: { type: TMRType.pont.type, label: "Pont de Giolii" },
|
||||||
|
D4: { type: TMRType.lac.type, label: "Lac de Foam" },
|
||||||
|
E4: { type: TMRType.plaines.type, label: "Plaines d’Orti" },
|
||||||
|
F4: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
G4: { type: TMRType.sanctuaire.type, label: "Sanctuaire Blanc" },
|
||||||
|
H4: { type: TMRType.plaines.type, label: "Plaines de Psark" },
|
||||||
|
I4: { type: TMRType.plaines.type, label: "Plaines de Xiax" },
|
||||||
|
J4: { type: TMRType.collines.type, label: "Collines d’Encre" },
|
||||||
|
K4: { type: TMRType.pont.type, label: "Pont de Fah" },
|
||||||
|
L4: { type: TMRType.sanctuaire.type, label: "Sanctuaire Mauve" },
|
||||||
|
M4: { type: TMRType.gouffre.type, label: "Gouffre Grisant" },
|
||||||
|
A5: { type: TMRType.plaines.type, label: "Plaines de Trilkh" },
|
||||||
|
B5: { type: TMRType.collines.type, label: "Collines de Tanegy" },
|
||||||
|
C5: { type: TMRType.marais.type, label: "Marais Flouants" },
|
||||||
|
D5: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
E5: { type: TMRType.monts.type, label: "Monts Brûlants" },
|
||||||
|
F5: { type: TMRType.cite.type, label: "Cité de Panople" },
|
||||||
|
G5: { type: TMRType.pont.type, label: "Pont d’Ik" },
|
||||||
|
H5: { type: TMRType.desert.type, label: "Désert de Krane" },
|
||||||
|
I5: { type: TMRType.desolation.type, label: "Désolation de Toujours" },
|
||||||
|
J5: { type: TMRType.marais.type, label: "Marais de Jab" },
|
||||||
|
K5: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
L5: { type: TMRType.collines.type, label: "Collines Suaves" },
|
||||||
|
M5: { type: TMRType.cite.type, label: "Cité Rimarde" },
|
||||||
|
A6: { type: TMRType.necropole.type, label: "Nécropole de Zniak" },
|
||||||
|
B6: { type: TMRType.foret.type, label: "Forêt de Bust" },
|
||||||
|
C6: { type: TMRType.cite.type, label: "Cité Pavois" },
|
||||||
|
D6: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
E6: { type: TMRType.sanctuaire.type, label: "Sanctuaire de Plaine" },
|
||||||
|
F6: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
G6: { type: TMRType.marais.type, label: "Marais Glutants" },
|
||||||
|
H6: { type: TMRType.monts.type, label: "Monts Gurdes" },
|
||||||
|
I6: { type: TMRType.necropole.type, label: "Nécropole de Xotar" },
|
||||||
|
J6: { type: TMRType.lac.type, label: "Lac d’Iaupe" },
|
||||||
|
K6: { type: TMRType.desolation.type, label: "Désolation de Poor" },
|
||||||
|
L6: { type: TMRType.foret.type, label: "Forêt Gueuse" },
|
||||||
|
M6: { type: TMRType.desolation.type, label: "Désolation de Presque" },
|
||||||
|
A7: { type: TMRType.plaines.type, label: "Plaines de l’Arc" },
|
||||||
|
B7: { type: TMRType.marais.type, label: "Marais Bluants" },
|
||||||
|
C7: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
D7: { type: TMRType.plaines.type, label: "Plaines d’Affa" },
|
||||||
|
E7: { type: TMRType.foret.type, label: "Forêt de Glusks" },
|
||||||
|
F7: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
G7: { type: TMRType.cite.type, label: "Cité de Terwa" },
|
||||||
|
H7: { type: TMRType.gouffre.type, label: "Gouffre de Kapfa" },
|
||||||
|
I7: { type: TMRType.plaines.type, label: "Plaines de Troo" },
|
||||||
|
J7: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
K7: { type: TMRType.cite.type, label: "Cité de Kolix" },
|
||||||
|
L7: { type: TMRType.gouffre.type, label: "Gouffre d’Episophe" },
|
||||||
|
M7: { type: TMRType.desert.type, label: "Désert de Lave" },
|
||||||
|
A8: { type: TMRType.gouffre.type, label: "Gouffre de Shok" },
|
||||||
|
B8: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
C8: { type: TMRType.foret.type, label: "Forêt Turmide" },
|
||||||
|
D8: { type: TMRType.cite.type, label: "Cité d’Olak" },
|
||||||
|
E8: { type: TMRType.plaines.type, label: "Plaines d’Iolise" },
|
||||||
|
F8: { type: TMRType.lac.type, label: "Lac des Chats" },
|
||||||
|
G8: { type: TMRType.plaines.type, label: "Plaines Sans Joie" },
|
||||||
|
H8: { type: TMRType.foret.type, label: "Forêt d’Ourf" },
|
||||||
|
I8: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
J8: { type: TMRType.monts.type, label: "Monts Barask" },
|
||||||
|
K8: { type: TMRType.desert.type, label: "Désert de Fumée" },
|
||||||
|
L8: { type: TMRType.monts.type, label: "Monts Tavelés" },
|
||||||
|
M8: { type: TMRType.plaines.type, label: "Plaines Lavées" },
|
||||||
|
A9: { type: TMRType.collines.type, label: "Collines de Korrex" },
|
||||||
|
B9: { type: TMRType.lac.type, label: "Lac de Lucre" },
|
||||||
|
C9: { type: TMRType.monts.type, label: "Monts Tuméfiés" },
|
||||||
|
D9: { type: TMRType.pont.type, label: "Pont d’Orx" },
|
||||||
|
E9: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
F9: { type: TMRType.plaines.type, label: "Plaines de Foe" },
|
||||||
|
G9: { type: TMRType.desolation.type, label: "Désolation de Sel" },
|
||||||
|
H9: { type: TMRType.collines.type, label: "Collines de Noirseul" },
|
||||||
|
I9: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
J9: { type: TMRType.marais.type, label: "Marais Gronchants" },
|
||||||
|
K9: { type: TMRType.sanctuaire.type, label: "Sanctuaire Noir" },
|
||||||
|
L9: { type: TMRType.collines.type, label: "Collines Cornues" },
|
||||||
|
M9: { type: TMRType.necropole.type, label: "Nécropole de Zonar" },
|
||||||
|
A10: { type: TMRType.sanctuaire.type, label: "Sanctuaire d’Olis" },
|
||||||
|
B10: { type: TMRType.monts.type, label: "Monts Salés" },
|
||||||
|
C10: { type: TMRType.marais.type, label: "Marais de Dom" },
|
||||||
|
D10: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
E10: { type: TMRType.gouffre.type, label: "Gouffre de Junk" },
|
||||||
|
F10: { type: TMRType.marais.type, label: "Marais Zultants" },
|
||||||
|
G10: { type: TMRType.cite.type, label: "Cité de Sergal" },
|
||||||
|
H10: { type: TMRType.plaines.type, label: "Plaines Noires" },
|
||||||
|
I10: { type: TMRType.lac.type, label: "Lac Wanito" },
|
||||||
|
J10: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
K10: { type: TMRType.plaines.type, label: "Plaines Jaunes" },
|
||||||
|
L10: { type: TMRType.desert.type, label: "Désert de Nicrop" },
|
||||||
|
M10: { type: TMRType.foret.type, label: "Forêt de Jajou" },
|
||||||
|
A11: { type: TMRType.desolation.type, label: "Désolation d’Hier" },
|
||||||
|
B11: { type: TMRType.cite.type, label: "Cité de Brilz" },
|
||||||
|
C11: { type: TMRType.pont.type, label: "Pont de Roï" },
|
||||||
|
D11: { type: TMRType.desolation.type, label: "Désolation de Partout" },
|
||||||
|
E11: { type: TMRType.lac.type, label: "Lac de Glinster" },
|
||||||
|
F11: { type: TMRType.cite.type, label: "Cité de Noape" },
|
||||||
|
G11: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
H11: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
I11: { type: TMRType.pont.type, label: "Pont de Yalm" },
|
||||||
|
J11: { type: TMRType.plaines.type, label: "Plaines de Miltiar" },
|
||||||
|
K11: { type: TMRType.cite.type, label: "Cité Tonnerre" },
|
||||||
|
L11: { type: TMRType.collines.type, label: "Collines de Kol" },
|
||||||
|
M11: { type: TMRType.cite.type, label: "Cité Crapaud" },
|
||||||
|
A12: { type: TMRType.plaines.type, label: "Plaines Sages" },
|
||||||
|
B12: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
C12: { type: TMRType.lac.type, label: "Lac de Fricassa" },
|
||||||
|
D12: { type: TMRType.collines.type, label: "Collines d’Huaï" },
|
||||||
|
E12: { type: TMRType.monts.type, label: "Monts Ajourés" },
|
||||||
|
F12: { type: TMRType.necropole.type, label: "Nécropole de Throat" },
|
||||||
|
G12: { type: TMRType.plaines.type, label: "Plaines de Lufmil" },
|
||||||
|
H12: { type: TMRType.collines.type, label: "Collines de Tooth" },
|
||||||
|
I12: { type: TMRType.gouffre.type, label: "Gouffre Abimeux" },
|
||||||
|
J12: { type: TMRType.cite.type, label: "Cité Folle" },
|
||||||
|
K12: { type: TMRType.desolation.type, label: "Désolation d’Amour" },
|
||||||
|
L12: { type: TMRType.plaines.type, label: "Plaines Venteuses" },
|
||||||
|
M12: { type: TMRType.collines.type, label: "Collines Révulsantes" },
|
||||||
|
A13: { type: TMRType.fleuve.type, label: "Fleuve de l'Oubli" },
|
||||||
|
B13: { type: TMRType.gouffre.type, label: "Gouffre des Litiges" },
|
||||||
|
C13: { type: TMRType.desert.type, label: "Désert de Neige" },
|
||||||
|
D13: { type: TMRType.cite.type, label: "Cité Sordide" },
|
||||||
|
E13: { type: TMRType.plaines.type, label: "Plaines de Xnez" },
|
||||||
|
F13: { type: TMRType.foret.type, label: "Forêt des Cris" },
|
||||||
|
G13: { type: TMRType.plaines.type, label: "Plaines Calcaires" },
|
||||||
|
H13: { type: TMRType.desolation.type, label: "Désolation de Rien" },
|
||||||
|
I13: { type: TMRType.monts.type, label: "Monts Bigleux" },
|
||||||
|
J13: { type: TMRType.gouffre.type, label: "Gouffre de Gromph" },
|
||||||
|
K13: { type: TMRType.foret.type, label: "Forêt de Kluth" },
|
||||||
|
L13: { type: TMRType.monts.type, label: "Monts Dormants" },
|
||||||
|
M13: { type: TMRType.plaines.type, label: "Plaines d’Anjou" },
|
||||||
|
A14: { type: TMRType.collines.type, label: "Collines de Stolis" },
|
||||||
|
B14: { type: TMRType.necropole.type, label: "Nécropole de Gorlo" },
|
||||||
|
C14: { type: TMRType.foret.type, label: "Forêt de Bissam" },
|
||||||
|
D14: { type: TMRType.sanctuaire.type, label: "Sanctuaire Plat" },
|
||||||
|
E14: { type: TMRType.monts.type, label: "Monts de Quath" },
|
||||||
|
F14: { type: TMRType.plaines.type, label: "Plaines Brisées" },
|
||||||
|
G14: { type: TMRType.desert.type, label: "Désert de Sek" },
|
||||||
|
H14: { type: TMRType.plaines.type, label: "Plaines Blanches" },
|
||||||
|
I14: { type: TMRType.cite.type, label: "Cité Destituée" },
|
||||||
|
J14: { type: TMRType.desert.type, label: "Désert de Sank" },
|
||||||
|
K14: { type: TMRType.necropole.type, label: "Nécropole d’Antinéar" },
|
||||||
|
L14: { type: TMRType.plaines.type, label: "Plaines de Jislith" },
|
||||||
|
M14: { type: TMRType.desolation.type, label: "Désolation d’Après" },
|
||||||
|
A15: { type: TMRType.cite.type, label: "Cité de Mielh" },
|
||||||
|
C15: { type: TMRType.plaines.type, label: "Plaines de Toué" },
|
||||||
|
E15: { type: TMRType.foret.type, label: "Forêt des Furies" },
|
||||||
|
G15: { type: TMRType.plaines.type, label: "Plaines des Soupirs" },
|
||||||
|
I15: { type: TMRType.monts.type, label: "Monts des Dragées" },
|
||||||
|
K15: { type: TMRType.collines.type, label: "Collines Pourpres" },
|
||||||
|
M15: { type: TMRType.cite.type, label: "Cité de Klana" }
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -251,13 +239,16 @@ const TMR_MOVE = {
|
|||||||
*/
|
*/
|
||||||
export class TMRUtility {
|
export class TMRUtility {
|
||||||
static init() {
|
static init() {
|
||||||
|
|
||||||
for (let coord in TMRMapping) {
|
for (let coord in TMRMapping) {
|
||||||
const tmr = TMRMapping[coord];
|
const tmr = TMRMapping[coord]
|
||||||
tmr.coord = coord;
|
tmr.coord = coord
|
||||||
tmr.oddq = TMRUtility.coordTMRToOddq(coord);
|
tmr.genre = TMRType[tmr.type].genre
|
||||||
tmr.genre = TMRType[tmr.type].genre;
|
if (coord != FLEUVE_COORD) {
|
||||||
|
tmr.oddq = TMRUtility.coordTMRToOddq(coord)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
let tmrByType = Misc.classify(Object.values(TMRMapping));
|
let tmrByType = Misc.classify(Object.values(TMRMapping).filter(it => it.coord != FLEUVE_COORD))
|
||||||
for (const [type, list] of Object.entries(tmrByType)) {
|
for (const [type, list] of Object.entries(tmrByType)) {
|
||||||
TMRType[type].list = list;
|
TMRType[type].list = list;
|
||||||
}
|
}
|
||||||
@ -265,14 +256,17 @@ export class TMRUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static verifyTMRCoord(coord) {
|
static verifyTMRCoord(coord) {
|
||||||
return Grammar.equalsInsensitive(coord, 'Fleuve') || TMRUtility.getTMR(coord);
|
return Grammar.equalsInsensitive(coord, FLEUVE_COORD) || TMRUtility.getTMR(coord);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static getTMR(coord) {
|
static getTMR(coord) {
|
||||||
return coord == 'Fleuve' ? TMRMapping['D1'] : TMRMapping[coord];
|
return coord == FLEUVE_COORD ? TMRMapping['D1'] : TMRMapping[coord];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static isFleuve(coord) {
|
||||||
|
return TMRMapping[coord]?.type == TMRType.fleuve.type
|
||||||
|
}
|
||||||
static getTMRLabel(coord) {
|
static getTMRLabel(coord) {
|
||||||
return TMRUtility.getTMR(coord)?.label ?? (coord + ": case inconnue");
|
return TMRUtility.getTMR(coord)?.label ?? (coord + ": case inconnue");
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="system.isrituel">Rituel</label>
|
<label for="system.isrituel">Rituel</label>
|
||||||
<input class="attribute-value" type="checkbox" name="system.isrituel" {{#if system.isrituel}}checked{{/if}}/>
|
<input class="attribute-value" type="checkbox" name="system.isrituel" {{#if system.isrituel}}checked{{/if}} />
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="system.duree">Durée</label>
|
<label for="system.duree">Durée</label>
|
||||||
@ -59,14 +59,23 @@
|
|||||||
<label for="system.xp">XP</label>
|
<label for="system.xp">XP</label>
|
||||||
<input class="attribute-value" type="text" name="system.xp" value="{{system.xp}}" data-dtype="Number"/>
|
<input class="attribute-value" type="text" name="system.xp" value="{{system.xp}}" data-dtype="Number"/>
|
||||||
</div>
|
</div>
|
||||||
{{#each bonusCaseList as |bcData key|}}
|
<hr>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="caseValue">Case/Bonus :</label>
|
<label class="flex-grow-2" for="caseTmrAdd">Nouveau bonus de case en</label>
|
||||||
<input class="attribute-value" type="text" name="caseValue" value="{{bcData.case}}" data-dtype="String"/>
|
<input class="flex-grow-0-5 attribute-value" type="text" name="caseTmrAdd" value="" maxlength="7" data-dtype="String"/>
|
||||||
<input class="attribute-value" type="text" name="bonusValue" value="{{bcData.bonus}}" data-dtype="Number"/>
|
</div>
|
||||||
|
{{#each bonusCaseList as |caseTmr key|}}
|
||||||
|
<div class="form-group">
|
||||||
|
<label style="flex-grow: 5;">Bonus en {{caseTmr-label caseTmr.case}} ({{caseTmr.case}})</label>
|
||||||
|
<input type="text" name="caseTmrCoord" value="{{caseTmr.case}}" data-dtype="String" hidden/>
|
||||||
|
|
||||||
|
<input class="flex-grow-0-5 flex-group-right" type="number" name="caseTmrBonus" value="{{caseTmr.bonus}}" data-dtype="Number"/>
|
||||||
|
<a class="flex-shrink delete-bonus-case"
|
||||||
|
data-deleteCoord="{{caseTmr.case}}"
|
||||||
|
data-tooltip="Supprimer le bonus de case"><i class="fas fa-trash"></i></a>
|
||||||
</div>
|
</div>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
|
<hr>
|
||||||
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
{{>"systems/foundryvtt-reve-de-dragon/templates/partial-item-description.html"}}
|
||||||
</section>
|
</section>
|
||||||
</form>
|
</form>
|
||||||
|
Loading…
Reference in New Issue
Block a user