Gérer les quêtes
Dans PSDK, la gestion des quêtes se fait au travers de la variable $quests
. Toute les méthodes sont expliqué dans la documentation : PFM::Quests.
Nous allons voir comment utiliser correctement cette variable pour gérer les quêtes.
1ère étape : Démarrer une ou plusieurs quêtes
Pour démarrer une ou plusieurs quêtes vous allez appeler un certain nombre de fois : $quests.start(id)
où id
est l'id de la quête dans Ruby Host.
Une fois que vous avez appelé $quests.start(id)
il faut indiquer au système de quête qu'il faut effectivement démarrer les quêtes :
$quests.check_up_signal
Cette méthode vérifie les quêtes démarrées et terminées puis les valide définitivement. Cette méthode est également censé gérer l'affichage de la nouvelle quête mais ce n'est actuellement pas codé par manque d'interface.
2ème étape : Valider les objectifs
Il existe un certain nombre de méthodes pour valider les objectifs :
$quests.beat_npc(quest_id, npc_name_index)
oùquest_id
est l'id de la quête etnpc_name_index
est l'index du nom du PNJ dans l'ordre de définition des dresseurs à battre dans l'éditeur de quête.$quests.speak_to_npc(quest_id, npc_name_index)
où les paramètres sont les mêmes.
Les autres objectifs sont validés automatiquement par PSDK.
2ème étape bis : Afficher un objectif caché
Il est possible de cacher les objectifs d'une quête, Ruby Host n'est juste pas capable de permettre de les cacher. Cela dit, si vous trouvez le moyen de définir les objectifs cachés, pour les afficher il faut utiliser la méthode suivante :
$quests.show_goal(quest_id, goal_index)
Les paramètres sont :
quest_id
est l'id de la quêtegoal_index
est l'index de l'objectif dans l'ordre des objectifs (s'ils sont tous affichés).
3ème étape : Vérifier la fin d'une quête et distribuer les gains
Pour terminer les quêtes il y a deux choses à faire, vérifier si elle est terminée et distribuer les gains.
Vérifier si une quête est terminée
Pour vérifier si tous les objectifs ont été réalisés, rien de plus simple, appelez la commande suivante dans une condition :
$quests.finished?(quest_id)
Vérifier que les gains ont été distribués
Pour vérifier si les gains ont été distribués, il faut écrire la commande suivante dans une condition :
$quests.earnings_got?(quest_id)
Si les gains n'ont pas été distribués, distribuez les ainsi :
$quests.get_earnings(quest_id)