Battle::Move

📅février 19, 2019 👨‍💼

Bonjour à tous, cette semaine, j’ai commencé à reprogrammer le système de combat de Pokémon SDK.

Les objets relatif au combat auront leur propre classe « PFM::PokemonBattler » pour les Pokémon et « Battle::Move » pour les attaques. Ceci permet de gérer les propriétés exclusivement relatives au combat (comme le fait qu’un Pokémon utilise focus energy ou puissanceen Français).

Dans cette reprogrammation, j’ai décidé de déporter la formule de calcul de dégâts dans la classe « Battle::Move ». Pourquoi ça vous me direz ?

Et bien c’est très simple, la formule prend en compte divers paramètres relatif à l’attaque et en plus certaines attaques comme SonicBoom ou Carnareket ont leur propre manière de calculer les dégâts, de ce fait il est important de pouvoir modifier la manière de calculer les dégâts sans avoir à ajouter des centaines de millier de conditions, l’héritage fera le travail !

Attaque modifiant certaines de ses propriétés

Cette image montre l’utilisation de l’héritage, les attaques ayant du recul ont les mêmes propriétés que toute les attaques à l’exception qu’il y a la propriété « recoil? » qui indique au système de combat d’infliger une partie des dégâts à l’utilisateur de l’attaque. Quand les attaques du Pokémon seront généré, toute les attaques ayant pour be_method « s_recoil » seront des « Battle::RecoilMove » au lieu de « Battle::Move ».

Liste des scripts relatifs au calcul des dégâts

Bien entendu, je ne me suis pas contenté de reprendre la formule d’origine qu’il y a dans PSDK, j’ai essayé de faire en sorte à ce qu’elle soit le plus modifiable possible. Il est désormais possible d’intégrer des effets augmentant/réduisant la puissance des attaques selon ce que le lanceur ou la cible porte ou a comme capacité. Et tout ceci de manière à ce que vos modifications dans la base de données n’interfèrent pas avec les définitions précédentes. J’utilise les db_symbol des attaques, objets, talents et Pokémon pour identifier les éléments.

Définition du multiplicateur de puissance de l’Orbe Adamant

Par exemple dans cette image vous pouvez voir que j’ai défini le multiplicateur de puissance sur l’objet « Orbe Adamant » porté par le lanceur. Quand la méthode « calc_adamant_orb_multiplier » sera appelée, elle vérifiera que le lanceur est bien Dialga puis que le type de l’attaque est bien l’un des deux types autorisé pour donner 20% de puissance en plus à l’attaque.

Voilà pour mes petites explications sur l’une des nouveautés d’Alpha 25 de PSDK. Il y a plein de choses qui peuvent être détaillées par rapport aux attaques (je n’ai pas parlé des talents et de l’adversaire) mais si j’expliquais tout ça serait interminable donc je le ferai dans de futurs tutoriels 🙂

Alpha 25 Pokémon SDK