[PSPE 0.10.4] Grelot coque sans effet ?

Noru
Demandeur : Louro
Participants : Damien Linux
Problème :
Bonjour,
Lorsque je donne le GRELOT COQUE à un Pokémon, il ne se produit aucun effet après ses attaques et il ne draine rien.
Suis-je le seul ?
Résolution :
Le grelot coque n'est à ce jour pas programmé au sein du système de combat et ne le sera qu'après une refonte du système actuel 🙂 (Donc prochaine mise à jour).
Mais voici le script fait Louro pour qu'il fonctionne :
L'objet grelot coque est le 103.
A placer dans un nouveau script avant Main :
module POKEMON_S
class Pokemon_Battle_Core
alias alias_grelot_coque post_attack
def post_attack(info, damage, power)
alias_grelot_coque(info, damage, power)
if @user.item_hold == 103 and @user.hp < @user.max_hp
bonus = @damage / 8
if @damage > 0 and bonus == 0
bonus = 1
end
if bonus > 0
draw_text("GRELOT COQUE de #{@user.given_name}", "lui rend de l'énergie!")
wait(40)
heal(@user, @user_sprite, @user_status, bonus)
wait(40)
end
end
end
end
end
Publié le : 03/01/2023 - 09:05
Modifié le : 03/01/2023 - 09:05
Historique :

Louro
Bonjour,
Lorsque je donne le GRELOT COQUE à un Pokémon, il ne se produit aucun effet après ses attaques et il ne draine rien.
Suis-je le seul ?
Publié le : 30/12/2022 - 03:14
Modifié le : 30/12/2022 - 03:14

Damien Linux - Administrateur
Bonjour Louro,
Le grelot coque n'est à ce jour pas programmé au sein du système de combat et ne le sera qu'après une refonte du système actuel 🙂
Publié le : 30/12/2022 - 10:45
Modifié le : 30/12/2022 - 10:45

Louro
Ah, d'accord. Merci pour la réponse.
Sinon je voudrais savoir comment la méthode recuperation_pv_post (Pokemon_Post_Attack) est utilisée, car elle a beau être définie je ne vois aucun script dans lequel elle serait appelée.
Publié le : 30/12/2022 - 11:59
Modifié le : 30/12/2022 - 11:59

Damien Linux - Administrateur
Je ne peux pas te montrer avec des images dans l'immédiat :
Tu as méthodes "execution_effect" ou "execution_effect_return"
Qui sont appelées et qui vont elles mêmes appeler la bonne méthode.
Sur le script Gestion_Effect tu a la liste des effets et un symbole associé.
Cas d'exemple (vu que je n'ai pas le SK en face des yeux)
Imaginons que ton Pokémon utilise l'attaque d'ID 5
et que tu as dans Gestion_Effect
5 => :recuperation_pv
Dans ce cas là la méthode qui sera du style : execution_effect(@user_skill.symbol, "post", params)
Va appeler la méthode :
recuperation_pv_post(params)
Publié le : 30/12/2022 - 12:11
Modifié le : 30/12/2022 - 12:11

Damien Linux - Administrateur
Pour compléter ces méthodes qui servent de "contrôleurs" je les ai fait lorsque j'ai restructuré le système de combat (donnant celui de PSPEvolved 0.10) afin de séparer les logiques des attaques en un ensemble de méthodes (au lieu d'une seule méthode de 2500 lignes sous forme de case/when comme dans PSP).
On reste sur du procédural mais bien plus flexible et plus facile à maintenir.
Prochainement le système de combat gardera cette logique de "contrôleur" mais cette fois ci le système sera refait sur une logique orientée objet, donc il y a une véritable refonte de celui-ci afin que ce dernier soit vraiment bien plus flexible.
Publié le : 30/12/2022 - 12:14
Modifié le : 30/12/2022 - 12:14

Louro
Merci pour les informations.
Vu la taille des scripts j'avais la flemme de tout examiner alors je l'ai simplement codé vite fait à ma façon pour le rendre fonctionnel dans ma partie.
Publié le : 30/12/2022 - 13:35
Modifié le : 30/12/2022 - 13:35

Louro
Je le partage si jamais ça intéresse quelqu'un.
L'objet grelot coque est le 103.
A placer dans un nouveau script avant Main :
module POKEMON_S
class Pokemon_Battle_Core
alias alias_grelot_coque post_attack
def post_attack(info, damage, power)
alias_grelot_coque(info, damage, power)
if @user.item_hold == 103 and @user.hp < @user.max_hp
bonus = @damage / 8
if @damage > 0 and bonus == 0
bonus = 1
end
if bonus > 0
draw_text("GRELOT COQUE de #{@user.given_name}", "lui rend de l'énergie!")
wait(40)
heal(@user, @user_sprite, @user_status, bonus)
wait(40)
end
end
end
end
end
Publié le : 31/12/2022 - 11:33
Modifié le : 02/01/2023 - 00:16