First roll

This commit is contained in:
2021-04-02 14:59:58 +02:00
parent 963cb00944
commit 558a7c08a7
6 changed files with 143 additions and 44 deletions

View File

@ -29,7 +29,8 @@ export class VadentisActorSheet extends ActorSheet {
data.combat = this.actor.combat;
data.magie = this.actor.magie;
data.editScore = this.options.editScore;
console.log("Edit : ", data.editScore);
data.donnees = this.actor.getDonnees();
data.competences = this.actor.getCompetences();
data.isGM = game.user.isGM;
return data;
@ -63,27 +64,34 @@ export class VadentisActorSheet extends ActorSheet {
// Delete Inventory Item
html.find('.item-delete').click(ev => {
const li = $(ev.currentTarget).parents(".item");
SoSUtility.confirmDelete(this, li);
VadentisUtility.confirmDelete(this, li);
});
html.find('.stat-label a').click((event) => {
let statName = event.currentTarget.attributes.name.value;
this.actor.rollStat(statName);
html.find('.combat-label a').click((event) => {
let combatName = event.currentTarget.attributes.name.value;
this.actor.rollCombat(combatName);
});
html.find('.skill-label a').click((event) => {
html.find('.competence-label a').click((event) => {
const li = $(event.currentTarget).parents(".item");
const skill = this.actor.getOwnedItem(li.data("item-id"));
this.actor.rollSkill(skill);
const competenceId = li.data("item-id");
this.actor.rollCompetence(competenceId);
});
html.find('.weapon-label a').click((event) => {
const li = $(event.currentTarget).parents(".item");
const weapon = this.actor.getOwnedItem(li.data("item-id"));
this.actor.rollWeapon(weapon);
});
html.find('.skill-value').change((event) => {
html.find('.competence-base').change((event) => {
let skillName = event.currentTarget.attributes.skillname.value;
//console.log("Competence changed :", skillName);
this.actor.updateSkill(skillName, parseInt(event.target.value));
this.actor.updateCompetence(skillName, "base", parseInt(event.target.value));
});
html.find('.competence-bonus').change((event) => {
let skillName = event.currentTarget.attributes.skillname.value;
this.actor.updateCompetence(skillName, "bonus", parseInt(event.target.value));
});
html.find('.competence-malus').change((event) => {
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;

View File

@ -45,8 +45,49 @@ export class VadentisActor extends Actor {
/* -------------------------------------------- */
async prepareData() {
super.prepareData();
}
/* -------------------------------------------- */
getCompetences() {
return this.data.items.filter( item => item.type == 'competence');
}
/* -------------------------------------------- */
getDonnees() {
return this.data.items.filter( item => item.type == 'donnee');
}
/* -------------------------------------------- */
async updateCompetence( name, field, value) {
let competence = this.data.items.find( item => item.type == 'competence' && item.name == name);
if (competence) {
let dataPath = 'data.'+field;
await this.updateOwnedItem( { _id: competence._id, [dataPath]:value });
}
}
/* -------------------------------------------- */
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;
let formulaFull = `1d20+${competence.data.base}+${competence.data.malus}+${competence.data.bonus}`;
let myRoll = new Roll("1d20+"+statValue);
myRoll.evaluate();
myRoll.toMessage( { flavor: `Jet de compétence : ${competence.name} (${formulaFull})` } );
}
}
/* -------------------------------------------- */
rollCombat( combatName ) {
let stat = this.data.data.combat[combatName];
let statValue = stat.base + stat.malus + stat.bonus;
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})` } );
}
}

View File

@ -61,4 +61,33 @@ export class VadentisUtility extends Entity {
return list;
}
/* -------------------------------------------- */
static async confirmDelete(actorSheet, li) {
let itemId = li.data("item-id");
let objet = actorSheet.actor.items.find(item => item._id == itemId);
let msgTxt = "<p>Etes vous certain de souhaiter supprimer cet item ?";
let buttons = {
delete: {
icon: '<i class="fas fa-check"></i>',
label: "Oui, à supprimer",
callback: () => {
actorSheet.actor.deleteOwnedItem(itemId);
li.slideUp(200, () => actorSheet.render(false));
}
},
cancel: {
icon: '<i class="fas fa-times"></i>',
label: "Annuler"
}
}
msgTxt += "</p>";
let d = new Dialog({
title: "Confirmer la suppression",
content: msgTxt,
buttons: buttons,
default: "cancel"
});
d.render(true);
}
}