Sujet n°4718
Posté par SiriusXIV le 3 Aoû - 18:41 (2009)
Titre : [Pokemon_Battle_Core 2] Bug de l'attaque rebond.
Bonjour, j'ai remarqué que l'attaque rebond, lorsqu'elle échouait faisait planter le programme juste après le message : "[POKéMON] rate son attaque". Après une petite recherche, je n'ai pas vu que ce bug a été reporté.
Le bug a lieu aux lignes 2108 ou 2109 de Pokemon_Battle_Core 2 :

 
Code:


         else
          #-------------------------------------------------------
          # Miss
          #--------------------------------------------------------
          case user_skill.effect
          when 0x07 # Self_destruct
            rec_damage = user.hp
            self_damage(user, user_sprite, user_status, rec_damage)
            draw_text("#{user.given_name}","se sacrifie.")
            wait(40)
            faint_check(user)
          when 0x2D # Miss and self_damage
            damage = info[0]
            rec_damage = damage/2
            draw_text("#{user.given_name}","retombe au sol!")
            self_damage(user, user_sprite, user_status, rec_damage)
            wait(30)
            faint_check(user)
          when 0x68 # Triple Kick
            multi_hit = 0 #Arret si échec
          when 0x9B2 # Bounce / Rebond
            index = user.effect_list.index(0x9B2) [u][b][i]#(<= L'erreur est là)[/i][/b][/u]
            user.effect.delete_at(index)
          when 0x75 # Roulade/Rollout
            if user.effect_list.include?(0x75)
              index = user.effect_list.index(0x75)
              user.effect.delete_at(index)
            end
          end
        end
        #-------------------------------------------------------
        # Réduction compteur d'effets ?
        #--------------------------------------------------------
        # user.skill_effect_end_turn
        user_status.refresh
        target_status.refresh
      end
    end



Voici le fichier log.txt :
Code:



 ---------- Erreur de script : Pokemon_Battle_Core 2 ----------
----- Type
TypeError

----- Message
no implicit conversion from nil to integer

----- Position dans Pokemon_Battle_Core 2
Ligne 2110

----- Backtrace
Script : Pokemon_Battle_Core 2 | Ligne : 2110 | Méthode : in `delete_at'
Script : Pokemon_Battle_Core 2 | Ligne : 2110 | Méthode : in `attack_action'
Script : Pokemon_Battle_Core 1 | Ligne : 554 | Méthode : in `phase3'
Script : Pokemon_Battle_Core 1 | Ligne : 417 | Méthode : in `update'
Script : Pokemon_Battle_Core 1 | Ligne : 156 | Méthode : in `main'
Script : Pokemon_Battle_Core 1 | Ligne : 153 | Méthode : in `loop'
Script : Pokemon_Battle_Core 1 | Ligne : 160 | Méthode : in `main'
Script : Main | Ligne : 49




Voici un screen :

Voilà. (J'espère que c'est vraiment un bug et que je me suis pas trompé Imbécile heureux ).

Posté par Sphinx le 3 Aoû - 19:44 (2009)
juste après :
Code:
             rec_damage = damage/2 
             draw_text("#{user.given_name}","retombe au sol!") 
             self_damage(user, user_sprite, user_status, rec_damage) 
             wait(30) 
             faint_check(user) 
           when 0x68 # Triple Kick 
             multi_hit = 0 #Arret si échec 
           when 0x9B2 # Bounce / Rebond


tu peux mettre :
Code:
print user.effect_list.inspect

et me donner le résultat ?

Posté par SiriusXIV le 3 Aoû - 20:01 (2009)
J'ai testé et il n'y a aucune différence, ni dans le log.txt, ni dans le rapport d'erreur.

Posté par Sphinx le 3 Aoû - 20:14 (2009)
ca t'affiche un truc en plus, et c'est ca qui m'intéresse =)

Posté par SiriusXIV le 3 Aoû - 20:33 (2009)
D'accord, alors voilà le log :  
Code:
 ---------- Erreur de script : Pokemon_Battle_Core 2 ----------
----- Type
TypeError

----- Message
no implicit conversion from nil to integer

----- Position dans Pokemon_Battle_Core 2
Ligne 2111

----- Backtrace
Script : Pokemon_Battle_Core 2 | Ligne : 2111 | Méthode : in `delete_at'
Script : Pokemon_Battle_Core 2 | Ligne : 2111 | Méthode : in `attack_action'
Script : Pokemon_Battle_Core 1 | Ligne : 554 | Méthode : in `phase3'
Script : Pokemon_Battle_Core 1 | Ligne : 417 | Méthode : in `update'
Script : Pokemon_Battle_Core 1 | Ligne : 156 | Méthode : in `main'
Script : Pokemon_Battle_Core 1 | Ligne : 153 | Méthode : in `loop'
Script : Pokemon_Battle_Core 1 | Ligne : 160 | Méthode : in `main'
Script : Main | Ligne : 49

Posté par Sphinx le 3 Aoû - 20:40 (2009)
ce que t'affiche le print... Une boite de dialogue...

Posté par SiriusXIV le 4 Aoû - 15:18 (2009)
Je crois que j'ai compris, il y a en effet un message en plus.
Voici le message de la boîte de dialogue quand le bug apparaît : []
Et il n'y a rien d'autre.

Posté par Sphinx le 4 Aoû - 17:13 (2009)
Mollasse enragé ah ben ceci explique cela !


Remplace :
Code:
      when 0x9B2 # Bounce / Rebond 
        index = user.effect_list.index(0x9B2) [u][b][i]#(<= L'erreur est là)[/i][/b][/u] 
        user.effect.delete_at(index)

par :
Code:
      when 0x9B2 # Rebond / Bounce
        if not(user.effect_list.include?(0x9B2)) # not(Déjà préparé)
          user.skill_effect(0x9B2, 2)
          draw_text("#{user.given_name} saute!")
          wait(40)
          jumper_end = true
        else
          index = user.effect_list.index(0x9B2)
          user.effect.delete_at(index)
          pp_use = false
        end


et ca devrait marcher

Posté par SiriusXIV le 4 Aoû - 17:55 (2009)
Eh bien, cela ne bug plus, mais le pokémon relance immédiatement l'attaque juste après l'avoir échouée :? .