diff --git a/module/actor-sheet.js b/module/actor-sheet.js
index 131f6996..fe9a2470 100644
--- a/module/actor-sheet.js
+++ b/module/actor-sheet.js
@@ -169,8 +169,12 @@ export class RdDActorSheet extends ActorSheet {
if ( dropID ) { // Dropped over an item !!!
let objetId = dragData.id || dragData.data._id;
if ( this.objetVersConteneur[objetId] != dropID ) {
- this.actor.enleverDeConteneur(objetId, this.objetVersConteneur[objetId]);
- this.actor.ajouterAConteneur(objetId, dropID);
+ if ( this.actor.testConteneurCapacite(objetId, dropID) ) {
+ this.actor.enleverDeConteneur(objetId, this.objetVersConteneur[objetId]);
+ this.actor.ajouterAConteneur(objetId, dropID);
+ } else {
+ ui.notifications.info("Capacité d'encombrement insuffisante dans le conteneur !");
+ }
}
}
console.log("DATA !!!!", dragData, dropID );
diff --git a/module/actor.js b/module/actor.js
index 12f5fcc7..f196e47d 100644
--- a/module/actor.js
+++ b/module/actor.js
@@ -130,7 +130,7 @@ export class RdDActor extends Actor {
let message = "Réussite particulière en attaque";
message = message + "
Attaquer en Force";
// Finesse et Rapidité seulement en mêlée et si la difficulté libre est de -1 minimum
- if (rollData.selectedCarac.label == "Mêlée" && rollData.bmValue < 0 ) {
+ if (rollData.selectedCarac.label == "Mêlée" && rollData.diffLibre < 0 ) {
message = message + "
Attaquer en Rapidité";
message = message + "
Attaquer en Finesse";
}
@@ -390,6 +390,28 @@ export class RdDActor extends Actor {
await this.update( {"data.compteurs": compteurs } );
}
+ /* -------------------------------------------- */
+ /** Teste si le conteneur de destination a suffisament de capacité
+ * pour recevoir le nouvel objet
+ */
+ testConteneurCapacite( itemId, conteneurId ) {
+ if ( !conteneurId ) return true; // pas de conteneur (porté sur soi), donc toujours OK.
+ let conteneur = this.items.find( conteneur => conteneurId == conteneur._id); // recup conteneur
+ //console.log("Conteneur trouvé : ", conteneur);
+ if ( conteneur && conteneur.type == "conteneur" ) {
+ let currentEnc = 0; // Calculer le total actuel des contenus
+ for (let id of conteneur.data.data.contenu) {
+ let objet = this.items.find( objet => (id == objet._id) );
+ currentEnc += (objet) ? objet.data.data.encombrement : 0;
+ }
+ // Et gérer le nouvel objet
+ let nouvelObjet = this.items.find( objet => (itemId == objet._id) );
+ if ( currentEnc + nouvelObjet.data.data.encombrement > Number(conteneur.data.data.capacite) )
+ return false;
+ }
+ return true;
+ }
+
/* -------------------------------------------- */
/** Supprime un item d'un conteneur, sur la base
* de leurs ID */
diff --git a/system.json b/system.json
index e364e060..bf3ac155 100644
--- a/system.json
+++ b/system.json
@@ -2,7 +2,7 @@
"name": "foundryvtt-reve-de-dragon",
"title": "Rêve de Dragon",
"description": "Rêve de Dragon RPG for FoundryVTT",
- "version": "0.9.43",
+ "version": "0.9.44",
"minimumCoreVersion": "0.7.5",
"compatibleCoreVersion": "0.7.6",
"templateVersion": 45,