Opposite tests

This commit is contained in:
2020-06-11 00:29:32 +02:00
parent 89f31a590a
commit b16e977b19
79 changed files with 184 additions and 35 deletions

View File

@ -96,23 +96,33 @@ export class RdDActor extends Actor {
// Fight management !
let defenseMsg;
let encaisser = false;
let specialStr = "<br>Points de taches : " + rollData.pointsDeTache; // Per default
if ( rollData.arme ) { // In case of fight, replace the "tache" per dommages + localization. "tache" indicates if result is OK or not
if ( rollData.pointsDeTache > 0 ) {
let myroll = new Roll("2d10");
myroll.roll();
rollData.degats = parseInt(myroll.result) + parseInt(rollData.arme.data.dommages) + parseInt(this.data.data.attributs.plusdom.value);
rollData.loc = RdDUtility.getLocalisation();
for (let target of game.user.targets) {
defenseMsg = RdDutility.buildDefenseChatCard(this, target, rollData );
specialStr = "<br><strong>Cible</strong> : " + target.actor.data.name;
if ( rollData.attackerRoll) {
if ( rollData.pointsDeTache > 0 ) { // Réussite !
specialStr = "<br><strong>Attaque parée/esquivée !</strong>";
} else {
specialStr = "<br><strong>Esquive/Parade échouée, encaissement !</strong>";
encaisser = true;
}
} else {
if ( rollData.pointsDeTache > 0 ) {
let myroll = new Roll("2d10");
myroll.roll();
rollData.degats = parseInt(myroll.result) + parseInt(rollData.arme.data.dommages) + parseInt(this.data.data.attributs.plusdom.value);
rollData.loc = RdDUtility.getLocalisation();
for (let target of game.user.targets) {
defenseMsg = RdDUtility.buildDefenseChatCard(this, target, rollData );
specialStr = "<br><strong>Cible</strong> : " + target.actor.data.name;
}
specialStr += "<br>Dommages : " + rollData.degats + "<br>Localisation : " + rollData.loc.label;
} else {
specialStr = "<br>Echec ! Pas de dommages";
}
specialStr += "<br>Dommages : " + rollData.degats + "<br>Localisation : " + rollData.loc.label;
} else {
specialStr = "<br>Echec ! Pas de dommages";
}
}
// Save it for fight
await this.setFlag( "foundryvtt-reve-de-dragon", "rollData", undefined );
await this.setFlag( "foundryvtt-reve-de-dragon", "rollData", rollData );
@ -125,9 +135,14 @@ export class RdDActor extends Actor {
}
ChatMessage.create( chatOptions );
// This an attack, generate the defense message
if ( defenseMsg ) { // target hit !
ChatMessage.create( defenseMsg );
}
}
// Get damages!
if ( encaisser ) {
this.encaisserDommages( rollData );
}
}
/* -------------------------------------------- */
@ -265,7 +280,7 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
async rollCompetence( compName, armeItem )
async rollCompetence( compName, armeItem=undefined, attackerRoll=undefined )
{
console.log("!!!!!!", compName, armeItem);
let compItem = RdDUtility.findCompetence( this.data.items, compName);
@ -276,6 +291,7 @@ export class RdDActor extends Actor {
"bonusmalusTable": CONFIG.RDD.bonusmalus,
"etat": this.data.data.compteurs.etat.value,
"bmValue": 0,
"attackerRoll": attackerRoll,
"finalLevel": 0
}
@ -295,10 +311,10 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
encaisserDommages( attackerActor )
{
let attackerRoll = attackerActor.getFlag("foundryvtt-reve-de-dragon", "rollData");
console.log("RollData!", attackerActor, attackerRoll);
encaisserDommages( rollData )
{
let attackerRoll = rollData.attackerRoll;
console.log("RollData from attacker!", rollData);
let degatsReel = attackerRoll.degats - this.computeArmure(attackerRoll.loc);
let result = RdDUtility.computeBlessuresSante(degatsReel);
this.santeIncDec("vie", result.vie);
@ -317,9 +333,11 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
parerAttaque( attackerActor, armeId )
parerAttaque( attackerRoll, armeId )
{
console.log("Going to PARY !!!!!!!!!");
let armeItem = this.getOwnedItem(armeId); // Item.data.data !
console.log("Going to PARY !!!!!!!!!", armeItem, attackerRoll.bmValue);
this.rollCompetence( armeItem.data.data.competence, armeItem.data, attackerRoll );
}
/* -------------------------------------------- */

View File

@ -75,12 +75,7 @@ export class RdDRollDialog extends Dialog {
$("#bonusmalus").val( rollData.bmValue );
updateRollResult(rollData);
});
// Replace again the button action, as i overwritten it
//$('button').click((event) => {
//mydialog.data.actor.performRoll(rollData);
//});
// Update !
$('#bonusmalus').click((event) => {
rollData.bmValue = event.currentTarget.value; // Update the selected bonus/malus

View File

@ -1,5 +1,7 @@
/* Common useful functions shared between objects */
import { RdDActor } from "./actor.js";
const level_category = {
"generale": "-4",
"particuliere": "-8",
@ -370,7 +372,7 @@ export class RdDUtility {
{
for (const item of compList) {
if (item.name == compName) {
console.log("Found item !", item);
//console.log("Found item !", item);
return item;
}
}
@ -397,9 +399,9 @@ export class RdDUtility {
if ( rollData.competence.data.categorie == "melee" ) { // Melee attack
let defenderArmes = [];
for (const arme of target.actor.data.items) {
if (arme.type == "arme" && isArmeMelee(arme.data.competence)) {
if (arme.type == "arme" && this.isArmeMelee(arme.data.competence)) {
defenderArmes.push( arme );
defenseMsg.content += "<a class='chat-card-button' id='parer-button' data-attackerid='"+attacker.data._id + "' data-defenderid='" + target.actor.data._id + " data-armeid='"+arme._id+"'>Parer avec " + arme.name + "</a></span>";
defenseMsg.content += "<br><a class='chat-card-button' id='parer-button' data-attackerid='"+attacker.data._id + "' data-defenderid='" + target.actor.data._id + "' data-armeid='"+arme._id+"'>Parer avec " + arme.name + "</a></span>";
}
}
}
@ -416,16 +418,17 @@ export class RdDUtility {
console.log("Encaisser button", event);
let attackerActor = game.actors.get(event.currentTarget.attributes['data-attackerid'].value );
let defenderActor = game.actors.get(event.currentTarget.attributes['data-defenderid'].value );
defenderActor.encaisserDommages( attackerActor);
let rollData = attackerActor.getFlag("foundryvtt-reve-de-dragon", "rollData");
defenderActor.encaisserDommages( rollData );
});
html.on("click", '#parer-button', event => {
event.preventDefault();
console.log("Parer button", event);
let attackerActor = game.actors.get(event.currentTarget.attributes['data-attackerid'].value );
let defenderActor = game.actors.get(event.currentTarget.attributes['data-defenderid'].value );
let armeId = event.currentTarget.attributes['data-armeid'].value;
defenderActor.parerAttaque( attackerActor, armeId);
let rollData = attackerActor.getFlag("foundryvtt-reve-de-dragon", "rollData");
defenderActor.parerAttaque( rollData, armeId);
});
}