Logo de Pokémon Script Project Evolved

[PSPE 0.10.4] Grelot coque sans effet ?


Logo de l'utilisateurNoru

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 :

SCRIPT :


 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 :


Logo de l'utilisateurLouro

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

Logo de l'utilisateurDamien Linux

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

Logo de l'utilisateurLouro

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

Logo de l'utilisateurDamien Linux

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

Logo de l'utilisateurDamien Linux

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

Logo de l'utilisateurLouro

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

Logo de l'utilisateurLouro

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