Correction de combat
- filtrage des parades selon l'attaque - gestion des tactiques
This commit is contained in:
@@ -36,7 +36,7 @@ export class RollPartDefense extends RollPartSelect {
|
||||
: defenseur.getCompetencesEsquive()
|
||||
const parades = isEmpoignade
|
||||
? [RdDItemArme.empoignade(defenseur)]
|
||||
: defenseur.items.filter(it => it.isParade() && (!refs.distance || it.isBouclier()))
|
||||
: this.$getParades(defenseur, attackerRoll, refs.distance)
|
||||
|
||||
refs.defenses = [
|
||||
...esquives.map(it => RollPartDefense.$extractEsquive(it, defenseur, attackerRoll)),
|
||||
@@ -45,6 +45,14 @@ export class RollPartDefense extends RollPartSelect {
|
||||
this.$selectDefense(rollData)
|
||||
}
|
||||
|
||||
$getParades(defenseur, attackerRoll, distance) {
|
||||
const parades = defenseur.items.filter(it => it.isParade() && (!distance || it.isBouclier()))
|
||||
const armeAttaque = attackerRoll?.current?.attaque?.arme
|
||||
return armeAttaque
|
||||
? parades.filter(armeDefense => RdDItemArme.defenseArmeParade(armeAttaque, armeDefense) != 'impossible')
|
||||
: parades
|
||||
}
|
||||
|
||||
static $extractEsquive(esquive, defenseur, attackerRoll) {
|
||||
const defense = {
|
||||
key: esquive.id,
|
||||
@@ -124,19 +132,19 @@ export class RollPartDefense extends RollPartSelect {
|
||||
case PART_CARAC: return part.filterCaracs(rollData, refs.defenses.length > 0 ? [current.carac] : ['impossible'])
|
||||
case PART_COMP: return part.filterComps(rollData, refs.defenses.length > 0 ? [current.comp?.name] : ['impossible'])
|
||||
case PART_DIFF: return part.setDiff(rollData, this.getDiffDefense(rollData))
|
||||
case PART_SIGN: return part.setArme(rollData, this.isArmeDisparate(rollData), current.forceRequise)
|
||||
case PART_SIGN: return part.setArme(rollData, this.getArmeDisparate(rollData), current.forceRequise)
|
||||
}
|
||||
}
|
||||
return undefined
|
||||
}
|
||||
|
||||
isArmeDisparate(rollData) {
|
||||
getArmeDisparate(rollData) {
|
||||
const armeDefense = this.getCurrent(rollData).arme
|
||||
if (armeDefense) {
|
||||
const armeAttaque = rollData.attackerRoll?.current.attaque.arme
|
||||
return RdDItemArme.defenseArmeParade(armeAttaque, armeDefense) == 'sign'
|
||||
return RdDItemArme.defenseArmeParade(armeAttaque, armeDefense)
|
||||
}
|
||||
return false
|
||||
return 'norm'
|
||||
}
|
||||
|
||||
getDiffDefense(rollData) {
|
||||
|
||||
Reference in New Issue
Block a user