Prise en compte des milieux
Les filtrages par milieux prennent en compte la rareté/fréquence du milieu
This commit is contained in:
@ -4,6 +4,7 @@ const RARETE_FREQUENTE = { code: 'Frequente', label: 'Fréquente', frequence: 18
|
||||
const RARETE_RARE = { code: 'Rare', label: 'Rare', frequence: 6, min: 3, max: 12 };
|
||||
const RARETE_RARISSIME = { code: 'Rarissime', label: 'Rarissime', frequence: 2, min: 1, max: 4 };
|
||||
const RARETE_INEXISTANT = { code: 'Inexistant', label: 'Inexistant', frequence: 0, min: 0, max: 0 };
|
||||
const RARETE_EGALE = { code: 'eqal', label: 'Egal', frequence: 1, min: 1, max: 1 };
|
||||
|
||||
const RARETES = [
|
||||
RARETE_COMMUNE,
|
||||
@ -15,50 +16,16 @@ const RARETES = [
|
||||
|
||||
export class RdDRaretes {
|
||||
|
||||
static getRareteByCode(code = undefined) {
|
||||
static rareteFrequente() { return RARETE_FREQUENTE; }
|
||||
static rareteEgale() { return RARETE_EGALE; }
|
||||
static raretes() { return RARETES; }
|
||||
|
||||
static byCode(code = undefined) {
|
||||
return RARETES.find(it => it.code == code) ?? RARETE_FREQUENTE;
|
||||
}
|
||||
|
||||
static getChamp(rarete, field = undefined) {
|
||||
const selected = this.getRareteByCode(rarete);
|
||||
return field ? selected[field] : selected[frequence];
|
||||
return RdDRaretes.byCode(rarete)[field ?? 'frequence'];
|
||||
}
|
||||
|
||||
static rareteFrequente() {
|
||||
return RARETE_FREQUENTE;
|
||||
}
|
||||
|
||||
static raretes() {
|
||||
return RARETES;
|
||||
}
|
||||
|
||||
static selonEnvironnement(item, milieux = undefined) {
|
||||
const list = item.getEnvironnement(milieux);
|
||||
const freqMax = Math.max(0, ...list.map(env => env.frequence));
|
||||
const env = list.find(env => env.frequence == freqMax);
|
||||
if (env) {
|
||||
return RdDRaretes.getRareteByCode(env.rarete)
|
||||
}
|
||||
if (milieux == undefined) {
|
||||
return RdDRaretes.selonQualite(item)
|
||||
}
|
||||
return RARETE_INEXISTANT;
|
||||
}
|
||||
|
||||
static selonQualite(item) {
|
||||
const qualite = item.system.qualite ?? 0;
|
||||
if (qualite <= 0) {
|
||||
return RARETE_COMMUNE
|
||||
}
|
||||
if (qualite <= 3) {
|
||||
return RARETE_FREQUENTE
|
||||
}
|
||||
if (qualite <= 6) {
|
||||
return RARETE_RARE
|
||||
}
|
||||
if (qualite <= 9) {
|
||||
return RARETE_RARISSIME
|
||||
}
|
||||
return RARETE_INEXISTANT
|
||||
}
|
||||
}
|
@ -70,7 +70,7 @@ export class RdDItemInventaireSheet extends RdDItemSheet {
|
||||
|
||||
$changeRarete(event, updated) {
|
||||
const code = this.html.find(event.currentTarget).val();
|
||||
const rarete = RdDRaretes.getRareteByCode(code);
|
||||
const rarete = RdDRaretes.byCode(code);
|
||||
updated.rarete = rarete.code;
|
||||
updated.frequence = rarete.frequence;
|
||||
}
|
||||
@ -81,21 +81,22 @@ export class RdDItemInventaireSheet extends RdDItemSheet {
|
||||
ui.notifications.warn(`Choisissez le milieu dans lequel se trouve le/la ${this.item.name}`);
|
||||
return
|
||||
}
|
||||
const list = this.item.getEnvironnement();
|
||||
const list = this.item.getEnvironnements();
|
||||
const exists = list.find(it => it.milieu == milieu);
|
||||
if (exists) {
|
||||
ui.notifications.warn(`${this.item.name} a déjà une rareté ${exists.rarete} en ${milieu} (fréquence: ${exists.frequence})`);
|
||||
return
|
||||
}
|
||||
const rarete = RdDRaretes.rareteFrequente();
|
||||
const newList = [...list, { milieu, rarete: rarete.code, frequence: rarete.frequence }].sort(Misc.ascending(it => it.milieu))
|
||||
const added = { milieu, rarete: rarete.code, frequence: rarete.frequence };
|
||||
const newList = [added, ...list].sort(Misc.ascending(it => it.milieu))
|
||||
await this.item.update({ 'system.environnement': newList })
|
||||
}
|
||||
|
||||
async onDeleteMilieu(event) {
|
||||
const milieu = this.$getEventMilieu(event);
|
||||
if (milieu != undefined) {
|
||||
const newList = this.item.getEnvironnement().filter(it => it.milieu != milieu)
|
||||
const newList = this.item.getEnvironnements().filter(it => it.milieu != milieu)
|
||||
.sort(Misc.ascending(it => it.milieu));
|
||||
await this.item.update({ 'system.environnement': newList });
|
||||
}
|
||||
|
Reference in New Issue
Block a user