Listes des scripts et features à ajouter à Sacred Phoenix

Discussion dans 'L'antre de Porygon (codage et script)' créé par Amras Anárion, 14 Juillet 2019.

  1. Amras Anárion

    Amras Anárion Roi Mythique Membre du personnel

    Petite liste des tâches pour les Idéaux de Sacred Phoenix faisant appel à des compétences de codage.

    yyyyj, je t'ai classé le tout par ordre de portée / priorité. Ce qui est listé en premier me semble être le plus accessible à ce jour.
    Penses aussi à jeter un coup d'oeil tout en bas à partir de la section "Giratina". J'y liste les bugs prioritaires à corriger ou les fonctionnalités les plus intéressantes pour PSDK.



    Gameplay - modifications à portée aujourd'hui
    • Gérer la possibilité de switch "gratuit" après un KO adverse non via le choix du joueur fait dans le menu "Options", mais via un interrupteur géré par le scénario. Requiert au préalable de débuguer le mode "choix" sur PSDK (mode non fonctionnel).

    • En cas de changement des PV max (ex : après une évolution, le don d'un Super Bonbon, suite à une Méga-Évolution Sacrée ou quand Giratina change de forme. Oui oui, à Keltios sa forme Originelle a plus de base stats en PV que sa forme alternative.), faire en sortie que les PV actuels soient calculés par excès par rapport au pourcentage de PV possédés. (Actuellement, les PV actuels restent inchangés et on peut donc avoir des Giratinas à 35/34 PV en lui enlevant l'Orbe Platiné.)
    (Le calcul par excès – ceil – assure qu'un Pokémon à qui il reste 1 PV ne tombera pas KO si ses PV max diminue, tout en empêchant les PV actuels de dépasser les PV max.)

    Menu d'option plus complet
    Cette tâche a été commencée par Cottens mais est abandonnée au moins jusqu'à PSDK 25. Si quelqu'un souhaite la faire, c'est donc une tâche qui est libre.
    Réalisé : le choix de la langue, débugage partiel du volume, interface customisée.
    Reste à faire (75 % du travail) :
    Détails dans ce PDF : https://www.sacredphoenix.fr/res/Telechargements/PDF/Options Sacred Phoenix.pdf
    – Améliorer l'ergonomie du menu d'option. La touche software "B" n'est pas du tout utilisée en l'état. Comme dans un jeu officiel, appuyer sur "B" permet de tout de suite quitter le menu d'option s'il n'y a pas eu de changement. S'il y a eu un changement, le jeu demande si le joueur veut conserver ou pas les modifications, enregistre les changements si "oui", puis quitte le menu d'option dans les 2 cas.
    – Actualiser le réglage du volume sonore (BGM) lorsqu'il a été modifié.
    – Instaurer un réglage du volume des effets sonores (indépendant de la BGM)
    – Finesse des réglettes de volume par pas de 5% au lieu de 25%. (Réalisé)
    – Choix du mode de difficulté (Facile / Normal / Difficile). Selon le choix du mode, le nom du Pokémon adverse sera affiché respectivement en bronze / argent / or durant les combats pour indiquer la difficulté choisie (et donc reflèter si son niveau a été augmenté ou pas).
    – Gestion de la mort (Traditionnel / Réaliste / Nuzlocke)* Selon le choix du type de mort, le nom du Pokémon du joueur sera affiché respectivement en bronze / argent / or durant les combats pour indiqué la difficulté choisie (et donc refléter si nos Pokémons sont mortels ou pas).
    – Mort des adversaires (Activé / Désactivé)

    Au premier démarrage du jeu, les options seront par défaut sur : Français (ou détection automatique de la langue du PC dans l'idéal), 50 %, 50 %, Normal, Réaliste, Activé.

    J'avais pensé distinguer les réglages de gameplay du réglage de difficulté (un peu comme dans Skyrim) : quand le joueur va sur "Option", 3 choix lui seront proposés.
    – Commandes (la scène activée lorsqu'on fait [F1] )
    – Paramètres (réglage du son, des animations de combat...)
    – Difficulté (les 3 derniers paramètres implémentés grâce à la feature d'Altarax.)

    On peut aussi faire un menu à 2 niveaux comme dans Uranium.
    • Le niveau 1 inclut la plupart des options + "Difficulté" + "Commandes".
    • Si le joueur place la sélection sur l'un de ces 2 choix et appuie sur "A", ça ouvre un menu d'option de niveau 2 qui correspond à cela.

    Le menu de difficulté (qui faudra distinguer dans tous les cas du menu d'option de niveau 1) proposera en première place des "presets" de difficulté. 7 sont prévus : Novice / Jeu officiel / Facile / Normal / Difficile / Nuzlocke / Nuzlocke hardcore.
    Si le joueur choisi un preset puis modifie individuellement un réglage, le preset affichera "nom du preset" (modifié), le "nom du preset" correspondant au preset le plus élevé qui satisfait tous les critères de difficulté sélectionné par le joueur. (Par exemple, si le joueur choisi le preset Nuzlocke, puis baisse individuellement la difficulté globale en "facile", le preset affichera "Facile (modifié)", puisque le preset Nuzlocke demande au minimum une difficulté globale "moyenne").
    Ou alors affichera "personnalisé" si c'est plus facile à coder (aka les réglages personnalisés ne correspondent à aucun des 7 presets).

    Le menu d'option d'Uranium :
    (À gauche, les options globales - A droite, les options de difficulté)



    * À noter que passé le stade des premières balls obtenues en jeu (déterminé par si une variable en jeu a dépassé une certaine valeur), si le joueur a désactivé le mode Nuzlocke, la sauvegarde ne pourra plus jamais être flaguée comme étant en Nuzlocke.
    Conséquence : le nom de nos Pokémon ne pourra plus être affiché en doré, même si le joueur recoche l'option. (La solution la plus facile étant bien entendu d'interdire le passage / retour au mode Nuzlocke une fois ce palier de jeu passé.)
    Conséquence 2 : si le joueur quitte le mode Nuzlocke, le jeu devra l'avertir de cela et lui demander de confirmer son choix.


    Système de craft
    En interagissant avec un objet ou un PNJ, cela ouvrira un menu approprié (Forgeage, alchimie et enchantement...) qui proposera une liste de recettes selon nos compétences. Chaque recette listera la listes des matières premières nécessaires et ce qu'on possède. (Pour le moment, je n'ai pas trouvé comment faire en Event-Making, la seule commande que je vois étant "L'objet yyy est possédé" sans pouvoir compter combien on en a.)
    Cela servira pour :
    – Fabriquer les balls de Keltios à parti des Noigrumes, des cristaux de stase et d'un métal précieux qu'on aura trouvé ou miné (oui, il y aura du minage aussi)
    – Enchanter des cristaux trouvés ou minés en objets enchantés ou pierres magiques
    – Confectionner des potions et remèdes à partir de plantes et baies


    Affichage HD
    (Certains éléments sous le spoiler peuvent être réalisé de manière indépendante, donc son à portée aujourd'hui.)
    • Pour la MessageBox principale, afficher cette image-ci (lien) (existe aussi sans le rouleau de parchemin) dézommée côté software pour s'adapter à la taille du PSDK – à la place que ça utilise l'image "universelle". Cela donnera un rendu plus naturel pour cette fenêtre de message qui aura toujours la même taille in-game.
    Idem pour la MessageBox en combat. (Elle fait aussi la même taille.)
    Les autres fenêtres "redimensionnables" (comme la commande de choix) continueront de faire appel à cette image :


    • Écran-Titre en HD (possibilité de mettre l'image principale en 640x480 et non en 320×240 upscalé ×2... Pour le moment, échec.)
    Image de l'écran-titre en 680×480 : Lien



    • L'idéal ultime : Passer le jeu en HD (base 640×480 et / ou 640×360). Nécessitera de retravailler en profondeur tous les scripts d'affichage. Requiert de déverrouiller le mode vectoriel de l'affichage des polices d'écriture. (Cf bugs PSDK.)


    Overhaul du bonheur et de l'obéissance - fonctionnalités secondaires manquantes
    • Lisseur de haxx sur la survie à 1 PV.
    • Animations d'amitié ou de colère à faire.
    • Interactions avec le follow me.
    • Textes d'attente d'ordre à personaliser. (Nécessite d'optimiser la place pour les textes sur l'interface d'attente d'ordre.)


    Gameplay - modifications prévues plus tard
    • La Méga-Évolution Sacrée.
    • Les combats contre les Augures selon les règles officielles des champions d'Arène dans le dessin animé (cf description workshop).
    • La possibilité de fuir (déclarer forfait) contre un combat de dresseur. (Réalisé)
    • 2 Talents possibles par Pokémon (pas pour tous)
    • Système de gain d'expérience dynamique. (L'XP est version en temps réel à la fin de chaque tour et non après un KO, permettant de rétribuer chaque action effectuée en combat même si ça se termine par un KO.)


    La probabilité des effets secondaires des attaques et des capacités de statut influencé par l'affinité des types.
    • Cette Feature se marie très bien avec les 8 attaques du fait des résistances et immunités qu'elles va engendrer.
    – Exemple : Lance-Flammes, qui de base aura 20 % de chances de brûler l'adversaire, aura cette probabilité à 10 % si "Ce n'est pas très efficace... " (cas d'un Pokémon Eau), mais 30 % si c'est "Super efficace !" (cas d'un Pokémon Plante). Un Pokémon Dragon aura 45 % de chance d'être gelé par Blizzard (au lieu de 30 %), et même 60 % si c'est un Dragon / Vol (à condition qu'il survive...) !

    • Dans le même esprit, la précision des attaques de Statut débuffantes prendra aussi en compte l'affinité des types.
    – 0 % si de base inefficace (Ainsi, un Pokémon Spectre sera complètement immunisé à Rugissement, Mimi-Queue, etc... et un Pokémon Vol n'aura plus à craindre l'attaque Jet de Sable).
    – 25 % de la précision d'origine si double Résistance (Poudre Dodo lancé sur un Papillusion n'aura ainsi plus que 3 chances sur 16 de réussir.)
    – 50 % si résistance simple
    – 100 % (inchangé) si affinité normale.
    – 150 % de la précision normale si vulnérabilité simple
    – 200 % si vulnérabilité double. (Laggron n'aura aucune chance d'échapper à une Poudre Dodo, même après un Coup d'Boue).
    Dans les jeux officiels, le type octroyé aux attaques de Statut faisant figuration (littéralement) dans 95 % des cas. Avec Sacred Phoenix, ça aura enfin une influence.
    Si le jet de précision initial était bon, mais que le second jet (de 25 ou 50 %) a échoué, le jeu affichera "[Pokémon ciblé] a résisté à l'attaque ! et "Ça n'affecte pas [Pokémon ciblé]..." s'il était immunisé.


    Terrain et météo :
    • Instauration de l'influence des terrains sur la puissance des attaques à la manière de Pokémon Reborn. (Ex : sur un terrain aquatique, les attaques Eau seront plus puissantes et les attaques Sol ou Feu moins puissantes.) Les effets du terrain se cumuleront (par multiplication) aux effets de la météo et des auras.
    • Sont classés comme "Aura" des états tels que Distorsion, Gravité, Vent Arrière, Aura Féerique, Aura Psychique, etc...).
    • Un seul terrain et une seule météo peuvent être actives à la fois, mais les Auras peuvent se cumuler entre elles.
    • Nouvelles météo : Orage et Neige. La Brume sera considérée comme une météo, de même que l'orage qui remplacera le champ électrifié. Le champ psychique sera considéré comme une Aura.
    • Certaines attaques pourront changer le terrain. Créa-Herbe changera le terrain en prairie. Une attaque Déflagration, elle, peut transformer un terrain glace en terrain eau (et un Laser Glace faire l'inverse).


    Overhaul des options de combat :
    • 8 Attaques par Pokémon. Demandera une grande refonte des scripts et un Ruby Host adapté à ce changement. Doit aller de pair avec la jauge de Mana et de Souffle qui remplace les PP.
    • Jauges de Mana et de Souffle à la place des PP.
    • Ajout de l'option "Posture" sur le menu de combat.
    • Ajout de l'option "Stratégie" sur le menu de combat.
    # Pour tous les détails, c'est dans le PDF de présentation du projet.


    Overhaul de la capture - partie fuite des Pokémons sauvages :
    – Un Pokémon sauvage pas ou trop peu affaibli tentera de fuir le combat si on tente de lui jeter une Pokéball, comme cela pouvait se produire en 1G. L'action de fuite - qui sera "prise" après l'action du joueur si celle-ci fut de jeter une ball - annulera l'attaque que le Pokémon sauvage aurait voulu lancer et aura une chance sur 2 de réussir si notre Pokémon est plus rapide. 100 % de probabilité si le Pokémon sauvage est plus rapide que le notre.
    La probabilité de tentative de fuite du Pokémon sauvage sera proche de 100 % s'il est en pleine santé. À 50 % (sans statut), il n'y aura plus aucun risque de fuite. (Formule exacte à déterminer.)


    Relevant du débuggage ou des fonctionnalités à rajouter à PSDK

    • Débuguer le mode "choix" sur PSDK (mode de combat non fonctionnel). (À faire.)
    • Débugger le réglage du volume dans les options PSDK. (À faire.)
    • Combats 3V3 (face à 3 dresseurs ou 1 dresseurs. Dans les 2 cas, chaque camp envoie 3 Pokémons en même temps.)
    • Combat 2V2 avec un allié.
    • Si combat 2V2 avec un allié, texte intégrant le mot "allié" (Ex : Le Roucoups allié utilise Tornade !) lors des actions du Pokémon allié comme c'est le cas sur Pokémon Essentials.
    • Intégrations des stats de Sang-Froid, Beauté, Grâce, Intelligence, Robustesse, Lustre au PFM des Pokémons en vue des concours Pokémons + intégration des effets en concours des attaques.
    • La Méga-Évolution tant attendue sur PSDK.
    • Affichage de la police d'écriture "en HD"... Alors que par nature, une police d'écriture est du vectoriel, PSDK s'acharne à calculer son affichage sur une matrice 320×240 quelque soit la taille de la fenêtre de jeu. À voir si ça ne peut pas être optimisé.


    Réalisé de manière satisfaisante, mais optimisable

    • Optimiser le système de baies de Keltios pour avoir un équivalent (en terme d'optimisation) à celui de Nuri Yuri.
    • Animation améliorée d'évolution en combat. Le résultat est honorable. Reste à prévoir de le magnifier pour se rapprocher d'un jeu officiel. (Effets de particules.)


    Terminé - Idéaux devenus réalités

    • Calendrier de Keltios avec affichage de la date dans le menu de jeu et en tant que date de capture sur le résumé des Pokémon
    • Gestion des saisons
    • Système de baies à la 2G. (Géré exclusivement via Event-Making - mais optimisable si on arrive à passer par un script.)
    • Système d'EV rééquilibré à la sauce kelte.
    • Textes d'efficacité "C'est extrêmement efficace !!!" et "Ce n'est pas du tout efficace..." avec bruitage adéquat.
    • Combat duo VS 1 dresseur
    • Évolution en combat
    • Overhaul de la capture (sauf partie fuite des Pokémons sauvages)
    – Comme en 1G, le nombre de secousses dépendra de la probabilité de capture, à la différence qu'il ne s'agira pas d'un nombre fixe de secousses, mais d'un nombre minimum possible (ex : Si la probabilité est supérieure à 50 %, ça remuera toujours 3 fois en cas d'échec. Entre 25 et 50 % : 2 ou 3 fois, etc...). Inversement, un Pokémon affaibli haut-la-main ou capturé avec une ball très efficace pourra remuer moins de 3 fois, signe que la capture s'est faite avec une très grande marge.
    – Système de déflection de ball comme en 1G : un Pokémon non suffisamment affaibli repoussera les balls lancées. Les balls ainsi jetées ne seront pas déduites du sac (ou seront récupérées par le dresseur après le combat) étant donné qu'elles ne se sont pas enclenchées. Notons que si cela se produit, c'est que la probabilité de capture est nulle. Il faut que le Pokémon sauvage passe sous un seuil d'affaiblissement (qui dépendra de son taux de capture) pour ne plus avoir la force d'esquiver les balls.
    – Un Pokémon sauvage pas ou trop peu affaibli tentera de fuir le combat si on tente de lui jeter une Pokéball, comme cela pouvait se produire en 1G. L'action de fuite - qui sera "prise" après l'action du joueur si celle-ci fut de jeter une ball - annulera l'attaque que le Pokémon sauvage aurait voulu lancer et aura une chance sur 2 de réussir si notre Pokémon est plus rapide. 100 % de probabilité si le Pokémon sauvage est plus rapide que le notre.
    La probabilité de tentative de fuite du Pokémon sauvage sera proche de 100 % s'il est en pleine santé. À 50 % (sans statut), il n'y aura plus aucun risque de fuite. (Formule exacte à déterminer.)
    • Système de gain d'argent lors des combats adapté au monde de Keltios.
    Après un combat, le gain d'argent sera le produit de 3 facteurs :
    – Coefficient d’enthousiasme : nouveauté propre à Sacred Phoenix. Au lieu que la somme d'argent totale soit facteur du niveau du dernier Pokémon possédé par le dresseur, cela sera une variable qui s'incrémentera après certaines actions. 5 points au départ du combat puis +1 par tour écoulé, +5 par Pokémon qui tombe KO (peu importe le camp) et +15 si un Pokémon meurt (peu importe le camp).
    –Base d'argent : inchangé, cela dépend du dresseur affronté (de la présence d'un public du point de vue du scénario du jeu).
    –Bonus : inchangé. Comme dans un jeu officiel dépend de l'usage de la Pièce Rune et des O-Auras d'argent.
    Notons que la phrase "[Nom du joueur] gagne [somme] kels." ne doit pas être affiché si le gain est de zéro. (Cas de la majorité des combats.)
    • Niveaux de difficulté (à portée aujourd'hui) et mode Nuzlocke (requiert la gestion de la mort - cf plus loin)
    Le mode de difficulté est simple et sera déterminé par une variable qui pourra prendre 3 valeurs :
    • Mode facile : -10 % sur le niveaux de tous les Pokémons des dresseurs, arrondi par défaut (floor).
    • Mode normal : Niveaux des Pokémons des dresseurs identique à ce qui a été programmé sur le Ruby Host.*
    • Mode difficile : +10 % sur le niveaux de tous les Pokémons des dresseurs, arrondi par excès (ceil).

    Ceci pourra être modifié à tout moment dans le menu des options.
    Comme dans Pokémon Gemme, le mode de difficulté engendrera une petite différence d'affichage sur l'écran de combat. Pokémon Gemme avait choisi d'afficher un chiffre romain (un I en bronze, un II en argent ou un III en or) selon le choix du joueur. J'avais pensé à faire afficher le nom du Pokémon adverse dans ces trois couleurs là (au lieu du blanc) selon le choix fait. (Dans les trois cas, on restera sur une teinte claire pour que ça reste lisible).
    Pour plus tard, la même feature sera appliqué sur le nom de nos Pokémons, mais selon le choix de la gestion de la mort des Pokémons (traditionnel, réaliste, Nuzlocke).
    Ainsi, si dans l'écran de combat, le nom de l'adverse et le nôtre sont tout deux affichés en doré par exemple, on saura que le joueur joue en difficulté difficile avec le mode Nuzlocke activé.

    * À noter que certains combats scénarisés style "Tour de Combat" (et bien entendu en PvP) n'auront pas les niveaux influencés par le choix de la difficulté.
    le but de cette feature est aussi d'éviter d'avoir à tripler chaque dresseur dans la base de donnée Ruby Host, en sachant que seul le niveau changera à chaque fois et rien d'autre.
    • Mode Nuzlocke avec toutes ses clauses (capture unique par zone, poison à l'ancienne, clause doublon, clause chromatique...)
    En parallèle de la gestion de la mort en mode Nuzlocke, il faudra donc rajouter l'option de difficulté "Capture unique par zone" pour offrir un Nuzlocke complet.
    Si le mode "Capture unique par zone" est actif, le jeu activera un interrupteur propre à chaque zone dès la fin du premier Pokémon sauvage rencontré (peu importe l'issue du combat : fuite, défaite, victoire, capture...) sauf si c'est un Shiny et que la Clause Chromatique est activée et sauf si le Pokémon est déjà dans le Pokédex et que la Clause Doublon est activée.
    Ce qui fait que...
    – Si lors de ce combat, l'interrupteur de la zone est "false", la capture est autorisée.
    – S'il est sur "true" et que le joueur lance une ball, cnt vaudra "-3" dans le script d'overhaul de la capture, la ball sera déviée (et donc récupérée par le joueur) et le jeu affichera : "Ce n'est pas votre Pokémon de zone. Le Nuzlocke vous interdit de le capturer."

    Pour les œufs de Pokémon, c'est un peu compliqué sachant que c'est la zone d'éclosion qui doit faire foi (et non celle d'obtention de l’œuf). (Ça reviendrait à interdire l'usage de la pension.) On peut donc laisser ce pan sans "protection Nuzlocke" : au joueur de s'auto-discipliner.

    Pour les Pokémons donnés par des PNJ, l'interrupteur de zone peut être activé manuellement (et bien entendu testé au préalable pour voir si le joueur a le droit de recevoir le Pokémon mais au risque de "bloquer" l'évent.). (Solution intéressante : si le joueur reçoit un Pokémon mais qu'il a déjà grillé la zone, le marquer comme "mort def").
    Ou alors on peut lâcher prise comme c'est le cas dans Pokémon Unarium et ne pas mettre de contrôle sur cela. Au joueur de s'auto-discipliner là aussi.

    A noter que la Clause Légendaire sera systématique : c'est-à-dire que si le joueur rencontre un Légendaire, sa capture sera toujours autorisée si de base, le scénario le permettait. (Déterminé par l'interrupteur 130.) Libre au joueur de s'interdire sa capture. (Mon scénario n'imposera pas de capture de Légendaire.)

    Je rajouterai aussi l'option de difficulté : Poison à l'ancienne. Au lieu de survivre à 1 PV, le pokémon empoisonné tombe KO (ou meurt si Nuzlocke). Ce KO vaut -20 en amitié (-250 si Nuzlocke, puisque mort) (et bien sûr stoppe le poison, puisque poison et KO ne sont pas compatible ensemble^^)
    • La mort des Pokémons à Keltios
    Ceci est valable avec le mode "Réaliste" dans l'option de gestion de la mort.
    – En mode Nulocke, vos Pokémons seront "Mort" dès le KO. (La possibilité de résurrection avant le palier "Mort définitive" à 48H sera néanmoins préservé, libre au joueur de s'interdire de l'utiliser.)
    – En mode "Tradditionnel", la mort sera désactivée pour nos Pokémons.
    – Une option indépendante "Mort des Pokémons des adversaires" (active par défaut) pourra être désactivée afin que le joueur n'ait pas à gérer sa force de frappe. (Car tuer des Pokémons est mal vu à dans la plupart des combats à Keltios, surtout pour la jauge d'amitié et d'effroi de vos créatures magiques).

    • Créer un statut "Mort" voisin du statut "KO". Cela existe dans Pokémon Uranium lors que mode Nuzlocke est activé. Un Pokémon mort ne peu plus être ranimé en combat (contrairement au KO) mais une possibilité de résurrection existe si on agit assez rapidement après un trépas (et si ce n'est pas un Pokémon Spectre).
    • Créer un second statut "Mort définitive" qui correspond au départ définitif de l'âme du Pokémon dans l'au-delà. Graphiquement, l'affichage sera strictement identique. En coulisse, ça signifie que le Pokémon est mort depuis plus de 48H in-game et donc qu'il est trop tard pour le ressusciter. (Car oui, une possibilité de résurrection existe en jeu ! Ho-Oh et Xerneas en ont le pouvoir, mais ça ne fonctionne que si le sang du Pokémon tombé au combat est encore "chaud".)
    Lorsque la mort sera définitive, un message sera affiché pour prévenir le joueur. Mais c'est aussi à ce moment là qu'il existe une probabilité que l'âme du Pokémon défunt refuse de rejoindre le monde d'Yveltall et choisit de rester sous forme d'un Pokémon Spectre de même niveau que de son vivant. (Cette probabilité dépendra du niveau d'amitié ; et le Pokémon spectre qui en découlera dépendra de l'espèce du Pokémon défunt.)
    À noter qu'un Pokémon Spectre "mort" l'est directement pour toujours, car ça correspond au bannissement de son âme.
    • Les Pokémons Légendaires – par essence divins – suivront une règle différente. S'ils meurent en combat et atteignent le stade de la "mort définitive", ils se réincarnent sous la forme d'un oeuf qui apparaitra quelque part dans le monde.
    • Affichage des PV en nombre négatif possible suite à un KO, dans la limite en valeur absolue des PV max. Lorsque les PV sont négatifs, la jauge de PV est rempli de rouge depuis la droite. (Utile pour la gestion de la mort des Pokémons.) Car c'est lorsqu'en valeur absolue, les PV négatifs du Pokémon sont égaux (ou supérieurs) aux PV max (soit 200% des PV max perdus) que le Pokémon meurt au combat.
    • Si les PV perdus équivaut à 180-199 % des PV max perdus, le Pokémon sera "KO au bord de la mort", engendrant un gain d'XP plus important pour le vainqueur (mais une perte d'amitié plus forte pour le Pokémon vaincu). Un Pokémon KO au bord de la mort aura besoin d'un temps de récupération supérieur pour combattre à nouveau (au moins 24 heures sur le calendrier du jeu). Bien entendu, un Pokémon tué rapportera encore plus d'XP qu'un KO au bord de la mort (mais détériorera son degré d'amitié si cette mise à mort n'était pas méritée.)
    • Un Pokémon avec les bonus de Poké-Récré peut survivre face à un coup mortel et "Tomber KO au bord de la mort" à la place.
    • Un Pokémon qui adore son dresseur aura du respect pour son adversaire et veillera à pas le tuer accidentellement (s'il n'était pas en Posture agressive ou en train d'utiliser une Capacité Z). Dans ces conditions là, un coup fatal deviendra un "KO au bord de la mort".
    • Amélioration du "Follow me" pour lui donner un impact significatif en jeu.
    – Plus d'interactions possibles avec le Pokémon suiveur. (Ex : celui ci peut nous faire signe qu'il a trouvé un objet caché à côté, ou il se plaindra s'il est paralysé.)
    – La présence ou non du Pokémon suiveur influera sur "l'hostilité" des dresseurs et des Pokémons sauvages. (Pokémon pas sorti = moins de chance d'être reconnu comme dresseur par un dresseur et moins de chance d'être attaqué par un Pokémon sauvage). Une touche permettra donc de faire "Toggle" sur le follow me (comme dans Pokémon Phoenix Rising).
    – Si le Pokémon suiveur est un Légendaire, cela peut changer la réaction de certains PNJs lorsqu'on leur parle.
    • Overhaul du bonheur et de l'obéissance :
    • Pour le bonheur et l'effroi :
    – Barre d'amitié étendue de 0 à 1023 points.
    – Ajout d'une jauge d' "effroi" en parallèle de la jauge de bonheur qui reflète la "peur" et l'autorité que nous inspirons à notre Pokémon. Le joueur aura relativement peu de contrôle sur la jauge d'effroi, celle-ci ayant tendance à revenir naturellement vers un "point d'équilibre " (qui dépend du nombre de Talismans possédés par rapport au niveau du Pokémon, et si celui-ci est avec son dresseur d'origine ou pas).
    – Révision du barème des actions qui montent ou diminue le bonheur, et création du barème pour les modifications de l'effroi.
    – Affichage de la jauge d'amitié dans le résumé du Pokémon (au moins un 4ème onglet sera requis), ainsi que de la jauge d'effroi et d'une jauge de loyauté (dépendante de la valeur des 2 premières jauges)
    – L'amitié et l'affection seront fusionné sous cette même stat.
    – Si l'amitié atteint un niveau élevé, les mêmes bonus qu'une affection élevée dans les jeux officiels s'activeront en combat. (Survie à 1 PV, esquive gratuite, coup critique gratuit, ou guérison spontané d'un statut, bonus débloqués selon des paliers). Bien entendu, les PNJ profiteront eux aussi de ces bonus si l'amitié de leurs Pokémons est élévée.
    – Les textes d'entrée en combat (Que doit faire [Pokémon] ?) changeront selon le niveau d'amitié (et de crainte) comme c'est le cas dans les jeux officiels lorsque l'affection est élevée.

    • Création de la Pokérécré (mini-jeux en 2D pour augmenter le bonheur de nos Pokémons.) Bien entendu, une statistique de gaieté et de satiété limitera le nombre de "parties" possibles sur un temps donné.

    • Instauration de la désobéissance des Pokémons. Cela dépendra de la somme des jauges de bonheur et de crainte et non plus du simple fait si le Pokémon a été échangé selon le nombre de badges possédés. (Bien que les badges conserveront une influence indirecte en jouant sur la jauge d'effroi.) Les Pokémons des PNJ pourront eux aussi désobéir à leurs dresseurs.
    • Paliers de bonus de gain d'expérience
    Adorant compléter mon Pokédex, je sais qu'il est harassant de faire monter des Pokémons de bas niveau pour les faire évoluer, de même qu'aider un Pokémon nouvellement intégré dans l'équipe a rattraper les anciens.
    Parallèlement, je reconnais l'intérêt de limiter l'overgrind sans pour autant la bloquer sauvagement via de la désobéissance imposée ou un blocage du niveau max comme l'a fait Pokémon Reborn.

    Plutôt que d'appliquer la formule d'XP de la 7G (qui est très handicapante à bas niveau avec des malus d'XP qui atteignent très vite les -60 %), j'ai eu l'idée de rajouter un facteur sur le gain d'expérience, facteur qui se multiplera à ceux déjà existant et qui dépendra :
    – du nombre de Talismans possédés (cela déterminera les paliers de bonus / malus)
    – du niveau du Pokémon qui XP.
    – Les paliers seront au nombre de quatre : XP ×4, XP ×2, XP×1 (inchangé) et XP× 0,5.
    Par exemple, au premier talisman possédé, les Pokémons inférieur au niveau 5 auront ×2 en expérience, ×1 entre le niveau 5 et le niveau 17 et ×0,5 au-delà (le joueur sera considéré comme en overgrind).
    En acquérant son second Talisman, les chiffres monteront à ×4 au-dessous du niveau 5, ×2 entre le niveau 5 et le niveau 13, ×1 entre le niveau 14 et le niveau 24 et ×0,5 au-delà.
    Comme ces paliers seront les mêmes quelque soit le niveau de difficulté choisi... Il sera alors plus difficile de dépasser le niveaux des dresseurs en mode difficile, à l'inverse du mode facile où le grind sera bien moins nécessaire.
    Note : il est possible que je mette plus de 4 paliers. Quoi qu'il en soit, les valeurs seront codées dans un array en 3 dimensions (une dimension pour le nombre de talismans, une dimension pour chaque palier et une dimension pour le niveau qui y correspond).
     
    Dernière édition: 23 Mai 2020
    Bugfix et yyyyj aiment ça.
  2. Bugfix

    Bugfix Dresseur reconnu

    ça en fais du boulot ^^ Bonne chance pour tout faire.
    (j'avoue que le "Palier de bonus de gain d'expérience" m’intéresse fortement xD)
     
  3. Amras Anárion

    Amras Anárion Roi Mythique Membre du personnel

    Mise à jour de la partie "Réalisé" : cette partie des objectifs devenus réalité s'est considérablement agrandie.
    Ajout dans les Idéaux de la refonte du menu d'options et de 2-3 petites choses.
     
  4. Cottens

    Cottens Augure

    Pour le menu et le réglage de bug du son, je pense attendre le nouveau PSDK avec la refonte du système de combat. Pour le choix, j'espère que ça sera corrigé par la refonte du coup.
    En tout cas, si quelqu'un est chaud pour le faire, qu'il le fasse, considérez moi complètement hors du projet pour l'instant, je sais pas du tout quand je m'y remettrais...
     
    Amras Anárion et yyyyj aiment ça.
  5. Amras Anárion

    Amras Anárion Roi Mythique Membre du personnel

    Merci pour ton message Cottens. J'ai du coup fait une petite mise à jour en marquant que ce que tu avais commencé est désormais en tâche libre.
    C'est sûr que la mise à jour 25 de PSDK prévue pour le 25 décembre 2019 me fait un peu peur et qu'il risque d'y avoir un gros travail d'adaptation des anciens scripts. (Notament ceux d' @Altarax )

    Je souhaiterai tout de même que le volume sonore soit réglable, car PSDK a ce sacré défaut d'avoir le son trop fort. (Tous ceux que je connaissent doivent baisser le volume... dans le mélangeur de volume Windows pour ne pas subir un vacarme de Brouhabam en jeu :D).

    Une fois la mise à jour 25 arrivée et adaptée avec succès (donc pas avant janvier 2020), je songe sérieusement à ne plus mettre à jour PSDK (du moins, automatiquement) et partir sur une branche de développement indépendante (comme l'a fait Pokémon Origins avec PSP).
    Ainsi, on pourra (enfin) éditer directement dans les scripts source et ne plus être dépendant d'un système de mods (avec son risque de conflits qu'il faut savoir vérifier et gérer).
    Et si la branche principale de PSDK fait une mise à jour intéressante, la mise à jour sera copiée-collée manuellement depuis le Git de PSDK.
     
    yyyyj apprécie ceci.
  6. yyyyj

    yyyyj Dresseur reconnu

    Je pense que ne plus mettre à jour PSDK serait se mettre une balle dans le pied. Il est cependant vrai qu'il est impossible de maintenir toujours les scripts à jour. L'exemple d'Origins est un mauvais exemple je trouve car c'est justement ce genre de comportement qui a contribué à la perte de PSDK. Cela dit, peut-être vaudrait-il mieux par la suite (après avoir réussi à intégrer les principales features et les avoir réadaptées à travers les majs) participer très activement au développement de PSDK, ce qui permettrait, à défaut de le guider, de comprendre aisément les changements et donc de pouvoir adapter les ajouts très vite en fonction.
    Cela dit, si le système de plugins est corrigé ça permettra déjà de résoudre de nombreux conflits par rapport au système actuel qui oblige l'inclusion de lignes de scripts inutiles.

    Pour ce qui est du volume sonore, ça doit pouvoir se régler grâce à Ruby-Fmod,je m'occuperai de ça après la rentrée, si ce n'est assigné à personne :)
     
    Amras Anárion apprécie ceci.
  7. Amras Anárion

    Amras Anárion Roi Mythique Membre du personnel

    Ah, du coup, je comprends mieux pourquoi tu me parlais de ça : https://pokemonworkshop.fr/forum/index.php?topic=17.1125#msg115292
    Et de ça : https://pokemonworkshop.fr/forum/index.php?topic=3667.0
    sur le forum.

    Ça serait en quelque sorte un FMOD pour PSDK. (Si je compare à Skyrim.)
    C'est vrai que de devoir recopier 100 lignes de code d'une def entière juste pour rajouter une ligne, c'est lourd. Mais pour Skyrim, c'était pareil aussi. Modifier la puissance d'une arme obligeait à recopier dans le mod tout le bloc de caractéristique de l'arme.

    Pour l'histoire de stopper les mises à jour PSDK, ça tient sur trois raisons :
    • PSDK n'est pas à l'abri d'une mise à jour majeure. (Je crains notamment le jour où PSDK sera totalement indépendant de RPG Maker.) Il suffit d'un simple changement de nom de méthode pour rendre la majeure partie des plugin-ins incompatibles. (Comme la def "text" devenue "get_text") Et le format JSON ou addsdk n'y changera rien si le code à injecter est écrit sous l'ancien format.
    • PSDK sera codé dans l'optique de respecter le plus possible les règles officielles des jeux Pokémon, car 95 % des makers veulent avant tout un gameplay fidèle aux jeux officiels. Toutes mes features visant à réécrire les mécanismes de combat ne seront donc jamais intégrées à la branche de développement officielle de PSDK. Et si cette branche officielle diverge, ce sont mes nouvelles features qui s'écroulent en cas de mise à jour.
    • Plus mon jeu sera lourdement moddé par rapport au PSDK officiel, plus le risque d'incompatibilité en cas de mise à jour sera élevé. Courir derrière pour rendre tous mes mods compatibles demandera un précieux temps de travail de la part des codeurs, temps qui sera proportionnel à la fréquence de MàJ de PSDK et à l'envergure des changements appliqués dans Sacred Phoenix.

    Par contre, je suis d'accord que si toi ou Altarax vous mettez en première ligne pour le développement de la MàJ 25 de PSDK, vous connaitrez par avance tous ses mécanismes, ce qui sera d'un immense atout lorsqu'il faudra adapter mes changements souhaités sur Sacred Phoenix.

    D'ailleurs, à défaut, si jamais vous êtes au chômage technique faute de Game Design documents de ma part (et oui, ça prend du temps de décrire en détails tous les mécanismes de mon fan-game), basculer sur PSDK et aider Nuri Yuri est une excellente idée.

    Quoi qu'il en soit, jusqu'à la MàJ 25.0 inclus, je ferais toutes les mises à jour. Nous aviserons après selon le temps de codage que toute l'équipe sera en mesure de consacrer.
    Certains de mes mods incluent d'ailleurs des améliorations très sympathiques pour PSDK 24, comme la ball déviée (feature de la capture impossible si un switch est activé), la correction du nombre de secousses. (En l'état actuel, PSDK a le syndrome Black and White : jamais une ball ne remuera 3 fois en cas d'échec), ou l'amélioration de l'animation d'évolution.
    Mais n'ayant jamais réussi à comprendre le fonctionnement de Git hormis pour signaler des bugs, je n'ai jamais pu proposer mes améliorations à Nuri.
     
  8. yyyyj

    yyyyj Dresseur reconnu

    Je parlais en effet de ce type de plugins et comme tu m'as montré en trois points pourquoi il faudrait stopper les mises à jours de PSDK, je vais te répondre en trois points également :
    • Effectivement, PSDK n'est pas à l'abri d'une mise à jour majeure, mais nous pouvons très bien nous adapter à ces majs par des ruses (je pense notamment à faire lire un plugin en priorité pour effectuer un rename avant l'application des autres plugins, puis un plugin de fin de priorité pour réappliquer la maj. En sachant que les JSON sont ensuite écrit en dur dans les scripts+plugins.rxdata, ce qui n'était pas toujours le cas avec les addsdk ce qui peut permettre de patcher assez facilement, finalement
    • Comme tu le dis PSDK va rester fidèle à Pokémon. Mais tes mécaniques ne sont-elles pas des greffes à ce mécanisme de base en amélioration ? S'il y a une réécriture d'un script par Yuri ou un autre, je ne vois pas ça comme une perte de temps pour nous de refaire un plugin ou un script adapté mais plutôt de permettre une optimisation du jeu, car c'est ce manque qui est souvent reproché à de plus en plus aux jeux vidéos actuels.
    • Je suis d'accord que le moddage peut prendre un certain temps à rendre compatible les mods, mais si nous réussissons à bien faire le travail, une majorité des mods pourrait passer les majs. Il s'agit certainement de créer nos propres méthodes qui font appel aux méthodes de PSDK de manière à ce que ce soit le moins incompatible (changer "text" en "get_text" dans de rares cas sera toujours plus simple que de modifier la définition complète)
    Enfin, en ce qui concerne le développement de PSDK, si nous arrêtons de suivre son évolution, nous ne contribuerons plus à son développement sur la branche principale, nous corrigerons de nombreuses choses en double, devrons faire de nombreux ajouts "généraux" seuls ... qui pourraient être partagés grâce à notre alignement sur PSDK
     
    Amras Anárion et Bugfix aiment ça.