❤ 2Atlantis animations Picot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
| /*:
* @plugindesc Système de vol avec ou sans bonus, incluant les logs pour débogage.
* @author ChatGPT 4o et accessoirement Founix ^^
*
* @help
* Ce plugin ajoute un système de vol basé sur :
* - 50% du taux de drop configuré dans l'éditeur.
* - Un bonus optionnel avec <StealBoost:X> dans les équipements pour augmenter les chances de vol.
*
* Fonctionnalités :
* - Gestion indépendante des objets volés pour chaque ennemi.
* - Choix aléatoire des objets volés parmi les objets disponibles.
* - Affichage des chances de vol dans la console pour débogage.
*
* Instructions :
* 1. Ajoutez <Steal> dans les remarques d'une compétence pour activer la fonction de vol.
* 2. Configurez les "Drops d'objets" des ennemis dans l'éditeur avec leurs probabilités (en fraction comme d'habitude).
* 3. Ajoutez <StealBoost:X> dans les remarques des équipements pour augmenter les chances de vol.
*
* Exemple :
* - <StealBoost:10> sur un équipement ajoute 10% aux chances de vol.
* - Un objet avec un taux de drop de 50% (1/2) aura une chance de vol de 25%, augmentée à 35% avec un bonus StealBoost de 10%.
*
* Utilisation :
* -Internet c'est free, faites-en ce que vous voulez !
*/
(function() {
// Initialise les objets volés pour chaque ennemi
const _Game_Enemy_initMembers = Game_Enemy.prototype.initMembers;
Game_Enemy.prototype.initMembers = function() {
_Game_Enemy_initMembers.call(this);
this._stolenItems = []; // Liste des objets volés pour cet ennemi
};
// Fonction pour voler un objet
Game_Enemy.prototype.stealItem = function(user) {
const dropItems = this.enemy().dropItems.filter(di => di.kind > 0);
if (dropItems.length === 0) return "Il n'y a rien à voler !";
// Filtrer les objets encore volables
const availableItems = dropItems.filter(drop => {
const item = this.itemObject(drop.kind, drop.dataId);
return item && !this._stolenItems.includes(item);
});
if (availableItems.length === 0) {
return "Il n'y a plus rien à voler !";
}
// Vérifier si l'acteur est détecté
if (!user) {
console.error("Erreur : Aucun utilisateur d'action détecté !");
return "Erreur interne : Aucun utilisateur trouvé.";
}
console.log(`Utilisateur détecté : ${user.name()}`); // Debug : Utilisateur
// Déboguer les équipements de l'utilisateur
const equips = user.equips();
if (!equips || equips.length === 0) {
console.error("Erreur : Aucun équipement détecté pour cet utilisateur !");
return "Erreur interne : Aucun équipement trouvé.";
}
console.log(`Équipements détectés : ${equips.map(equip => (equip ? equip.name : "Aucun"))}`); // Debug
// Calculer le bonus StealBoost
let stealBonus = 0;
equips.forEach(equip => {
if (equip && equip.meta.StealBoost) {
console.log(`Équipement détecté avec StealBoost : ${equip.name}`); // Debug
const boost = parseInt(equip.meta.StealBoost) || 0;
console.log(`StealBoost trouvé : ${boost}%`); // Debug
stealBonus += boost;
} else if (equip) {
console.log(`Équipement sans StealBoost : ${equip.name}`); // Debug
}
});
// Sélectionner un objet aléatoire parmi les disponibles
const randomDrop = availableItems[Math.floor(Math.random() * availableItems.length)];
const item = this.itemObject(randomDrop.kind, randomDrop.dataId);
// Calculer les chances de vol
const dropRate = randomDrop.denominator ? 1 / randomDrop.denominator : 0;
let stealChance = dropRate / 2 + stealBonus / 100;
// Limiter les chances de vol à 100%
stealChance = Math.min(stealChance, 1);
// Debug : Afficher les chances de vol dans la console
console.log(
`Objet : ${item.name}, Taux de drop : ${(dropRate * 100).toFixed(2)}%, StealBoost : ${stealBonus}%, Taux final : ${(stealChance * 100).toFixed(2)}%`
);
if (Math.random() < stealChance) {
this._stolenItems.push(item); // Marque l'objet comme volé
return `Vous avez volé ${item.name} !`;
} else {
return "Vol échoué !";
}
};
// Ajoute un message après le vol
const _Game_Action_apply = Game_Action.prototype.apply;
Game_Action.prototype.apply = function(target) {
_Game_Action_apply.call(this, target);
if (this.item() && this.item().meta.Steal) {
const user = this.subject(); // Récupère directement l'utilisateur de l'action
console.log(`Action exécutée par : ${user ? user.name() : "Aucun utilisateur"}`); // Debug : Utilisateur
const message = target.stealItem(user);
$gameMessage.add(message);
}
};
})();
|
|