Amélioration sur les voies de Draconic
- Ne pas proposer les voies de Draconic à -11 pour lire un signe draconic ou lancer un sort - Trier les voies par ordre décroissant pour le sorts à voies multiples - Les rencontres et les maîtrises dans les TMR peuvent être vaincues sans draconic si les voies sont négatives
This commit is contained in:
+5
-2
@@ -4,8 +4,11 @@
|
||||
|
||||
- suppression du type de TMR "Inconnu" des feuilles de création de signes draconiques (ce type sert uniquement pour le cas où une case saisie à la main est incorrecte)
|
||||
- les jets de dés /rdd utilisent le mode de visibilité sélectionné
|
||||
- Draconic
|
||||
- Ne pas proposer les voies de Draconic à -11 pour lire un signe draconic
|
||||
- Voies de Draconic
|
||||
- Ne pas proposer les voies de Draconic à -11 pour lire un signe draconic ou lancer un sort
|
||||
- Trier les voies par ordre décroissant pour le sorts à voies multiples
|
||||
- Les rencontres et les maîtrises dans les TMR peuvent être vaincues sans
|
||||
draconic si les voies sont négatives
|
||||
|
||||
## 13.0.47 - Les goûts et les couleurs d'Illisys
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ export class RdDActorSheet extends RdDBaseActorSangSheet {
|
||||
montures: this.actor.listeMontures(),
|
||||
suivants: this.actor.listeSuivants()
|
||||
}
|
||||
if (this.actor.getBestDraconic().system.niveau > -11 && !this.actor.isHautRevant()) {
|
||||
if (this.actor.getDraconics().find(it => it.system.niveau > -11) && !this.actor.isHautRevant()) {
|
||||
ui.notifications.error(`${this.actor.name} a des compétences draconiques, mais pas le don de Haut-Rêve!
|
||||
<br>Ajoutez-lui la tête "Don de Haut-Rêve" pour lui permettre d'utiliser ses compétences et d'accéder aux terres médianes du rêve`);
|
||||
}
|
||||
|
||||
+3
-4
@@ -41,7 +41,7 @@ import { RdDItemCompetence } from "./item-competence.js";
|
||||
import { RdDItemSigneDraconique } from "./item/signedraconique.js";
|
||||
import { RdDRencontre } from "./item/rencontre.js";
|
||||
import { DialogSelect } from "./dialog-select.js";
|
||||
import { CATEGORIES_COMPETENCES, PAS_DE_DRACONIC, POSSESSION_SANS_DRACONIC } from "./item/base-items.js";
|
||||
import { CATEGORIES_COMPETENCES, PAS_DE_DRACONIC, SANS_DRACONIC } from "./item/base-items.js";
|
||||
|
||||
import { RdDRollResult } from "./rdd-roll-result.js";
|
||||
import { RdDInitiative } from "./initiative.mjs";
|
||||
@@ -165,10 +165,9 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
? this.itemTypes[ITEM_TYPES.competence].filter(it => it.system.categorie == CATEGORIES_COMPETENCES.draconic.key)
|
||||
: []
|
||||
}
|
||||
getBestDraconic() { return foundry.utils.duplicate([...this.getDraconics(), PAS_DE_DRACONIC].sort(Misc.descending(it => it.system.niveau)).find(it => true)) }
|
||||
|
||||
getConjurationNaturelle() {
|
||||
return new RdDItemCompetence(POSSESSION_SANS_DRACONIC)
|
||||
return new RdDItemCompetence(SANS_DRACONIC)
|
||||
}
|
||||
|
||||
isForceInsuffisante(forceRequise) {
|
||||
@@ -694,7 +693,7 @@ export class RdDActor extends RdDBaseActorSang {
|
||||
const rencontre = await game.system.rdd.rencontresTMR.getReveDeDragon(force);
|
||||
let rollData = {
|
||||
actor: this,
|
||||
competence: this.getDraconicOuPossession().find(it => true),
|
||||
competence: this.getBestDraconic(),
|
||||
canClose: false,
|
||||
rencontre: rencontre,
|
||||
tmr: true,
|
||||
|
||||
@@ -22,7 +22,7 @@ import { DialogValidationEncaissement } from "../dialog-validation-encaissement.
|
||||
import { RdDCombat } from "../rdd-combat.js";
|
||||
import { RdDEmpoignade } from "../rdd-empoignade.js";
|
||||
import { RdDPossession } from "../rdd-possession.js";
|
||||
import { BASE_CORPS_A_CORPS, BASE_ESQUIVE, CATEGORIES_COMPETENCES_CREATURES } from "../item/base-items.js";
|
||||
import { BASE_CORPS_A_CORPS, BASE_ESQUIVE, CATEGORIES_COMPETENCES_CREATURES, SANS_DRACONIC } from "../item/base-items.js";
|
||||
import { RollDataAjustements } from "../rolldata-ajustements-v1.js";
|
||||
import { MappingCreatureArme } from "../item/mapping-creature-arme.mjs";
|
||||
import RollDialog from "../roll/roll-dialog.mjs";
|
||||
@@ -102,17 +102,18 @@ export class RdDBaseActorReve extends RdDBaseActor {
|
||||
}
|
||||
|
||||
getDraconics() { return [] }
|
||||
getDraconicOuPossession() {
|
||||
|
||||
getDraconicOuNaturel(options = {possession: false}) {
|
||||
return [
|
||||
...this.getDraconics(),
|
||||
...this.itemTypes[ITEM_TYPES.competencecreature].filter(it => it.isCompetencePossession()),
|
||||
this.getConjurationNaturelle()
|
||||
options.possession ? this.getConjurationNaturelle() : SANS_DRACONIC
|
||||
].sort(Misc.descending(it => it.system.niveau));
|
||||
}
|
||||
|
||||
getConjurations() {
|
||||
return this.getDraconicOuPossession()
|
||||
.map(it => this.toActionConjuration(it))
|
||||
getBestDraconic(options = {possession: false}) {
|
||||
return this.getDraconicOuNaturel(options)
|
||||
.find(it => true)
|
||||
}
|
||||
|
||||
getConjurationNaturelle() {
|
||||
|
||||
+9
-4
@@ -70,20 +70,25 @@ export class RdDItemSort extends RdDItem {
|
||||
static diffReve(sort) { return RdDItemSort.toVar((sort.system.difficulte.match(/\-?(\d)+/) ? 'R' : 'R ') + sort.system.difficulte) }
|
||||
static coutReve(sort) { return RdDItemSort.toVar((Number.isInteger(sort.system.ptreve) || sort.system.ptreve.match(/(\d)+\+?/) ? 'r' : 'r ') + sort.system.ptreve) }
|
||||
static getDraconicsSort(competencesDraconic, sort) {
|
||||
// se baser sur la voie du sort?
|
||||
|
||||
function getVoies() {
|
||||
switch (Grammar.toLowerCaseNoAccent(sort.name)) {
|
||||
case "lecture d'aura":
|
||||
case "detection d'aura":
|
||||
return competencesDraconic
|
||||
case "annulation de magie":
|
||||
return competencesDraconic.filter(it => !RdDItemCompetence.isThanatos(it))
|
||||
default:
|
||||
return sort.system.draconic.split('/').map(voie => RdDItemCompetence.getVoieDraconic(competencesDraconic, voie))
|
||||
}
|
||||
const voies = sort.system.draconic.split('/')
|
||||
return voies.map(voie => RdDItemCompetence.getVoieDraconic(competencesDraconic, voie))
|
||||
}
|
||||
return getVoies()
|
||||
.filter(it => it.system.niveau > -11)
|
||||
.sort(Misc.descending(it => it.system.niveau))
|
||||
}
|
||||
|
||||
static getBestDraconicSort(competencesDraconic, sort) {
|
||||
return RdDItemSort.getDraconicsSort(competencesDraconic, sort).sort(Misc.descending(it => it.system.niveau)).find(it => true)
|
||||
return RdDItemSort.getDraconicsSort(competencesDraconic, sort).find(it => true)
|
||||
}
|
||||
|
||||
static getOrdreCode(code) {
|
||||
|
||||
@@ -23,7 +23,7 @@ export const CATEGORIES_COMPETENCES_CREATURES = {
|
||||
possession: { key: 'possession', base: 0, label: "Possession" },
|
||||
}
|
||||
|
||||
export const POSSESSION_SANS_DRACONIC = {
|
||||
export const SANS_DRACONIC = {
|
||||
name: 'Sans draconic',
|
||||
type: ITEM_TYPES.competence,
|
||||
img: RDD_CONFIG.icons.possession,
|
||||
|
||||
@@ -95,7 +95,7 @@ export class RdDPossession {
|
||||
}
|
||||
|
||||
static selectCompetenceDraconicOuPossession(rollData, rollingActor) {
|
||||
rollData.competence = rollingActor.getDraconicOuPossession().find(it => true);
|
||||
rollData.competence = rollingActor.getBestDraconic({possession: true})
|
||||
if (rollingActor.isCreatureOuEntite()) {
|
||||
rollData.carac = rollingActor.system.carac
|
||||
rollData.competence.system.defaut_carac = CARACS.REVE
|
||||
|
||||
@@ -682,7 +682,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
if (this.isCaseHumide(tmr)) {
|
||||
let rollData = {
|
||||
actor: this.actor,
|
||||
competence: foundry.utils.duplicate(this.actor.getBestDraconic()),
|
||||
competence: this.actor.getBestDraconic(),
|
||||
tmr: tmr,
|
||||
canClose: false,
|
||||
diffLibre: -7,
|
||||
@@ -807,7 +807,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
async _conquerir(tmr, options) {
|
||||
let rollData = {
|
||||
actor: this.actor,
|
||||
competence: foundry.utils.duplicate(this.actor.getBestDraconic()),
|
||||
competence: this.actor.getBestDraconic(),
|
||||
tmr: tmr,
|
||||
canClose: options.canClose ?? false,
|
||||
diffLibre: options.difficulte ?? -7,
|
||||
|
||||
@@ -30,7 +30,7 @@ export class RollPartPossession extends RollPartSelect {
|
||||
choices(refs) { return refs.all }
|
||||
|
||||
$getActorConjurations(rollData) {
|
||||
const competences = rollData.active.actor.getDraconicOuPossession()
|
||||
const competences = rollData.active.actor.getBestDraconic({possession: true})
|
||||
return competences.map(RollPartPossession.extractPossession)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user