Démarrer un combat sauvage
Pokémon Studio v3.0 abandonnera RPG Maker. À ce moment-là, cette section sera archivée : les pages resteront accessibles comme référence mais ne seront plus mises à jour.
PSDK peut lancer le joueur dans un combat sauvage directement depuis un event : une rencontre simple, un combat double, ou un Pokémon entièrement configuré dont on règle à l'avance le chromatisme, la forme et l'objet tenu. Ce guide couvre la commande qui démarre le combat, les formes qu'elle accepte, et les switches qu'on lit ensuite pour réagir au résultat.
call_battle_wild est une méthode de l'Interpreter : on l'appelle depuis la commande Script d'un event, sans aucun préfixe. Le Pokémon est désigné par son db_symbol (:pikachu, :gyarados) ou son ID numérique, exactement tel qu'il apparaît dans la base de données des Pokémon.
Un combat sauvage simple
La forme de base prend le Pokémon et son niveau :
call_battle_wild(id, level)
id— le Pokémon sauvage, sous forme de db_symbol (:pikachu) ou d'ID numérique.level— le niveau auquel il apparaît.
Ainsi, un Pikachu de niveau 15 s'écrit :
call_battle_wild(:pikachu, 15)
Le combat démarre immédiatement. Par défaut, le joueur ne peut pas perdre un combat sauvage sans conséquence : une défaite déclenche le black-out habituel et le ramène à la maison ou au dernier Centre Pokémon.
Un combat sauvage double ou triple
Pour lancer un combat 2 contre 2, on passe un second Pokémon sous la forme d'une autre paire id, level :
call_battle_wild(id1, level1, id2, level2)
Par exemple, un Zigzaton et un Chenipotte ensemble :
call_battle_wild(:zigzagoon, 7, :wurmple, 6)
Le nombre de Pokémon passés détermine à lui seul le format du combat : deux ennemis font un combat double, trois font un combat triple (3 contre 3). Il suffit d'ajouter une autre paire id, level :
call_battle_wild(:zubat, 12, :zubat, 11, :golbat, 14)
Un combat triple exige que le joueur ait trois Pokémon valides pour remplir son propre camp. Au-delà de trois, le format reste plafonné au triple ; une horde complète de cinq Pokémon est une propriété d'un groupe sauvage configuré dans Studio, pas quelque chose que cette commande produit.
Configurer le Pokémon sauvage
Les deux formes ci-dessus génèrent toujours un Pokémon ordinaire. Lorsqu'on a besoin de contrôler sa forme, son genre, son objet tenu ou d'autres attributs, on construit d'abord le Pokémon avec PFM::Pokemon.generate_from_hash, puis on le passe à call_battle_wild :
pokemon = PFM::Pokemon.generate_from_hash(id: :pikachu, level: 15, form: 1, gender: 2)
call_battle_wild(pokemon, nil)
Le niveau est lu dans le hash, le second argument de call_battle_wild est donc ignoré ici : on passe nil.
generate_from_hash accepte un hash dont les clés correspondent aux attributs du Pokémon :
id— db_symbol ou ID numérique du Pokémon.level— son niveau.shiny/no_shiny— forcer ou interdire l'apparence chromatique.form— l'indice de forme (-1laisse PSDK choisir automatiquement).gender—0asexué,1mâle,2femelle.item— le db_symbol d'un objet tenu (:leftovers).nature,stats(IV),bonus(EV),moves,ball— et les autres attributs qu'un Pokémon peut porter.
La façon dont call_battle_wild distingue ses formes repose sur le type du troisième argument, et le moteur lui-même signale ce mécanisme comme fragile. Pour tout cas dépassant une rencontre simple ou double ordinaire, on préfère construire des objets PFM::Pokemon avec generate_from_hash : c'est sans ambiguïté et bien plus lisible.
On peut aussi régler le décor du combat juste avant l'appel : affecter $game_temp.battleback_name pour forcer un arrière-plan, et $game_system.battle_bgm = RPG::AudioFile.new('nom', 100, 100) pour forcer la musique. On pose l'arrière-plan sur la ligne juste avant call_battle_wild, car PSDK le réinitialise à chaque frame.
Une rencontre chromatique
Pour un Pokémon seul, la forme simple prend deux booléens supplémentaires, forcer-shiny puis interdire-shiny :
call_battle_wild(:gyarados, 30, true, false)
Cela garantit un Léviator chromatique. Le même résultat via un Pokémon configuré, qui est la seule façon de forcer un chromatique dans un combat à plusieurs Pokémon :
pokemon = PFM::Pokemon.generate_from_hash(id: :gyarados, level: 30, shiny: true)
call_battle_wild(pokemon, nil)
Un combat double configuré
Pour mener un combat double où chaque Pokémon est configuré, on génère les deux et on passe le second après le nil ignoré :
first = PFM::Pokemon.generate_from_hash(id: :zigzagoon, level: 7, shiny: true)
second = PFM::Pokemon.generate_from_hash(id: :wurmple, level: 6, form: 1)
call_battle_wild(first, nil, second)
Le premier argument est le Pokémon de tête, le nil tient lieu de niveau ignoré, et chaque argument suivant est un autre Pokémon du côté sauvage.
Réagir au résultat du combat
À la fin du combat, PSDK écrit le résultat dans des switches du jeu. On les lit dans une Condition (Conditional Branch) juste après la commande call_battle_wild pour aiguiller le déroulement selon ce qui s'est passé :
| Switch | ID | Signification |
|---|---|---|
BT_Victory | 37 | le joueur a gagné |
BT_Defeat | 36 | le joueur a été vaincu |
BT_Player_Flee | 35 | le joueur a fui |
BT_Wild_Flee | 34 | le Pokémon sauvage a fui |
BT_Catch | 38 | le joueur a capturé le Pokémon |
Par exemple, on ne donne une récompense que si le joueur a réellement gagné, en testant le switch 37 dans une Condition après le combat. En cas de défaite réelle (switch 36), le joueur a déjà été ramené en arrière, et l'event reprend à partir de là.
Conclusion
call_battle_wild(id, level)démarre un combat sauvage simple ; le Pokémon est désigné par db_symbol ou ID numérique.- On ajoute d'autres paires
id,levelpour un combat double ou triple ; le nombre d'ennemis fixe le format (plafonné au triple). - Pour un contrôle complet (chromatique, forme, genre, objet tenu), on construit le Pokémon avec
PFM::Pokemon.generate_from_hashet on le passe à la place d'un ID. - Après le combat, les switches
34à38indiquent si le joueur a gagné, perdu, fui, vu le Pokémon fuir, ou capturé le Pokémon.