Various fixes
This commit is contained in:
@@ -32,13 +32,6 @@ export class VadentisActor extends Actor {
|
||||
return actor;
|
||||
}
|
||||
|
||||
/*data.items = [];
|
||||
let compendiumName = "foundryvtt-vadentis.competences";
|
||||
if ( compendiumName ) {
|
||||
let skills = await SoSUtility.loadCompendium(compendiumName);
|
||||
data.items = data.items.concat( skills );
|
||||
}*/
|
||||
|
||||
return super.create(data, options);
|
||||
}
|
||||
|
||||
@@ -56,16 +49,38 @@ export class VadentisActor extends Actor {
|
||||
getDonnees() {
|
||||
return this.data.items.filter( item => item.type == 'donnee');
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getEglises() {
|
||||
return this.data.items.filter( item => item.type == 'eglise');
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getSorts() {
|
||||
return this.data.items.filter( item => item.type == 'sort');
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getAttributs() {
|
||||
return this.data.items.filter( item => item.type == 'attribut');
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getTechniques() {
|
||||
return this.data.items.filter( item => item.type == 'technique');
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getDevotions() {
|
||||
return this.data.items.filter( item => item.type == 'devotion');
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getEquipements() {
|
||||
return this.data.items.filter( item => item.type == 'equipement' );
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getArmes() {
|
||||
return this.data.items.filter( item => item.type == 'armecc' || item.type == 'tir' );
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getArmures() {
|
||||
return this.data.items.filter( item => item.type == 'armurebouclier' );
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async updateCompetence( name, field, value) {
|
||||
@@ -77,74 +92,89 @@ export class VadentisActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollSort( sortId ) {
|
||||
let sort = this.data.items.find( item => item.type == 'sort' && item._id == sortId );
|
||||
if ( sort ) {
|
||||
|
||||
if ( sort.data.pe > this.data.data.stats.pointsenergie.value) { // Vérification du ~ de points d'énergie
|
||||
ChatMessage.create({ content: `Vous n'avez pas assez de Points d'Energie pour lancer votre sort ${sort.name}` } );
|
||||
return;
|
||||
}
|
||||
|
||||
let magieElementaire = this.data.data.magie['matriseelementaire'];
|
||||
let statValue = magieElementaire.base + magieElementaire.malus + magieElementaire.bonus;
|
||||
let formulaFull = `1d20+${magieElementaire.base}+${magieElementaire.malus}+${magieElementaire.bonus}`;
|
||||
let myRoll = new Roll("1d20+"+statValue);
|
||||
myRoll.evaluate();
|
||||
myRoll.toMessage( { flavor: `Lancer de Sort : ${sort.name} (${formulaFull})` } );
|
||||
|
||||
if (myRoll.total >= sort.data.difficulty) {
|
||||
let content = `Votre sort ${sort.name} a réussi ! Vous perdez ${sort.data.pe} Points d'Energie et votre sort produit l'effet : <br>${sort.data.effect}`;
|
||||
let newEnergie = this.data.data.stats.pointsenergie - sort.data.pe;
|
||||
await this.update( {'data.stats.pointsenergie': newEnergie });
|
||||
|
||||
if ( sort.data.damage != "") {
|
||||
if (myRoll.results[0] == 20 ) { // Critique ?
|
||||
content += `<br>Et provoque les dégats critiques suivants : ${sort.data.damagecritical}`;
|
||||
} else {
|
||||
content += `<br>Et provoque les dégats suivants : ${sort.data.damage}`;
|
||||
}
|
||||
}
|
||||
ChatMessage.create({ content:content} );
|
||||
} else {
|
||||
ChatMessage.create({ content: `Votre sort ${sort.name} a échoué !`});
|
||||
}
|
||||
async equiperObject( equipementId ) {
|
||||
let item = this.getOwnedItem(equipementId);
|
||||
if (item && item.data.data) {
|
||||
let update = { _id: item._id, "data.equipee": !item.data.data.equipee };
|
||||
await this.updateEmbeddedEntity("OwnedItem", update);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollDevotion( devotionId ) {
|
||||
async processSortDevotion( name, devotionSort ) {
|
||||
if ( this.data.data.stats.pointsenergie.value > 0) { // Vérification du ~ de points d'énergie
|
||||
ChatMessage.create({ content: `${this.name} n'a pas assez de Points d'Energie pour lancer ${name} ${devotionSort.name}` } );
|
||||
return;
|
||||
}
|
||||
|
||||
let scores = this.data.data.magie[(name =="devotion") ? 'devotion': 'matriseelementaire'];
|
||||
let statValue = scores.base + scores.malus + scores.bonus;
|
||||
let formulaFull = `1d20+${scores.base}+${scores.malus}+${scores.bonus}`;
|
||||
let myRoll = new Roll("1d20+"+statValue);
|
||||
myRoll.evaluate();
|
||||
myRoll.toMessage( { flavor: `Lancer de ${name} : ${devotionSort.name} (${formulaFull})` } );
|
||||
|
||||
if (myRoll.total >= devotionSort.data.difficulty) {
|
||||
let content = `${this.name} a réussi son ${name} et perd ${devotionSort.data.pe} Points d'Energie. L'effet suivant se produit: <br>${devotionSort.data.effect}`;
|
||||
let newEnergie = this.data.data.stats.pointsenergie.value - devotionSort.data.pe;
|
||||
await this.update( {'data.stats.pointsenergie.value': newEnergie });
|
||||
|
||||
if ( devotionSort.data.damage != "") {
|
||||
if (myRoll.results[0] == 20 ) { // Critique ?
|
||||
content += `<br>Et provoque les dégats critiques suivants : ${devotionSort.data.damagecritical}`;
|
||||
} else {
|
||||
content += `<br>Et provoque les dégats suivants : ${devotionSort.data.damage}`;
|
||||
}
|
||||
}
|
||||
if ( newEnergie < 0) {
|
||||
content += `<br>Les Points d'Energie de ${this.name} sont négatifs ! Il convient d'éditer ses Points de Vie en conséquence.`;
|
||||
}
|
||||
ChatMessage.create( { content: content} );
|
||||
} else {
|
||||
ChatMessage.create( { content: `${this.name} a échoué son lancer de ${name}` } );
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getDefenseScore( ) {
|
||||
let defenseData = this.data.data.combat.defense;
|
||||
return defenseData.base + defenseData.malus + defenseData.bonus;
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
getAttaqueScore( ) {
|
||||
let attaqueData = this.data.data.combat.attaque;
|
||||
return attaqueData.base + attaqueData.malus + attaqueData.bonus;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollSort( sortId ) {
|
||||
let sort = this.data.items.find( item => item.type == 'sort' && item._id == sortId );
|
||||
if ( sort ) {
|
||||
this.processSortDevotion( "sort", sort);
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollDevotion( devotionId ) {
|
||||
let devotion = this.data.items.find( item => item.type == 'devotion' && item._id == devotionId );
|
||||
if ( devotion ) {
|
||||
this.processSortDevotion( "devotion", devotion);
|
||||
}
|
||||
}
|
||||
|
||||
if ( devotion.data.pe > this.data.data.stats.pointsenergie.value) { // Vérification du ~ de points d'énergie
|
||||
ChatMessage.create({ content: `Vous n'avez pas assez de Points d'Energie pour lancer votre dévotion ${devotion.name}` } );
|
||||
/* -------------------------------------------- */
|
||||
async rollTechnique( techniqueId ) {
|
||||
let technique = this.data.items.find( item => item.type == 'technique' && item._id == techniqueId );
|
||||
if (technique) {
|
||||
if ( this.data.data.stats.pointsadrenaline.value < technique.data.pacost) { // Vérification du ~ de points d'adrénaline
|
||||
ChatMessage.create({ content: `${this.name} n'a pas assez de Points d'Adrénaline pour éxecuter sa technique ${technique.name}` } );
|
||||
return;
|
||||
}
|
||||
let newAdrenaline = this.data.data.stats.pointsadrenaline.value - technique.data.pacost;
|
||||
await this.update( {'data.stats.pointsadrenaline.value': newAdrenaline });
|
||||
|
||||
let devotionComp = this.data.data.magie['devotion'];
|
||||
let statValue = devotionComp.base + devotionComp.malus + devotionComp.bonus;
|
||||
let formulaFull = `1d20+${devotionComp.base}+${devotionComp.malus}+${devotionComp.bonus}`;
|
||||
let myRoll = new Roll("1d20+"+statValue);
|
||||
myRoll.evaluate();
|
||||
myRoll.toMessage( { flavor: `Lancer de Dévotion : ${devotion.name} (${formulaFull})` } );
|
||||
|
||||
if (myRoll.total >= devotion.data.difficulty) {
|
||||
let content = `Votre dévotion ${devotion.name} a réussie ! Vous perdez ${devotion.data.pe} Points d'Energie et votre dévotion produit l'effet : <br>${devotion.data.effect}`;
|
||||
let newEnergie = this.data.data.stats.pointsenergie - devotion.data.pe;
|
||||
await this.update( {'data.stats.pointsenergie': newEnergie });
|
||||
|
||||
if ( devotion.data.damage != "") {
|
||||
if (myRoll.results[0] == 20 ) { // Critique ?
|
||||
content += `<br>Et provoque les dégats critiques suivants : ${devotion.data.damagecritical}`;
|
||||
} else {
|
||||
content += `<br>Et provoque les dégats suivants : ${devotion.data.damage}`;
|
||||
}
|
||||
}
|
||||
ChatMessage.create({ content:content} );
|
||||
} else {
|
||||
ChatMessage.create({ content: `Votre dévotion ${devotion.name} a échoué !`});
|
||||
}
|
||||
ChatMessage.create( { content: `${this.name} execute sa technique ${technique.name}, pour un côut de ${technique.data.pacost} Points d'Adrénaline<br>
|
||||
Les effets sont : ${technique.data.effect}`} );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,8 +197,30 @@ export class VadentisActor extends Actor {
|
||||
let formulaFull = `1d20+${stat.base}+${stat.malus}+${stat.bonus}`;
|
||||
let myRoll = new Roll("1d20+"+statValue);
|
||||
myRoll.evaluate();
|
||||
myRoll.toMessage( { flavor: `Jet de ${stat.label} (${formulaFull})` } );
|
||||
myRoll.toMessage( { title: "Test !",flavor: `Jet de ${stat.label} (${formulaFull})` } );
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollArme(armeId) {
|
||||
let target = VadentisUtility.getTarget();
|
||||
|
||||
if ( target ) {
|
||||
let arme = this.data.items.find( item => (item.type == 'armecc' || item.type == 'tir') && item._id == armeId);
|
||||
if (arme) {
|
||||
let combatData = {
|
||||
attackerActorId: this._id,
|
||||
targetActorId: target.actor._id,
|
||||
arme: duplicate(arme)
|
||||
}
|
||||
if (game.user.isGM) {
|
||||
VadentisUtility.performAttack( combatData);
|
||||
} else {
|
||||
game.socket.emit("system.foundryvtt-vadentis", { name: "msg_attack", data: { combatData } } );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ui.notifications.warn("Vous devez désigner une cible pour attaquer avec une arme.")
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user