Merge from v1.5 possession fix
This commit is contained in:
commit
0d288c56d4
@ -369,12 +369,27 @@ export class RdDActor extends Actor {
|
|||||||
const list = this.getDraconicList()
|
const list = this.getDraconicList()
|
||||||
return duplicate(list[0])
|
return duplicate(list[0])
|
||||||
}
|
}
|
||||||
getDraconicOrZero() {
|
getDraconicOuPossession() {
|
||||||
const list = this.getDraconicList().filter(it => it.system.niveau >= 0);
|
const possessions = this.items.filter(it => it.type == 'competencecreature' && it.system.ispossession)
|
||||||
if (list.length == 0) {
|
.sort(Misc.descending(it => it.system.niveau));
|
||||||
return { name: "Aucun", system: { niveau: 0 } };
|
if (possessions.length>0) {
|
||||||
|
return duplicate(possessions[0]);
|
||||||
}
|
}
|
||||||
return duplicate(list[0]);
|
const draconics = this.getDraconicList().filter(it => it.system.niveau >= 0);
|
||||||
|
if (draconics.length> 0) {
|
||||||
|
return duplicate(draconics[0]);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
img: 'systems/foundryvtt-reve-de-dragon/icons/entites/possession.webp',
|
||||||
|
name: 'Sans draconic',
|
||||||
|
data: {
|
||||||
|
niveau: 0,
|
||||||
|
defaut_carac: "reve",
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
getPossession(possessionId) {
|
||||||
|
return this.items.find(it => it.type == 'possession' && it.system.possessionid == possessionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
getDemiReve() {
|
getDemiReve() {
|
||||||
@ -779,7 +794,7 @@ export class RdDActor extends Actor {
|
|||||||
async combattreReveDeDragon(force) {
|
async combattreReveDeDragon(force) {
|
||||||
let rollData = {
|
let rollData = {
|
||||||
actor: this,
|
actor: this,
|
||||||
competence: duplicate(this.getDraconicOrZero()),
|
competence: duplicate(this.getDraconicOuPossession()),
|
||||||
canClose: false,
|
canClose: false,
|
||||||
rencontre: duplicate(TMRRencontres.getRencontre('rdd')),
|
rencontre: duplicate(TMRRencontres.getRencontre('rdd')),
|
||||||
tmr: true,
|
tmr: true,
|
||||||
@ -2519,7 +2534,7 @@ export class RdDActor extends Actor {
|
|||||||
if (rollData.competence.type == 'competencecreature') {
|
if (rollData.competence.type == 'competencecreature') {
|
||||||
if (rollData.competence.system.iscombat) {
|
if (rollData.competence.system.iscombat) {
|
||||||
if (rollData.competence.system.ispossession) {
|
if (rollData.competence.system.ispossession) {
|
||||||
RdDPossession.managePossession(this, rollData.competence)
|
RdDPossession.onAttaquePossession(this, rollData.competence)
|
||||||
} else {
|
} else {
|
||||||
const arme = RdDItemCompetenceCreature.toArme(rollData.competence)
|
const arme = RdDItemCompetenceCreature.toArme(rollData.competence)
|
||||||
RdDCombat.createUsingTarget(this)?.attaque(competence, arme)
|
RdDCombat.createUsingTarget(this)?.attaque(competence, arme)
|
||||||
@ -2547,8 +2562,8 @@ export class RdDActor extends Actor {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
conjurerPossession(possession) {
|
conjurerPossession(possession) {
|
||||||
let draconic = this.getBestDraconic();
|
let draconic = this.getDraconicOuPossession();
|
||||||
RdDPossession.managePossession(this, draconic, possession)
|
RdDPossession.onAttaquePossession(this, draconic, possession)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -3179,7 +3194,7 @@ export class RdDActor extends Actor {
|
|||||||
let competence = this.getCompetence(arme.system.competence)
|
let competence = this.getCompetence(arme.system.competence)
|
||||||
if (arme || (competence.type == 'competencecreature' && competence.system.iscombat)) {
|
if (arme || (competence.type == 'competencecreature' && competence.system.iscombat)) {
|
||||||
if (competence.system.ispossession) {
|
if (competence.system.ispossession) {
|
||||||
RdDPossession.managePossession(this, competence);
|
RdDPossession.onAttaquePossession(this, competence);
|
||||||
} else {
|
} else {
|
||||||
RdDCombat.createUsingTarget(this)?.attaque(competence, arme);
|
RdDCombat.createUsingTarget(this)?.attaque(competence, arme);
|
||||||
}
|
}
|
||||||
|
@ -18,40 +18,40 @@ export class RdDPossession {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static searchPossessionFromEntite( attacker, defender) {
|
static searchPossessionFromEntite(attacker, defender) {
|
||||||
let poss = attacker.items.find( poss => poss.type == 'possession' && poss.system.possedeid == defender.id);
|
let poss = attacker.items.find(poss => poss.type == 'possession' && poss.system.possedeid == defender.id);
|
||||||
if (!poss) {
|
if (!poss) {
|
||||||
poss = defender.items.find( poss => poss.type == 'possession' && poss.system.possedeid == defender.id);
|
poss = defender.items.find(poss => poss.type == 'possession' && poss.system.possedeid == defender.id);
|
||||||
}
|
}
|
||||||
return poss && duplicate(poss) || undefined;
|
return poss && duplicate(poss) || undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static updateEtatPossession( possession ) {
|
static updateEtatPossession(possession) {
|
||||||
possession.ptsConjuration = 0
|
possession.ptsConjuration = 0
|
||||||
possession.ptsPossession = 0
|
possession.ptsPossession = 0
|
||||||
console.log("Possession", possession)
|
console.log("Possession", possession)
|
||||||
if ( possession.system.compteur > 0) {
|
if (possession.system.compteur > 0) {
|
||||||
possession.ptsPossession = possession.system.compteur
|
possession.ptsPossession = possession.system.compteur
|
||||||
}
|
}
|
||||||
if ( possession.system.compteur < 0) {
|
if (possession.system.compteur < 0) {
|
||||||
possession.ptsConjuration = Math.abs(possession.system.compteur)
|
possession.ptsConjuration = Math.abs(possession.system.compteur)
|
||||||
}
|
}
|
||||||
possession.isPosseder = false
|
possession.isPosseder = false
|
||||||
possession.isConjurer = false
|
possession.isConjurer = false
|
||||||
if (possession.ptsPossession >= 2 ) {
|
if (possession.ptsPossession >= 2) {
|
||||||
possession.isPosseder = true
|
possession.isPosseder = true
|
||||||
}
|
}
|
||||||
if (possession.ptsConjuration >= 2 ) {
|
if (possession.ptsConjuration >= 2) {
|
||||||
possession.isConjurer = true
|
possession.isConjurer = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async resultConjuration( rollData) {
|
static async resultConjuration(rollData) {
|
||||||
let actor = game.actors.get(rollData.possession.system.possedeid)
|
let actor = game.actors.get(rollData.possession.system.possedeid)
|
||||||
if ( !rollData.rolled.isSuccess ) {
|
if (!rollData.rolled.isSuccess) {
|
||||||
if( rollData.isECNIDefender) {
|
if (rollData.isECNIDefender) {
|
||||||
rollData.possession.system.compteur--
|
rollData.possession.system.compteur--
|
||||||
} else {
|
} else {
|
||||||
rollData.possession.system.compteur++
|
rollData.possession.system.compteur++
|
||||||
@ -62,52 +62,43 @@ export class RdDPossession {
|
|||||||
|
|
||||||
this.updateEtatPossession(rollData.possession)
|
this.updateEtatPossession(rollData.possession)
|
||||||
await RdDResolutionTable.displayRollData(rollData, this, 'chat-resultat-possession.html')
|
await RdDResolutionTable.displayRollData(rollData, this, 'chat-resultat-possession.html')
|
||||||
if ( rollData.possession.isPosseder || rollData.possession.isConjurer) {
|
if (rollData.possession.isPosseder || rollData.possession.isConjurer) {
|
||||||
actor.deleteEmbeddedDocuments("Item", [rollData.possession._id])
|
actor.deleteEmbeddedDocuments("Item", [rollData.possession._id])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async onDefensePossession( attackerId, defenderId, possessionId) {
|
static async onDefensePossession(attackerId, defenderId, possessionId) {
|
||||||
let attacker = game.actors.get(attackerId)
|
let attacker = game.actors.get(attackerId)
|
||||||
let defender = game.actors.get(defenderId)
|
let defender = game.actors.get(defenderId)
|
||||||
|
let possession = attacker.getPossession(possessionId) ?? defender.getPossession(possessionId) ;
|
||||||
let possession = attacker.items.find( item => item.type =='possession' && item.system.possessionid == possessionId)
|
if (!possession) {
|
||||||
if ( !possession ) {
|
|
||||||
possession = defender.items.find( item => item.type =='possession' && item.system.possessionid == possessionId)
|
|
||||||
if ( !possession) {
|
|
||||||
ui.notifications.warn("Une erreur s'est produite : Aucune possession trouvée !!")
|
ui.notifications.warn("Une erreur s'est produite : Aucune possession trouvée !!")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
|
||||||
possession = duplicate(possession)
|
|
||||||
|
|
||||||
// Update for draconic roll
|
// Update for draconic roll
|
||||||
let rollData = {
|
let rollData = {
|
||||||
possession: possession
|
mode: "conjuration",
|
||||||
|
isECNIDefender: defender.type == "entite",
|
||||||
|
possession: duplicate(possession),
|
||||||
|
attacker: attacker,
|
||||||
|
defender: defender,
|
||||||
|
competence: defender.getDraconicOuPossession(),
|
||||||
|
selectedCarac: defender.system.carac.reve,
|
||||||
}
|
}
|
||||||
rollData.actor = defender
|
|
||||||
if ( defender.type == "personnage") {
|
if (rollData.isECNIDefender) {
|
||||||
rollData.competence = duplicate(defender.getDraconicOrZero())
|
|
||||||
rollData.competence.system.defaut_carac = 'reve-actuel'
|
|
||||||
rollData.forceCarac = { 'reve-actuel': { label: "Rêve Actuel", value: defender.getReveActuel() } }
|
|
||||||
rollData.selectedCarac = defender.system.carac.reve
|
|
||||||
rollData.isECNIDefender = false
|
|
||||||
} else {
|
|
||||||
rollData.competence = duplicate(defender.getCompetence("Possession"))
|
|
||||||
rollData.competence.system.defaut_carac = "reve"
|
rollData.competence.system.defaut_carac = "reve"
|
||||||
rollData.forceCarac = { 'reve': { label: "Rêve", value: defender.system.carac.reve.value } }
|
rollData.forceCarac = { 'reve': { label: "Rêve", value: defender.system.carac.reve.value } }
|
||||||
rollData.selectedCarac = defender.system.carac.reve
|
} else {
|
||||||
rollData.isECNIDefender = true
|
rollData.competence.system.defaut_carac = 'reve-actuel'
|
||||||
//RdDItemCompetenceCreature.setRollDataCreature( rollData )
|
rollData.forceCarac = { 'reve-actuel': { label: "Rêve Actuel", value: defender.getReveActuel() } }
|
||||||
}
|
}
|
||||||
rollData.mode = "conjuration"
|
|
||||||
rollData.possesseur = attacker.name
|
|
||||||
|
|
||||||
const dialog = await RdDRoll.create(defender, rollData,
|
const dialog = await RdDRoll.create(defender, rollData,
|
||||||
{
|
{
|
||||||
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-defense-possession.html',
|
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-defense-possession.html',
|
||||||
options: { height: 400 }
|
options: { height: 450 }
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'conjurer',
|
name: 'conjurer',
|
||||||
@ -121,16 +112,7 @@ export class RdDPossession {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async _onRollPossession( rollData, isSuccess ) {
|
static async onAttaquePossession(attacker, competence, possession = undefined) {
|
||||||
let possession = rollData.possession
|
|
||||||
possession.isSuccess = isSuccess
|
|
||||||
this.updateEtatPossession( possession)
|
|
||||||
await RdDResolutionTable.displayRollData(rollData, this, 'chat-resultat-possession.html');
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
static async managePossession(attacker, competence, possession=undefined) {
|
|
||||||
|
|
||||||
const target = RdDCombat.getTarget()
|
const target = RdDCombat.getTarget()
|
||||||
if (target == undefined) {
|
if (target == undefined) {
|
||||||
ui.notifications.warn((game.user.targets?.size ?? 0) > 1
|
ui.notifications.warn((game.user.targets?.size ?? 0) > 1
|
||||||
@ -140,35 +122,28 @@ export class RdDPossession {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const defender = target.actor;
|
const defender = target.actor;
|
||||||
if ( !possession) {
|
possession = duplicate(possession ?? this.searchPossessionFromEntite(attacker, defender) ??(await this.createPossession(attacker, defender)));
|
||||||
possession = this.searchPossessionFromEntite( attacker, defender)
|
|
||||||
if ( !possession) {
|
|
||||||
possession = await this.createPossession(attacker, defender)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
possession = duplicate(possession);
|
|
||||||
|
|
||||||
this.updateEtatPossession(possession)
|
this.updateEtatPossession(possession)
|
||||||
let rollData = {
|
let rollData = {
|
||||||
competence: competence.data.data.niveau >=0 ? competence : RdDPossession.competenceNonHautRevant(),
|
mode: "possession",
|
||||||
|
isECNIDefender: defender.type == "entite",
|
||||||
|
competence: competence,
|
||||||
possession: possession,
|
possession: possession,
|
||||||
possede: defender.name,
|
attacker: attacker,
|
||||||
possesseur: attacker.name,
|
defender: defender
|
||||||
attackerId: attacker.id,
|
|
||||||
defenderId: defender.id,
|
|
||||||
mode: "possession"
|
|
||||||
};
|
};
|
||||||
if ( attacker.isCreature()) {
|
if (attacker.isCreature()) {
|
||||||
RdDItemCompetenceCreature.setRollDataCreature(rollData)
|
RdDItemCompetenceCreature.setRollDataCreature(rollData)
|
||||||
}
|
}
|
||||||
|
|
||||||
const dialog = await RdDRoll.create( attacker, rollData,
|
const dialog = await RdDRoll.create(attacker, rollData,
|
||||||
{
|
{
|
||||||
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-competence.html',
|
html: 'systems/foundryvtt-reve-de-dragon/templates/dialog-roll-competence.html',
|
||||||
options: { height: 540 }
|
options: { height: 540 }
|
||||||
}, {
|
}, {
|
||||||
name: 'jet-possession',
|
name: 'jet-possession',
|
||||||
label: 'Possession: ',
|
label: rollData.isECNIDefender ? 'Conjurer la possession' : 'Possession',
|
||||||
callbacks: [
|
callbacks: [
|
||||||
{ condition: r => (r.rolled.isSuccess), action: async r => await this._onRollPossession(r, true) },
|
{ condition: r => (r.rolled.isSuccess), action: async r => await this._onRollPossession(r, true) },
|
||||||
{ condition: r => (r.rolled.isEchec), action: async r => await this._onRollPossession(r, false) },
|
{ condition: r => (r.rolled.isEchec), action: async r => await this._onRollPossession(r, false) },
|
||||||
@ -177,21 +152,15 @@ export class RdDPossession {
|
|||||||
dialog.render(true)
|
dialog.render(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
static competenceNonHautRevant() {
|
/* -------------------------------------------- */
|
||||||
return {
|
static async _onRollPossession(rollData, isSuccess) {
|
||||||
img: 'systems/foundryvtt-reve-de-dragon/icons/competence_vigilance.webp',
|
rollData.possession.isSuccess = isSuccess;
|
||||||
name: 'non Haut-rêvant',
|
this.updateEtatPossession(rollData.possession);
|
||||||
data: {
|
await RdDResolutionTable.displayRollData(rollData, this, 'chat-resultat-possession.html');
|
||||||
data: {
|
|
||||||
niveau: 0,
|
|
||||||
defaut_carac: "reve",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async createPossession( attacker, defender ) {
|
static async createPossession(attacker, defender) {
|
||||||
let possessionData = {
|
let possessionData = {
|
||||||
name: "Possession en cours de " + attacker.name, type: 'possession',
|
name: "Possession en cours de " + attacker.name, type: 'possession',
|
||||||
img: "systems/foundryvtt-reve-de-dragon/icons/entites/possession2.webp",
|
img: "systems/foundryvtt-reve-de-dragon/icons/entites/possession2.webp",
|
||||||
|
@ -693,7 +693,7 @@ export class RdDUtility {
|
|||||||
actor.tmrApp.lancerSortEnReserve(coord, sortId);
|
actor.tmrApp.lancerSortEnReserve(coord, sortId);
|
||||||
});
|
});
|
||||||
|
|
||||||
// gestion bouton tchat Acheter
|
// gestion bouton tchat Possession
|
||||||
html.on("click", '.defense-possession', event => {
|
html.on("click", '.defense-possession', event => {
|
||||||
let attackerId = event.currentTarget.attributes['data-attackerId'].value
|
let attackerId = event.currentTarget.attributes['data-attackerId'].value
|
||||||
let defenderId = event.currentTarget.attributes['data-defenderId'].value
|
let defenderId = event.currentTarget.attributes['data-defenderId'].value
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
"url": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/",
|
"url": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/",
|
||||||
"license": "LICENSE.txt",
|
"license": "LICENSE.txt",
|
||||||
"flags": {},
|
"flags": {},
|
||||||
"version": "10.0.0",
|
"version": "10.0.1",
|
||||||
"minimumCoreVersion": "10",
|
"minimumCoreVersion": "10",
|
||||||
"compatibleCoreVersion": "10",
|
"compatibleCoreVersion": "10",
|
||||||
"scripts": [],
|
"scripts": [],
|
||||||
@ -500,7 +500,7 @@
|
|||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"socket": true,
|
"socket": true,
|
||||||
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v10/system.json",
|
"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.0.zip",
|
"download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-10.0.1.zip",
|
||||||
"protected": false,
|
"protected": false,
|
||||||
"gridDistance": 1,
|
"gridDistance": 1,
|
||||||
"gridUnits": "m",
|
"gridUnits": "m",
|
||||||
|
@ -321,6 +321,7 @@
|
|||||||
{{!-- Liste de blessures --}}
|
{{!-- Liste de blessures --}}
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-liste-blessures-partial.html" this}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/actor-liste-blessures-partial.html" this}}
|
||||||
|
|
||||||
|
{{#if maladiesPoisons.length}}
|
||||||
{{!-- Maladies & Poison --}}
|
{{!-- Maladies & Poison --}}
|
||||||
<h3 class="blessures-title">Maladies & Poisons:</h3>
|
<h3 class="blessures-title">Maladies & Poisons:</h3>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
@ -354,7 +355,9 @@
|
|||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if possessions.length}}
|
||||||
{{!-- Possession --}}
|
{{!-- Possession --}}
|
||||||
<h3 class="blessures-title">Possession:</h3>
|
<h3 class="blessures-title">Possession:</h3>
|
||||||
<ul class="item-list alterne-list">
|
<ul class="item-list alterne-list">
|
||||||
@ -375,7 +378,7 @@
|
|||||||
</li>
|
</li>
|
||||||
{{/each}}
|
{{/each}}
|
||||||
</ul>
|
</ul>
|
||||||
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{!-- Connaissances Tab --}}
|
{{!-- Connaissances Tab --}}
|
||||||
|
@ -1,29 +1,30 @@
|
|||||||
<img class="chat-icon" src="{{competence.img}}" />
|
<img class="chat-icon" src="{{competence.img}}" />
|
||||||
<h4>
|
<h4>
|
||||||
{{#if (eq mode "possession")}}
|
{{#if (eq mode "possession")}}
|
||||||
{{alias}} tente de posséder {{possede}}
|
{{attacker.name}} tente de {{#if isECNIDefender}}conjurer la possession de{{else}}posséder{{/if}} {{defender.name}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{alias}} tente de conjurer la possession de {{possesseur}}
|
{{defender.name}} tente de {{#if isECNIDefender}}résister à{{else}}conjurer la possession de{{/if}} {{attacker.name}}
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</h4>
|
</h4>
|
||||||
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
{{> "systems/foundryvtt-reve-de-dragon/templates/chat-infojet.html"}}
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<span class='chat-card-button-area'>
|
<span class='chat-card-button-area'>
|
||||||
<br>
|
<br>
|
||||||
{{#if (eq mode "possession")}}
|
{{#if (eq mode "possession")}}
|
||||||
{{#if possession.isSuccess}}
|
{{#if possession.isSuccess}}
|
||||||
<a class='defense-possession chat-card-button' data-attackerId='{{attackerId}}'
|
<a class='defense-possession chat-card-button'
|
||||||
data-defenderId='{{defenderId}}' data-possessionId='{{possession.system.possessionid}}'>Résister à la possession</a>
|
data-attackerId='{{attacker.id}}'
|
||||||
|
data-defenderId='{{defender.id}}'
|
||||||
|
data-possessionId='{{possession.system.possessionid}}'>Résister à la possession</a>
|
||||||
</a>
|
</a>
|
||||||
{{else}}
|
{{else}}
|
||||||
La Tentative de Possession a échouée !
|
La Tentative de Possession a échouée !
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{#if rolled.isSuccess}}
|
{{#if rolled.isSuccess}}
|
||||||
La Tentative de Possession a été conjurée ! {{alias}} résiste à la tentative de possession.
|
La Tentative de Possession a été conjurée ! {{defender.name}} résiste à la tentative de possession.
|
||||||
{{else}}
|
{{else}}
|
||||||
La Tentative de Possession n'a pas pu être conjurée !
|
La Tentative de Possession n'a pas pu être conjurée !
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
<form class="skill-roll-dialog">
|
<form class="skill-roll-dialog">
|
||||||
<h2>Conjuration d'une Possession {{possession.name}}!</h2>
|
<h2>
|
||||||
|
{{defender.name}} tente de
|
||||||
|
{{#if isECNIDefender}}maintenir{{else}}résister à{{/if}}
|
||||||
|
la possession de {{attacker.name}}
|
||||||
|
</h2>
|
||||||
<div class="grid grid-2col">
|
<div class="grid grid-2col">
|
||||||
<div class="flex-group-left">
|
<div class="flex-group-left">
|
||||||
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}"/>
|
<img class="chat-icon" src="{{competence.img}}" alt="{{competence.name}}"/>
|
||||||
|
Loading…
Reference in New Issue
Block a user