Sante et autrs

This commit is contained in:
2022-06-06 22:33:46 +02:00
parent d7387ac062
commit f23bdca66d
12 changed files with 423 additions and 137 deletions

View File

@@ -40,11 +40,16 @@ export class MournbladeActorSheet extends ActorSheet {
data: actorData,
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
limited: this.object.limited,
skills: duplicate(this.actor.getSkills()),
skills: this.actor.getSkills(),
armes: duplicate(this.actor.getWeapons()),
protections: duplicate(this.actor.getArmors()),
dons: duplicate(this.actor.getDons()),
alignement: this.actor.getAlignement(),
tendances:duplicate(this.actor.getTendances()),
runes:duplicate(this.actor.getRunes()),
origine: duplicate(this.actor.getOrigine() || {}),
heritage: duplicate(this.actor.getHeritage() || {}),
metier: duplicate(this.actor.getMetier() || {}),
combat: this.actor.getCombatValues(),
equipements: duplicate(this.actor.getEquipments()),
options: this.options,

View File

@@ -39,7 +39,7 @@ export class MournbladeActor extends Actor {
if (data.type == 'personnage') {
const skills = await MournbladeUtility.loadCompendium("fvtt-mournblade.skills")
data.items = skills.map(i => i.toObject())
data.items = skills.map(i => i.toObject())
}
if (data.type == 'pnj') {
}
@@ -48,20 +48,20 @@ export class MournbladeActor extends Actor {
}
/* -------------------------------------------- */
prepareArme( arme){
arme = duplicate(arme)
prepareArme(arme) {
arme = duplicate(arme)
let combat = this.getCombatValues()
if (arme.data.typearme == "contact" || arme.data.typearme == "contactjet") {
arme.data.competence = duplicate(this.data.items.find( item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
arme.data.competence = duplicate(this.data.items.find(item => item.type == "competence" && item.name.toLowerCase() == "mêlée"))
arme.data.attrKey = "pui"
arme.data.totalDegats = arme.data.degats + "+" + combat.bonusDegatsTotal
arme.data.totalOffensif = this.data.data.attributs.pui.value + arme.data.competence.data.niveau + arme.data.bonusmaniementoff
if (arme.data.isdefense) {
arme.data.totalDefensif = combat.defenseTotal + arme.data.competence.data.niveau + arme.data.bonusmaniementdef
arme.data.totalDefensif = combat.defenseTotal + arme.data.competence.data.niveau + arme.data.bonusmaniementdef
}
}
if (arme.data.typearme == "jet" || arme.data.typearme == "tir") {
arme.data.competence = duplicate(this.data.items.find( item => item.type == "competence" && item.name.toLowerCase() == "armes à distance"))
arme.data.competence = duplicate(this.data.items.find(item => item.type == "competence" && item.name.toLowerCase() == "armes à distance"))
arme.data.attrKey = "adr"
arme.data.totalOffensif = this.data.data.attributs.adr.value + arme.data.competence.data.niveau + arme.data.bonusmaniementoff
arme.data.totalDegats = arme.data.degats
@@ -75,9 +75,9 @@ export class MournbladeActor extends Actor {
/* -------------------------------------------- */
getWeapons() {
let armes = []
for (let arme of this.data.items ) {
for (let arme of this.data.items) {
if (arme.type == "arme") {
armes.push(this.prepareArme( arme) )
armes.push(this.prepareArme(arme))
}
}
return armes
@@ -88,6 +88,13 @@ export class MournbladeActor extends Actor {
return this.data.items.filter(item => item.type == "don")
}
/* -------------------------------------------- */
getTendances() {
return this.data.items.filter(item => item.type == "tendance")
}
getRunes() {
return this.data.items.filter(item => item.type == "rune")
}
/* -------------------------------------------- */
getEquipments() {
return this.data.items.filter(item => item.type == "equipement")
}
@@ -95,6 +102,15 @@ export class MournbladeActor extends Actor {
getArmors() {
return this.data.items.filter(item => item.type == "protection")
}
getOrigine() {
return this.data.items.find(item => item.type == "origine")
}
getMetier() {
return this.data.items.find(item => item.type == "metier")
}
getHeritage() {
return this.data.items.find(item => item.type == "heritage")
}
/* -------------------------------------------- */
getSkills() {
let comp = []
@@ -115,7 +131,17 @@ export class MournbladeActor extends Actor {
comp.push(item)
}
}
return comp
return comp.sort(function (a, b) {
let fa = a.name.toLowerCase(),
fb = b.name.toLowerCase();
if (fa < fb) {
return -1;
}
if (fa > fb) {
return 1;
}
return 0;
})
}
/* -------------------------------------------- */
@@ -125,12 +151,12 @@ export class MournbladeActor extends Actor {
/* -------------------------------------------- */
getDefenseBase() {
return this.data.data.attributs.tre.value + 5
return this.data.data.attributs.tre.value + 5
}
/* -------------------------------------------- */
getVitesseBase() {
return __vitesseBonus[this.data.data.attributs.adr.value]
return 5 + __vitesseBonus[this.data.data.attributs.adr.value]
}
/* -------------------------------------------- */
@@ -160,13 +186,13 @@ export class MournbladeActor extends Actor {
prepareDerivedData() {
if (this.type == 'personnage') {
let newSante = (this.data.data.attributs.pui.value + this.data.data.attributs.tre.value)*2 + 5
if (this.data.data.sante.base!=newSante ) {
this.update( {'data.sante.base': newSante} )
let newSante = this.data.data.sante.bonus + (this.data.data.attributs.pui.value + this.data.data.attributs.tre.value) * 2 + 5
if (this.data.data.sante.base != newSante) {
this.update({ 'data.sante.base': newSante })
}
let newAme = (this.data.data.attributs.cla.value + this.data.data.attributs.tre.value)*2 + 5
if (this.data.data.ame.base!=newAme ) {
this.update( {'data.ame.base': newAme} )
let newAme = (this.data.data.attributs.cla.value + this.data.data.attributs.tre.value) * this.data.data.biodata.amemultiplier + 5
if (this.data.data.ame.base != newAme) {
this.update({ 'data.ame.base': newAme })
}
}
@@ -261,7 +287,7 @@ export class MournbladeActor extends Actor {
getBonusDegats() {
return __degatsBonus[this.data.data.attributs.pui.value]
}
/* -------------------------------------------- */
async equipGear(equipmentId) {
let item = this.data.items.find(item => item.id == equipmentId);
@@ -306,16 +332,16 @@ export class MournbladeActor extends Actor {
}
/* -------------------------------------------- */
getCompetence( compId ) {
getCompetence(compId) {
return this.data.items.get(compId)
}
/* -------------------------------------------- */
async setPredilectionUsed( compId, predIdx) {
async setPredilectionUsed(compId, predIdx) {
let comp = this.data.items.get(compId)
let pred = duplicate(comp.data.data.predilections)
pred[predIdx].used = true
await this.updateEmbeddedDocuments('Item', [ {_id: compId, 'data.predilections': pred}])
await this.updateEmbeddedDocuments('Item', [{ _id: compId, 'data.predilections': pred }])
}
/* -------------------------------------------- */
@@ -362,7 +388,7 @@ export class MournbladeActor extends Actor {
/* -------------------------------------------- */
async rollArmeOffensif(armeId) {
let arme = this.data.items.get(armeId)
arme = this.prepareArme( arme )
arme = this.prepareArme(arme)
let rollData = this.getCommonRollData(arme.data.attrKey, arme.data.competence._id)
rollData.arme = arme
console.log("ARME!", rollData)
@@ -373,16 +399,16 @@ export class MournbladeActor extends Actor {
/* -------------------------------------------- */
async rollArmeDegats(armeId) {
let arme = this.data.items.get(armeId)
arme = this.prepareArme( arme )
let roll = new Roll(arme.data.totalDegats).roll( {async:false})
arme = this.prepareArme(arme)
let roll = new Roll(arme.data.totalDegats).roll({ async: false })
await MournbladeUtility.showDiceSoNice(roll, game.settings.get("core", "rollMode"));
let rollData = {
arme:arme,
arme: arme,
finalResult: roll.total,
alias : this.name,
actorImg : this.img,
actorId : this.id,
actionImg : arme.img,
alias: this.name,
actorImg: this.img,
actorId: this.id,
actionImg: arme.img,
}
MournbladeUtility.createChatWithRollMode(rollData.alias, {
content: await renderTemplate(`systems/fvtt-mournblade/templates/chat-degats-result.html`, rollData)

View File

@@ -5,7 +5,7 @@ export class MournbladeRollDialog extends Dialog {
/* -------------------------------------------- */
static async create(actor, rollData ) {
let options = { classes: ["MournbladeDialog"], width: 620, height: 380, 'z-index': 99999 };
let options = { classes: ["MournbladeDialog"], width: 320, height: 380, 'z-index': 99999 };
let html = await renderTemplate('systems/fvtt-mournblade/templates/roll-dialog-generic.html', rollData);
return new MournbladeRollDialog(actor, rollData, html, options );

View File

@@ -543,7 +543,15 @@ export class MournbladeUtility {
}
return false
}
let canCompetenceDouble = function (li) {
let message = game.messages.get(li.attr("data-message-id"))
let rollData = message.getFlag("world", "mournblade-roll")
let actor = game.actors.get(rollData.actorId)
if ( rollData.competence) {
return rollData.competence.data.doublebonus
}
return false
}
options.push(
{
name: "Ajouer +3 (1 point de Bonne Aventure)",
@@ -552,6 +560,14 @@ export class MournbladeUtility {
callback: li => MournbladeUtility.applyBonneAventureRoll(li, -1, "+3")
}
)
options.push(
{
name: "Ajouer +6 (1 point de Bonne Aventure)",
icon: "<i class='fas fa-user-plus'></i>",
condition: canApply && canApplyBALoyal && canCompetenceDouble,
callback: li => MournbladeUtility.applyBonneAventureRoll(li, -1, "+6")
}
)
options.push(
{
name: "Ajouer +1d6 (1 point de Bonne Aventure)",
@@ -560,6 +576,14 @@ export class MournbladeUtility {
callback: li => MournbladeUtility.applyBonneAventureRoll(li, -1, "+1d6")
}
)
options.push(
{
name: "Ajouer +2d6 (1 point de Bonne Aventure)",
icon: "<i class='fas fa-user-plus'></i>",
condition: canApply && canApplyBAChaotique && canCompetenceDouble,
callback: li => MournbladeUtility.applyBonneAventureRoll(li, -1, "+2d6")
}
)
options.push(
{
name: "Relancer le dé (3 points de Bonne Aventure)",
@@ -576,6 +600,14 @@ export class MournbladeUtility {
callback: li => MournbladeUtility.applyEclatRoll(li, -1, "+10")
}
)
options.push(
{
name: "Ajouter +20 (1 Point d'Eclat)",
icon: "<i class='fas fa-user-plus'></i>",
condition: canApply && canApplyPELoyal && canCompetenceDouble,
callback: li => MournbladeUtility.applyEclatRoll(li, -1, "+20")
}
)
return options
}