forked from public/foundryvtt-reve-de-dragon
Continue fight tests
This commit is contained in:
@ -55,15 +55,23 @@ export class RdDActorSheet extends ActorSheet {
|
||||
list.push(item);
|
||||
}
|
||||
}
|
||||
|
||||
// Update arme list with niveau from the associated competence
|
||||
if (data.itemsByType.arme) {
|
||||
for (const arme of data.itemsByType.arme) {
|
||||
arme.data.niveau = 0; // Per default, TODO to be fixed
|
||||
for ( const melee of data.competenceByCategory.melee ) {
|
||||
if (melee.name == arme.data.competence )
|
||||
arme.data.niveau = melee.data.niveau
|
||||
}
|
||||
// Force empty arme, at least for Esquive
|
||||
if (data.itemsByType.arme == undefined ) data.itemsByType.arme = [];
|
||||
for (const arme of data.itemsByType.arme) {
|
||||
arme.data.niveau = 0; // Per default, TODO to be fixed
|
||||
for ( const melee of data.competenceByCategory.melee ) {
|
||||
if (melee.name == arme.data.competence )
|
||||
arme.data.niveau = melee.data.niveau
|
||||
}
|
||||
}
|
||||
|
||||
if (data.competenceByCategory && data.competenceByCategory.melee) {
|
||||
//Specific case for Esquive and Corps à Corps
|
||||
for ( const melee of data.competenceByCategory.melee ) {
|
||||
if (melee.name == "Esquive")
|
||||
data.itemsByType.arme.push( { name: "Esquive", data: { niveau: melee.data.niveau, description: "", force: 6, competence: "Esquive", dommages: 0} } );
|
||||
if (melee.name == "Corps à corps")
|
||||
data.itemsByType.arme.push( { name: "Corps à corps", data: { niveau: melee.data.niveau, description: "", force: 6, competence: "Corps à corps", dommages: data.data.attributs.plusdom.value } } );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@ export class RdDActor extends Actor {
|
||||
* @param {Object} options (Unused) Additional options which customize the creation workflow.
|
||||
*
|
||||
*/
|
||||
|
||||
static async create(data, options) {
|
||||
// If the created actor has items (only applicable to duplicated actors) bypass the new actor creation logic
|
||||
if (data.items) {
|
||||
@ -26,8 +27,6 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
super.create(data, options);
|
||||
|
||||
// Create flags data
|
||||
await this.setFlag("foundryvtt-reve-de-dragon", "rollData", {} );
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -72,24 +71,30 @@ export class RdDActor extends Actor {
|
||||
xpmsg = "<br>Points d'expérience gagné ! " + xpcarac + " - " + xpcomp;
|
||||
}
|
||||
rollData.pointsDeTache = 4;
|
||||
rollData.qualite = 2;
|
||||
} else if (result <= (rollData.rollTarget.score /2) ) {
|
||||
quality = "Réussite Significative";
|
||||
rollData.pointsDeTache = 2;
|
||||
rollData.qualite = 1;
|
||||
} else if (result <= (rollData.rollTarget.score) ) {
|
||||
quality = "Réussite Normale";
|
||||
rollData.pointsDeTache = 1;
|
||||
rollData.qualite = 0;
|
||||
} else if (result < (rollData.rollTarget.epart) ) {
|
||||
quality = "Echec Normal";
|
||||
rollData.pointsDeTache = 0;
|
||||
rollData.qualite = -2;
|
||||
} else if (result < (rollData.rollTarget.etotal) ) {
|
||||
quality = "Echec Particulier";
|
||||
rollData.pointsDeTache = -2;
|
||||
rollData.qualite = -4;
|
||||
} else if (result >= (rollData.rollTarget.etotal) ) {
|
||||
quality = "Echec Total";
|
||||
rollData.pointsDeTache = -4;
|
||||
rollData.qualite = -6;
|
||||
}
|
||||
|
||||
// Weapon management
|
||||
// Fight management !
|
||||
let defenseMsg;
|
||||
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
|
||||
@ -99,12 +104,8 @@ export class RdDActor extends Actor {
|
||||
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) {
|
||||
console.log("Target", target);
|
||||
defenseMsg = RdDutility.buildDefenseChatCard(this, target, rollData );
|
||||
specialStr = "<br><strong>Cible</strong> : " + target.actor.data.name;
|
||||
defenseMsg = { title: "Défense en combat",
|
||||
content: "Action de défense en combat!<br><span class='chat-card-button-area'><a class='chat-card-button' id='encaisser-button' data-attackerid='"+
|
||||
this.data._id + "' data-defenderid='" + target.actor.data._id + "'>Encaisser !</a></span>",
|
||||
whisper: ChatMessage.getWhisperRecipients(target.actor.data.name) };
|
||||
}
|
||||
specialStr += "<br>Dommages : " + rollData.degats + "<br>Localisation : " + rollData.loc.label;
|
||||
} else {
|
||||
@ -115,7 +116,6 @@ export class RdDActor extends Actor {
|
||||
// Save it for fight
|
||||
await this.setFlag( "foundryvtt-reve-de-dragon", "rollData", undefined );
|
||||
await this.setFlag( "foundryvtt-reve-de-dragon", "rollData", rollData );
|
||||
console.log("MINE:", this);
|
||||
|
||||
let chatOptions = { content: "<strong>Test : " + rollData.selectedCarac.label + " / " + rollData.competence.name + "</strong><br>Jet : " +
|
||||
rollData.selectedCarac.value + " / " + rollData.finalLevelStr + " - " + rollData.rollTarget.score + "%<br><strong>Résutat : </strong>" + myroll.total + "<br>" +
|
||||
@ -255,14 +255,19 @@ export class RdDActor extends Actor {
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
rollArme( armeName ) {
|
||||
rollArme( armeName )
|
||||
{
|
||||
let armeItem = RdDUtility.findCompetence( this.data.items, armeName );
|
||||
this.rollCompetence( armeItem.data.competence, armeItem );
|
||||
if ( armeItem && armeItem.data.competence )
|
||||
this.rollCompetence( armeItem.data.competence, armeItem );
|
||||
else
|
||||
this.rollCompetence( armeName ); //Bypass mode!
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
async rollCompetence( compName, armeItem ) {
|
||||
|
||||
async rollCompetence( compName, armeItem )
|
||||
{
|
||||
console.log("!!!!!!", compName, armeItem);
|
||||
let compItem = RdDUtility.findCompetence( this.data.items, compName);
|
||||
let rollData = {
|
||||
"competence": compItem,
|
||||
@ -311,6 +316,12 @@ export class RdDActor extends Actor {
|
||||
this.sheet.render(true);
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
parerAttaque( attackerActor, armeId )
|
||||
{
|
||||
console.log("Going to PARY !!!!!!!!!");
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
/** @override */
|
||||
getRollData() {
|
||||
|
@ -69,9 +69,9 @@ export class RdDRollDialog extends Dialog {
|
||||
// Setup everything onload
|
||||
$(function() {
|
||||
// Set the default carac from the competence item
|
||||
rollData.selectedCarac = rollData.carac[rollData.competence.data.carac_defaut];
|
||||
rollData.selectedCarac = rollData.carac[rollData.competence.data.defaut_carac];
|
||||
// Update html, according to data
|
||||
$("#carac").val( rollData.competence.data.carac_defaut );
|
||||
$("#carac").val( rollData.competence.data.defaut_carac );
|
||||
$("#bonusmalus").val( rollData.bmValue );
|
||||
updateRollResult(rollData);
|
||||
});
|
||||
|
@ -376,6 +376,38 @@ export class RdDUtility {
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static isArmeMelee( compName)
|
||||
{
|
||||
let comp = compName.toLowerCase();
|
||||
if (comp.match("epée") || comp.match("hache") || comp.match("fleau") || comp.match("mass") || comp.match("lance") || comp.match("hast") || comp == "dague" || comp=="bouclier")
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static buildDefenseChatCard( attacker, target, rollData )
|
||||
{
|
||||
console.log("Target", target);
|
||||
let defenseMsg = { title: "Défense en combat",
|
||||
content: "Action de défense en combat!<br><span class='chat-card-button-area'>" +
|
||||
"<a class='chat-card-button' id='encaisser-button' data-attackerid='"+attacker.data._id + "' data-defenderid='" + target.actor.data._id + "'>Encaisser !</a></span>",
|
||||
whisper: ChatMessage.getWhisperRecipients(target.actor.data.name) };
|
||||
|
||||
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)) {
|
||||
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>";
|
||||
}
|
||||
}
|
||||
}
|
||||
// TODO - Tir + Lancer
|
||||
|
||||
return defenseMsg;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
static async chatListeners( html )
|
||||
{
|
||||
@ -386,6 +418,16 @@ export class RdDUtility {
|
||||
let defenderActor = game.actors.get(event.currentTarget.attributes['data-defenderid'].value );
|
||||
defenderActor.encaisserDommages( attackerActor);
|
||||
});
|
||||
|
||||
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);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user