Gérer le Pokédex
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.
Dans PSDK, le Pokédex fait partie de l'état du jeu, on l'atteint via game_state.pokedex. Ce guide couvre comment donner le Pokédex au joueur, lire les compteurs de vus et de capturés, la différence entre dex régional et national, changer de dex affiché, et tester, afficher ou marquer une espèce précise depuis un event.
L'objet Pokédex vit sur l'état du jeu. On y accède via l'accesseur global game_state, donc toute commande de cette page s'écrit game_state.pokedex.quelque_chose(...), saisie dans la commande Script d'un event. Si la commande Script est nouvelle pour toi, commence par Utiliser l'Interpreter dans un event.
Plusieurs de ces opérations ont aussi un équivalent 100 % événementiel, via les interrupteurs et variables que PSDK réserve au dex ; chacun est indiqué au bon endroit. Le même Pokédex est aussi accessible via l'ancien global $pokedex que l'on croise dans les scripts existants.
Donner le Pokédex au joueur
Le Pokédex est désactivé au début d'une nouvelle partie. On l'active quand le joueur le reçoit, en général du PNJ qui le lui remet :
game_state.pokedex.enable
Cela active l'interrupteur 100, l'indicateur que PSDK utilise pour savoir que le joueur possède le dex. Dès lors, le joueur peut ouvrir l'écran du Pokédex et ses rencontres sont suivies normalement.
Pour le lui retirer, on le désactive :
game_state.pokedex.disable
Pour savoir si le joueur l'a, enabled? renvoie true ou false, donc il a sa place dans l'onglet Script d'un Branchement conditionnel :
game_state.pokedex.enabled?
Chacune de ces opérations a un équivalent événementiel : activer l'interrupteur 100 donne le dex, le désactiver le retire, et consulter l'interrupteur 100 en donne l'état, sans aucun Script.
Tester une espèce précise
Toute commande qui prend une espèce accepte soit son db_symbol, l'identifiant texte d'une espèce comme :pikachu, soit un ID numérique. Un ID numérique est le numéro du Pokédex national (l'ID de l'espèce en base), jamais la position affichée dans un dex régional.
pokemon_seen? et pokemon_caught? répondent à la question de savoir si le joueur a déjà rencontré ou capturé une espèce donnée. Elles renvoient true ou false, pour l'onglet Script d'un Branchement conditionnel :
# Le joueur a-t-il vu un Pikachu ?
game_state.pokedex.pokemon_seen?(:pikachu)
# En a-t-il capturé un ?
game_state.pokedex.pokemon_caught?(:pikachu)
Les deux acceptent un deuxième argument optionnel, un numéro de forme, pour tester une forme précise plutôt que l'espèce entière (0 est la forme de base) :
# Le joueur a-t-il vu la forme 2 de Rotom ?
game_state.pokedex.pokemon_seen?(:rotom, 2)
C'est l'outil de base des events réactifs : un PNJ qui commente ce que le joueur a capturé, une route qui s'ouvre une fois une espèce enregistrée, et ainsi de suite. Un exemple complet, un PNJ donne le dex et un contrôle ultérieur teste une capture :
# Dans l'event du PNJ qui remet le Pokédex
game_state.pokedex.enable
# Plus tard, dans l'onglet Script d'un Branchement conditionnel qui garde une route
game_state.pokedex.pokemon_caught?(:pikachu)
Le premier event active le dex ; le second ne laisse passer le joueur qu'une fois qu'il a capturé un Pikachu.
Lire les compteurs
Le Pokédex suit combien d'espèces le joueur a vues et capturées. pokemon_seen et pokemon_captured renvoient ces totaux :
game_state.pokedex.pokemon_seen
game_state.pokedex.pokemon_captured
Les deux renvoient un Integer, donc on peut en stocker un dans une variable ou le tester, par exemple un Professeur qui récompense le joueur une fois cinquante espèces capturées :
# Onglet Script d'un Branchement conditionnel
game_state.pokedex.pokemon_captured >= 50
PSDK recopie aussi les deux totaux dans la variable 2 (vus) et la variable 3 (capturés), tenues à jour automatiquement, si bien qu'une simple commande Gestion des variables les lit sans Script.
Ces totaux couvrent chaque espèce vue ou capturée sur l'ensemble du jeu. Avec le dex national standard, qui liste toutes les espèces, ce sont exactement les chiffres qu'affiche le dex national : pokemon_seen vaut variant_creature_seen(:national) et pokemon_captured vaut variant_creature_caught(:national).
Le nombre sur l'écran du Pokédex en jeu n'est pas toujours ce total : il ne compte que le dex actuellement affiché (son variant, le db_symbol du dex à l'écran). Un dex régional ne liste qu'une région, donc il en affiche moins. On lit ce compte à l'écran avec variant_creature_seen et variant_creature_caught :
game_state.pokedex.variant_creature_seen # vus, pour le dex affiché
game_state.pokedex.variant_creature_caught # capturés, pour le dex affiché
game_state.pokedex.variant_creature_seen(:regional) # vus, pour un dex précis
Sans argument, ils comptent le dex actuellement affiché ; on passe le db_symbol d'un dex pour en compter un autre.
| Ce qu'on lit | Ce que ça compte |
|---|---|
pokemon_seen / pokemon_captured (variables 2 et 3) | le total national, inchangé par le dex affiché |
variant_creature_seen / variant_creature_caught | uniquement le dex actuellement affiché |
Ces méthodes portent le préfixe pokemon_ en tant qu'alias. Les noms canoniques de PSDK sont désormais creature_seen, creature_caught, creature_seen? et creature_caught? ; les formes pokemon_ appellent le même code et sont conservées parce qu'elles se lisent mieux dans un jeu Pokémon. Les méthodes sans alias propre au Pokémon (mark_seen, mark_captured, variant) s'écrivent telles quelles.
Le dex régional et le dex national
Jusqu'ici, le joueur parcourt le dex régional : il ne liste que les espèces de la région courante, et seules celles-là peuvent être enregistrées. Le mode national déverrouille toutes les espèces, donc n'importe laquelle peut être marquée vue ou capturée, et le dex national les liste toutes.
game_state.pokedex.set_national(true) # passer en mode national
game_state.pokedex.set_national(false) # revenir au régional
game_state.pokedex.national? # true quand le mode national est actif
Le mode national est stocké dans l'interrupteur 99, donc un event peut le basculer en activant ou désactivant l'interrupteur 99, et le lire de la même façon.
Comme un dex régional ne liste que sa région, la même sauvegarde y affiche un compte à l'écran plus petit que sur le dex national. Passer en mode national n'ajoute rien aux enregistrements du joueur ; cela élargit seulement ce que l'écran compte et ce qui peut être enregistré.
Changer de dex affiché
Un projet peut définir plusieurs dex dans Pokémon Studio, chacun avec son propre db_symbol, par exemple :regional, :national, et tout dex personnalisé que l'on crée. Le Pokédex retient celui qu'il affiche actuellement :
game_state.pokedex.variant # le db_symbol du dex affiché
game_state.pokedex.variant = :national # afficher le dex national désormais
game_state.pokedex.variant = :regional # revenir au dex régional
Affecter un dex que le projet ne définit pas est ignoré, donc la valeur pointe toujours sur un dex réel. set_national(true) est un raccourci qui passe au dex :national et active le mode national ; on utilise variant = seul quand on veut seulement changer la liste affichée, par exemple pour montrer le dex régional d'une autre zone.
Pour repasser du dex national à un dex régional, on appelle set_national(false) avant de changer le variant :
game_state.pokedex.set_national(false) # remet l'interrupteur 99 à false et rebascule sur un dex régional
game_state.pokedex.variant = :regional # puis on choisit le dex exact à afficher
variant = :regional seul ne désactive pas le mode national : l'interrupteur 99 reste à true, et on se retrouve à afficher un dex régional alors que toutes les espèces sont encore considérées comme déverrouillées, un état incohérent à éviter. Seul set_national(false) coupe le mode national, donc il vient toujours en premier.
Marquer une espèce vue ou capturée
Quand une créature sauvage apparaît en combat et quand le joueur la capture, PSDK l'enregistre automatiquement via mark_seen et mark_captured. On en a rarement besoin à la main, mais elles existent pour le contrôle scénaristique, comme une scène qui révèle un légendaire avant tout combat :
game_state.pokedex.mark_seen(:mew) # enregistrer Mew comme vu
game_state.pokedex.mark_captured(:mew) # enregistrer Mew comme capturé
mark_seen prend une forme optionnelle et un drapeau forced :
game_state.pokedex.mark_seen(db_symbol, form = 0, forced: false)
db_symbol— l'espèce, en db_symbol ou numéro de Pokédex national.form— la forme à enregistrer. Optionnel,0est la forme de base.forced— passe outre les deux gardes ci-dessous. Optionnel,falsepar défaut.
Par défaut, mark_seen reste sans effet dans deux cas : quand le Pokédex est désactivé, et quand l'espèce n'appartient pas à la variante de dex affichée (un dex régional n'accepte que ses propres espèces). forced: true passe outre les deux :
game_state.pokedex.mark_seen(:mew, 0, forced: true)
Comme l'enregistrement est conservé globalement, une espèce forcée de cette façon compte quand même sur tous les dex qui la listent et sur le total national, alors que le dex affiché ne l'aurait pas acceptée de lui-même. Le mode national lève aussi la garde de variante, mais pas celle du dex désactivé, donc forced: true est ce qui couvre les deux. Quand PSDK enregistre les combats et les captures, il passe la forme propre de la créature (pokemon.form) plutôt que 0, si bien qu'une espèce est enregistrée dans la forme exacte où elle a été rencontrée.
mark_captured est plus stricte que mark_seen ici : elle n'a pas d'option forced, et elle refuse toujours une espèce hors de la variante de dex courante (même si elle n'exige pas que le dex soit activé). Pour enregistrer la capture d'une espèce absente du dex régional, un légendaire par exemple, on active d'abord le mode national :
game_state.pokedex.set_national(true)
game_state.pokedex.mark_captured(:mew)
Pour annuler un enregistrement, unmark_seen et unmark_captured retirent l'espèce :
game_state.pokedex.unmark_seen(:mew)
game_state.pokedex.unmark_captured(:mew)
Le cas courant est une créature capturée avant que le joueur reçoive le Pokédex (voir Donner un Pokémon au joueur). PSDK la marque quand même capturée, tant qu'elle appartient au dex courant ; on appelle unmark_captured (et unmark_seen) si le scénario veut que cette capture reste hors du registre.
Afficher la fiche d'une créature
show_pokemon ouvre le Pokédex directement sur la fiche d'une créature. Contrairement aux commandes précédentes, c'est une méthode de l'Interpreter : on l'appelle sans préfixe.
show_pokemon(pokemon_id, form = 0)
pokemon_id— la créature à montrer : un db_symbol, un numéro de Pokédex national, ou un objet Pokémon vivant (qui conserve le statut chromatique, shiny, de cet individu).form— la forme à afficher. Optionnel,0est la forme de base ; ignoré pour un Pokémon vivant, qui utilise sa propre forme.
L'appel le plus simple ne prend que l'espèce :
show_pokemon(:pikachu)
Ce qu'affiche la fiche dépend de l'avancée du joueur sur cette espèce :
- Jamais vue — la fiche s'ouvre vide : le sprite et le nom sont masqués et aucune donnée n'est affichée.
- Vue mais pas capturée — le sprite, le nom et le cri apparaissent, mais les détails (espèce, nom de forme, poids, taille, types) et la description restent masqués.
- Capturée — la fiche complète : sprite, nom, détails et description.
Donc, pour révéler une créature que le joueur n'a pas encore rencontrée, un légendaire montré pendant une cinématique par exemple, on la marque vue d'abord, sinon la fiche s'ouvre vide :
game_state.pokedex.mark_seen(:mew, 0, forced: true)
show_pokemon(:mew)
Ici forced: true passe outre à la fois un dex désactivé et une espèce absente de la variante de dex courante (voir la section précédente).
Conclusion
- On atteint le Pokédex via
game_state.pokedex; on l'active avecenable(interrupteur 100) avant que quoi que ce soit soit suivi. - On teste si le joueur a vu ou capturé une espèce avec
pokemon_seen?/pokemon_caught?dans un branchement conditionnel, l'outil de base des events réactifs. pokemon_seen/pokemon_captured(variables 2 et 3) contiennent le total national ;variant_creature_seen/variant_creature_caughtdonnent le compte par dex affiché à l'écran.- Le mode national (
set_national(true), interrupteur 99) déverrouille toutes les espèces ;variant =change la liste de dex affichée, etset_national(false)doit venir avant lui quand on sort du mode national. mark_seenenregistre une espèce (forced: truepasse outre un dex désactivé ou la limite de variante) ;mark_capturedn'a pas deforcedet exige toujours l'espèce dans le dex courant ou le mode national.unmark_seen/unmark_capturedannulent un enregistrement.- On ouvre la fiche d'une créature avec la commande d'Interpreter
show_pokemon; on la marque vue d'abord si elle peut être inconnue, sinon la fiche s'ouvre vide. - Un ID numérique désigne toujours le numéro du Pokédex national, jamais la position affichée dans un dex régional.