Sorts et dévotions
This commit is contained in:
@ -31,6 +31,8 @@ export class VadentisActorSheet extends ActorSheet {
|
||||
data.editScore = this.options.editScore;
|
||||
data.donnees = this.actor.getDonnees();
|
||||
data.competences = this.actor.getCompetences();
|
||||
data.sorts = this.actor.getSorts();
|
||||
data.devotions = this.actor.getDevotions();
|
||||
data.isGM = game.user.isGM;
|
||||
|
||||
return data;
|
||||
@ -50,17 +52,6 @@ export class VadentisActorSheet extends ActorSheet {
|
||||
const item = this.actor.getOwnedItem(li.data("item-id"));
|
||||
item.sheet.render(true);
|
||||
});
|
||||
html.find('.item-equip').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
const item = this.actor.equipObject( li.data("item-id") );
|
||||
this.render(true);
|
||||
});
|
||||
html.find('.item-worn').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
const item = this.actor.wornObject( li.data("item-id") );
|
||||
this.render(true);
|
||||
});
|
||||
|
||||
// Delete Inventory Item
|
||||
html.find('.item-delete').click(ev => {
|
||||
const li = $(ev.currentTarget).parents(".item");
|
||||
@ -76,6 +67,16 @@ export class VadentisActorSheet extends ActorSheet {
|
||||
const competenceId = li.data("item-id");
|
||||
this.actor.rollCompetence(competenceId);
|
||||
});
|
||||
html.find('.sort-label a').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const sortId = li.data("item-id");
|
||||
this.actor.rollSort(sortId);
|
||||
});
|
||||
html.find('.devotion-label a').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const devotionId = li.data("item-id");
|
||||
this.actor.rollDevotion(devotionId);
|
||||
});
|
||||
html.find('.weapon-label a').click((event) => {
|
||||
const li = $(event.currentTarget).parents(".item");
|
||||
const weapon = this.actor.getOwnedItem(li.data("item-id"));
|
||||
@ -93,11 +94,6 @@ export class VadentisActorSheet extends ActorSheet {
|
||||
let skillName = event.currentTarget.attributes.skillname.value;
|
||||
this.actor.updateCompetence(skillName, "malus", parseInt(event.target.value));
|
||||
});
|
||||
html.find('.skill-xp').change((event) => {
|
||||
let skillName = event.currentTarget.attributes.skillname.value;
|
||||
//console.log("Competence changed :", skillName);
|
||||
this.actor.updateSkillExperience(skillName, parseInt(event.target.value));
|
||||
});
|
||||
html.find('.lock-unlock-sheet').click((event) => {
|
||||
this.options.editScore = !this.options.editScore;
|
||||
this.render(true);
|
||||
|
@ -57,6 +57,16 @@ export class VadentisActor extends Actor {
|
||||
return this.data.items.filter( item => item.type == 'donnee');
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getSorts() {
|
||||
return this.data.items.filter( item => item.type == 'sort');
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
getDevotions() {
|
||||
return this.data.items.filter( item => item.type == 'devotion');
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async updateCompetence( name, field, value) {
|
||||
let competence = this.data.items.find( item => item.type == 'competence' && item.name == name);
|
||||
@ -65,10 +75,76 @@ export class VadentisActor extends Actor {
|
||||
await this.updateOwnedItem( { _id: competence._id, [dataPath]:value });
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
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})` } );
|
||||
|
||||
console.log("ROLL", myRoll);
|
||||
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}`;
|
||||
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é !`});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollDevotion( devotionId ) {
|
||||
let devotion = this.data.items.find( item => item.type == 'devotion' && item._id == devotionId );
|
||||
if ( 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}` } );
|
||||
return;
|
||||
}
|
||||
|
||||
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}`;
|
||||
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é !`});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollCompetence( competenceId ) {
|
||||
console.log("HERE !!!!", competenceId);
|
||||
let competence = this.data.items.find( item => item.type == 'competence' && item._id == competenceId);
|
||||
if ( competence) {
|
||||
let statValue = competence.data.base + competence.data.malus + competence.data.bonus;
|
||||
|
@ -44,7 +44,14 @@ export class VadentisItemSheet extends ItemSheet {
|
||||
/* -------------------------------------------- */
|
||||
async getData() {
|
||||
let data = super.getData();
|
||||
if (data.item.type == 'sort') {
|
||||
data.donnees = await VadentisUtility.getDonnees();
|
||||
}
|
||||
if (data.item.type == 'devotion') {
|
||||
data.eglises = await VadentisUtility.getEglises();
|
||||
}
|
||||
data.isGM = game.user.isGM;
|
||||
console.log("DATA", data);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
@ -61,6 +61,15 @@ export class VadentisUtility extends Entity {
|
||||
return list;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static getDonnees( ) {
|
||||
return this.loadCompendiumNames('foundryvtt-vadentis.donnees');
|
||||
}
|
||||
/* -------------------------------------------- */
|
||||
static getEglises( ) {
|
||||
return this.loadCompendiumNames('foundryvtt-vadentis.eglises');
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async confirmDelete(actorSheet, li) {
|
||||
let itemId = li.data("item-id");
|
||||
|
Reference in New Issue
Block a user