Domaine concerné: Script
Logiciel utilisé: Rpg Maker XP
Bonjour à tous !
Afin de coller à mon idée j'ai chercher à comprendre et à modifier le système de combat de XP.
Au cours de mes recherches suis tombé sur ça: http://www.rpg-maker.fr/tutoriels-461-configurer-son-systeme-de-combat-sous-rpg-maker-xp.html
Avec mes petites bases en programmation j'ai donc tenté, grâce à ce super tuto, de retoucher le code à ma sauce.
J'aurai cependant besoin d\'une tierce personne pour me dire si tout ça semble cohérent.
Pour l'instant je ne me suis attaqué qu'aux attaques physiques. Voici donc mes modifs.
Ligne 46:
1
2
|
hit_result = (rand(100) < attacker.hit) |
Je n'ai rien modifié à ce niveau là car je ne me suis pas encore attaqué à la gestion des statuts.
Ligne 73:
1
2
3
4
| eva = 8 * self.agi / attacker.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit) |
Alors là j'ai commencé à mettre les mains dedans. Je vais détailler tout ça pour être sûr que j'ai bien fais ce que j'ai voulu faire.
Partant d'une base:
Agilité du Défenseur: 10
Dextérité de l'Attaquant: 1
1
| hit_result = (self.agi - attacker.dex + rand(100) < 101) |
Agi du Défenseur - Dex de l'Attaquant + aléatoire 0/99 si le tout est inférieur à 101 alors l'Attaquant touche.
Ligne 50:
1
2
3
|
atk = [attacker.atk - self.pdef / 2, 0].max
self.damage = atk * (20 + attacker.str) / 20 |
Partant d'une base:
Force de l'Attaquant: 11
1
2
| atk = attacker.atk - self.pdef
self.damage = atk + rand(attacker.str) |
Attaque de l'arme de l'Attaquant - la valeur de l'armure du Défenseur donne les dégâts brutes.
Dégâts brutes + aléatoire 0/10 donne les dégâts finaux.
Ligne 53:
1
2
| self.damage *= elements_correct(attacker.element_set)
self.damage /= 100 |
Je n'ai pas modifié cette partie. Si je ne me trompe pas il me suffit de ne pas attribuer d'éléments pour que ça n'influence pas le reste du code (comme les statuts).
Ligne 69:
1
2
| amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp |
Apparemment ce code gère l'aléatoire des dégâts. Cependant, si je ne me suis pas trompé dans mes calculs des dégâts au dessus, l'aléatoire est déjà intégré à mon calcul. Du coup j'ai pensé à supprimé cette partie du code, mais sa disparition va-t-elle mettre à mal le reste du script?
Ligne 58:
1
2
3
4
| if rand(100) < 4 * attacker.dex / self.agi
self.damage *= 2
self.critical = true
end |
Partant d'une base:
Dextérité de l'Attaquant: 1
1
2
3
4
| if rand(10) < attacker.dex
self.damage *= 2
self.critical = true
end |
Un aléatoire 0/9 qui si il est inférieur à la Dextérité de l'Attaquant (donc à 0, soit 10% de chance de base si je dis pas de bêtises), provoque un coup critique. Ce coup critique multiplie les dommages par 2.
Ligne 63:
1
2
3
4
|
if self.guarding?
self.damage /= 2
end |
Pour finir, je laisse un peu plus de chance au défenseur de survivre en divisant les dommages par 1,5 au lieu de 2. J'ai un doute, on le note 1.5 ou 1,5 ?
1
2
3
4
|
if self.guarding?
self.damage /= 1.5
end |
Merci à ceux qui prendront la peine de lire tout ça.
J'espère ne pas avoir fais d’aberrations et ne pas être trop loin de la vérité avec mes modifs.
Cordialement, Sou un mec qui débute.
****
EDIT:
Ça à l'air de fonctionner correctement. Je vais donc continuer mes modifs pour le reste du système de combat. Comme j'y vais un peu au talent (dont je ne déborde pas), je ferait remonter les éventuels problèmes lorsque je tomberai dessus.
|