Sante et autrs

This commit is contained in:
2022-06-06 18:49:39 +02:00
parent 665feac605
commit fb6463aba5
15 changed files with 654 additions and 127 deletions

View File

@@ -41,10 +41,12 @@ export class MournbladeActorSheet extends ActorSheet {
effects: this.object.effects.map(e => foundry.utils.deepClone(e.data)),
limited: this.object.limited,
skills: duplicate(this.actor.getSkills()),
weapons: duplicate(this.actor.getWeapons()),
armors: duplicate(this.actor.getArmors()),
armes: duplicate(this.actor.getWeapons()),
protections: duplicate(this.actor.getArmors()),
dons: duplicate(this.actor.getDons()),
alignement: this.actor.getAlignement(),
//equipments: duplicate(this.actor.getEquipments()),
combat: this.actor.getCombatValues(),
equipements: duplicate(this.actor.getEquipments()),
options: this.options,
owner: this.document.isOwner,
editScore: this.options.editScore,
@@ -107,28 +109,17 @@ export class MournbladeActorSheet extends ActorSheet {
let compId = li.data("item-id")
this.actor.rollCompetence(attrKey, compId)
})
html.find('.roll-spec').click((event) => {
const li = $(event.currentTarget).parents(".item");
const specId = li.data("item-id");
this.actor.rollSpec(specId);
});
html.find('.weapon-roll').click((event) => {
const li = $(event.currentTarget).parents(".item");
const weaponId = li.data("item-id");
this.actor.rollWeapon(weaponId);
});
html.find('.armor-roll').click((event) => {
const li = $(event.currentTarget).parents(".item");
const armorId = li.data("item-id");
this.actor.rollArmor(armorId);
});
html.find('.weapon-damage-roll').click((event) => {
const li = $(event.currentTarget).parents(".item");
const weaponId = li.data("item-id");
this.actor.rollWeapon(weaponId, true);
});
html.find('.roll-arme-offensif').click((event) => {
const li = $(event.currentTarget).parents(".item")
let armeId = li.data("item-id")
this.actor.rollArmeOffensif(armeId)
})
html.find('.roll-arme-degats').click((event) => {
const li = $(event.currentTarget).parents(".item")
let armeId = li.data("item-id")
this.actor.rollArmeDegats(armeId)
})
html.find('.lock-unlock-sheet').click((event) => {
this.options.editScore = !this.options.editScore;
@@ -153,11 +144,11 @@ export class MournbladeActorSheet extends ActorSheet {
}
/* -------------------------------------------- */
async _onDropItem(event, dragData) {
/*async _onDropItem(event, dragData) {
let item = await MournbladeUtility.searchItem( dragData)
this.actor.preprocessItem( event, item, true )
super._onDropItem(event, dragData)
}
}*/
/* -------------------------------------------- */
/** @override */

View File

@@ -3,6 +3,9 @@ import { MournbladeUtility } from "./mournblade-utility.js";
import { MournbladeRollDialog } from "./mournblade-roll-dialog.js";
/* -------------------------------------------- */
const __degatsBonus = [-2, -2, -1, -1, 0, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 8, 8, 9, 9, 10, 10]
const __vitesseBonus = [-2, -2, -1, -1, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8]
/* -------------------------------------------- */
/**
* Extend the base Actor entity by defining a custom roll data structure which is ideal for the Simple system.
@@ -44,9 +47,49 @@ export class MournbladeActor extends Actor {
return super.create(data, options);
}
/* -------------------------------------------- */
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.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
}
}
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.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
if (arme.data.isdefense) {
arme.data.totalDefensif = combat.defenseTotal + arme.data.competence.data.niveau + arme.data.bonusmaniementdef
}
}
return arme
}
/* -------------------------------------------- */
getWeapons() {
return this.data.items.filter(item => item.type == "arme")
let armes = []
for (let arme of this.data.items ) {
if (arme.type == "arme") {
armes.push(this.prepareArme( arme) )
}
}
return armes
}
/* -------------------------------------------- */
getDons() {
return this.data.items.filter(item => item.type == "don")
}
/* -------------------------------------------- */
getEquipments() {
return this.data.items.filter(item => item.type == "equipement")
}
/* -------------------------------------------- */
getArmors() {
@@ -80,6 +123,30 @@ export class MournbladeActor extends Actor {
return (this.data.data.balance.loi > this.data.data.balance.chaos) ? "loyal" : "chaotique"
}
/* -------------------------------------------- */
getDefenseBase() {
return this.data.data.attributs.tre.value + 5
}
/* -------------------------------------------- */
getVitesseBase() {
return __vitesseBonus[this.data.data.attributs.adr.value]
}
/* -------------------------------------------- */
getCombatValues() {
let combat = {
initBase: this.data.data.attributs.adr.value,
initTotal: this.data.data.attributs.adr.value + this.data.data.combat.initbonus,
bonusDegats: this.getBonusDegats(),
bonusDegatsTotal: this.getBonusDegats() + this.data.data.combat.bonusdegats,
vitesseBase: this.getVitesseBase(),
vitesseTotal: this.getVitesseBase() + this.data.data.combat.vitessebonus,
defenseBase: this.getDefenseBase(),
defenseTotal: this.getDefenseBase() + this.data.data.combat.defensebonus
}
return combat
}
/* -------------------------------------------- */
prepareBaseData() {
}
@@ -190,6 +257,11 @@ export class MournbladeActor extends Actor {
return this.data.data.attributes[attrKey]
}
/* -------------------------------------------- */
getBonusDegats() {
return __degatsBonus[this.data.data.attributs.pui.value]
}
/* -------------------------------------------- */
async equipGear(equipmentId) {
let item = this.data.items.find(item => item.id == equipmentId);
@@ -287,4 +359,34 @@ export class MournbladeActor extends Actor {
rollDialog.render(true)
}
/* -------------------------------------------- */
async rollArmeOffensif(armeId) {
let arme = this.data.items.get(armeId)
arme = this.prepareArme( arme )
let rollData = this.getCommonRollData(arme.data.attrKey, arme.data.competence._id)
rollData.arme = arme
console.log("ARME!", rollData)
let rollDialog = await MournbladeRollDialog.create(this, rollData)
rollDialog.render(true)
}
/* -------------------------------------------- */
async rollArmeDegats(armeId) {
let arme = this.data.items.get(armeId)
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,
finalResult: roll.total,
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

@@ -318,7 +318,10 @@ export class MournbladeUtility {
} else {
rollData.diceFormula += `+${rollData.attr.value}*2+${rollData.modificateur}`
}
if (rollData.arme) {
rollData.diceFormula += `+${rollData.arme.data.bonusmaniementoff}`
}
let myRoll = new Roll(rollData.diceFormula).roll({ async: false })
await this.showDiceSoNice(myRoll, game.settings.get("core", "rollMode"));
rollData.roll = myRoll