Sujet n°1723
Posté par Krosk le 10 Sep - 09:14 (2008)
Titre : Corrections manuelles à apporter à v0.7
Si vous préférez conserver le fichier Scripts.rxdata (pour conserver vos modifications de scripts), vous pouvez appliquer manuellement les modifications si dessous. Attention, à faire seulement si vous... savez ce que vous faites.

Pour vérifier si votre version est à jour, lisez le fichier note.txt! Il indiquera en entête, quelle version vous utilisez. Si elle est mise à jour, la mention Correctif X est en tete de fichier.




Correctif 1 


- Correction d'une anomalie dans le chargement de la save de secours
- Nettoyage du code de MAJ BDD
- Correction d'un bug d'utilisation de potion


Scene_title
ligne 459
Code:

    $map_link = $read_data[3] != nil ? $read_data[3] : {}

remplacer par
Code:

    $map_link = ($read_data != nil and $read_data[3] != nil) ? $read_data[3] : {}





Scene_Debug
remplacer la méthode pokemon_conversion, de la ligne 1166 à la ligne 1488, par
Spoiler
Code:

  def pokemon_conversion
    window = Window_Base.new(170, 208, 300, 64)
    window.contents = Bitmap.new(300-32, 64-32)
    window.contents.font.name = $fontface
    window.contents.font.size = $fontsize
    window.active = false
    window.visible = true
    window.z = 10000
    window.contents.font.color = window.normal_color
    window.contents.draw_text(0, 0, 300-32, 32, "Mise à jour en cours...", 1)
    
    
    # Reecriture Weapon / Armor
    # Inscription des CT/CS
    j = 0
    for i in 1..$data_items.length-1
      if $data_items[i] != nil and $data_items[i].name[0..1] == "CT" and
          $data_items[i].name[2..3].to_i != 0
        if $data_weapons[34+j] == nil
          $data_weapons[34+j] = RPG::Weapon.new
        end
        $data_weapons[34+j].name = Item.name(i)
        j += 1
      end
      if $data_items[i] != nil and $data_items[i].name[0..1] == "CS" and
          $data_items[i].name[2..3].to_i != 0
        if $data_weapons[34+j] == nil
          $data_weapons[34+j] = RPG::Weapon.new
        end
        $data_weapons[34+j].name = Item.name(i)
        j += 1
      end
    end
    
    # Inscription des capa spé
    for i in 1..$data_ability.length-1
      if $data_armors[i+33] == nil
        $data_armors[i+33] = RPG::Armor.new
      end
      $data_armors[i+33].name = $data_ability[i][0]
      $data_armors[i+33].description = $data_ability[i][1]
    end
    
    
    
    # Inscription des CT/CS
    ct_list = {}
    cs_list = {}
    for element in $data_weapons
      if element == nil
        next
      end
      if element.name[0..1] == "CT" and element.name[2..3].to_i != 0
        ct_list[element.name[2..3].to_i] = element.id
      end
      if element.name[0..1] == "CS" and element.name[2..3].to_i != 0
        cs_list[element.name[2..3].to_i] = element.id
      end
    end
    
    # Conversion
    for id in 1..$data_pokemon.length-1
      Graphics.update
      pokemon = POKEMON_S::Pokemon.new(id)
      
      if $data_enemies[id] == nil
        $data_enemies[id] = RPG::Enemy.new
      end
      
      if $data_classes[id] == nil
        $data_classes[id] = RPG::Class.new
      end
      
      # Reset données
      $data_enemies[id].mdef = 0
      $data_enemies[id].pdef = 0
      $data_enemies[id].actions = []
      
      $data_classes[id].weapon_set = []
      $data_classes[id].armor_set = []
      
      # Nom
      $data_enemies[id].name = Pokemon_Info.name(id) # pokemon.name
      $data_enemies[id].battler_name = "Front_Male/"+sprintf("%03d",id)+".png"
      
      # ID secondaire
      $data_enemies[id].maxsp = id
      
      # Base Stats
      $data_enemies[id].maxhp = Pokemon_Info.base_hp(id) # pokemon.base_hp
      $data_enemies[id].agi = Pokemon_Info.base_spd(id) # pokemon.base_spd
      $data_enemies[id].int = Pokemon_Info.base_ats(id) # pokemon.base_ats
      $data_enemies[id].str = Pokemon_Info.base_atk(id) # pokemon.base_atk
      $data_enemies[id].dex = Pokemon_Info.base_dfe(id) # pokemon.base_dfe
      $data_enemies[id].atk = Pokemon_Info.base_dfs(id) # pokemon.base_dfs
      
      # Apprentissage des skills
      $data_classes[id].learnings = []
      for skill in Pokemon_Info.skills_table(id)
        learning = RPG::Class::Learning.new
        learning.level = skill[1]
        learning.skill_id = skill[0]
        $data_classes[id].learnings.push(learning)
      end
      
      # CT/CS: support script
      
      # Exp Type
      $data_classes[id].weapon_set.push(Pokemon_Info.exp_type(id) + 15)
      
      # Evolution
      $data_classes[id].name = ""
      
      # Evolution unique
      if Pokemon_Info.evolve_table(id).length == 2
        # Evolution naturelle seulement
        if Pokemon_Info.evolve_table(id)[1].length == 2
          name = Pokemon_Info.evolve_table(id)[1][0]
          data = Pokemon_Info.evolve_table(id)[1][1]
          if data.type == Fixnum and name != ""
            $data_classes[id].name = name + "/" + data.to_s
            $data_classes[id].weapon_set.push(22)
          elsif data == "loyal"
            $data_classes[id].name = name#"L" + "/" + name
            $data_classes[id].weapon_set.push(24)
          elsif data == "trade"
            $data_classes[id].name = name#"T" + "/" + name
            $data_classes[id].weapon_set.push(25)
          elsif data.type == Array and data[0] == "stone"
            $data_classes[id].name = name#"S" + "/" + name
            $data_classes[id].weapon_set.push(23)
          elsif data != [] and data != nil and name != nil and name != ""
            $data_classes[id].weapon_set.push(26)
          end
        elsif Pokemon_Info.evolve_table(id)[1].length > 2
          name = Pokemon_Info.evolve_table(id)[1][0]
          $data_classes[id].name = name
          $data_classes[id].weapon_set.push(26)
        end
      else
        # Evolution spéciale/multiple
        $data_classes[id].weapon_set.push(26)
      end
      
      # Type
      if Pokemon_Info.type1(id) != 0
        $data_enemies[id].element_ranks[Pokemon_Info.type1(id)] = 1
        $data_classes[id].element_ranks[Pokemon_Info.type1(id)] = 3
      end
      if Pokemon_Info.type2(id) != 0
        $data_enemies[id].element_ranks[Pokemon_Info.type2(id)] = 2
        $data_classes[id].element_ranks[Pokemon_Info.type2(id)] = 3
      end
      
      # Rareté
      $data_enemies[id].gold = Pokemon_Info.rareness(id)
      
      # Genre
      $data_classes[id].armor_set = []
      case POKEMON_S::Pokemon_Info.female_rate(id) # Female rate
      when -1
        $data_classes[id].armor_set.push(2)
      when 0
        $data_classes[id].armor_set.push(3)
      when 12.5
        $data_classes[id].armor_set.push(4)
      when 25
        $data_classes[id].armor_set.push(5)
      when 50
        $data_classes[id].armor_set.push(6)
      when 75
        $data_classes[id].armor_set.push(7)
      when 87.5
        $data_classes[id].armor_set.push(8)
      when 100
        $data_classes[id].armor_set.push(9)
      else
        $data_classes[id].armor_set.push(6)
      end
      
      # Loyauté
      case Pokemon_Info.base_loyalty(id)
      when 0
        $data_classes[id].armor_set.push(11)
      when 35
        $data_classes[id].armor_set.push(12)
      when 70
        $data_classes[id].armor_set.push(13)
      when 90
        $data_classes[id].armor_set.push(14)
      when 100
        $data_classes[id].armor_set.push(15)
      when 140
        $data_classes[id].armor_set.push(16)
      else
        $data_classes[id].armor_set.push(13)
      end
      
      # EV et Base Exp
      i = 0
      for element in Pokemon_Info.battle_list(id)
        if i == Pokemon_Info.battle_list(id).length-1
          $data_enemies[id].exp = element
          next
        end
        
        case element
        when 1
          $data_classes[id].weapon_set.push(2+i)
        when 2
          $data_classes[id].weapon_set.push(8+i)
        when 3
          $data_classes[id].weapon_set.push(2+i)
          $data_classes[id].weapon_set.push(8+i)
        end
        i += 1
      end
      
      # Breed Groupe
      for group in Pokemon_Info.breed_group(id)
        $data_classes[id].armor_set.push(group + 17)
      end
      
      # Egg Hatch
      case Pokemon_Info.hatch_step(id)
      when 1280
        $data_classes[id].weapon_set.push(28)
      when 2560
        $data_classes[id].weapon_set.push(29)
      when 3840
        $data_classes[id].weapon_set.push(28)
        $data_classes[id].weapon_set.push(29)
      when 5120
        $data_classes[id].weapon_set.push(30)
      when 6400
        $data_classes[id].weapon_set.push(30)
        $data_classes[id].weapon_set.push(28)
      when 7680
        $data_classes[id].weapon_set.push(30)
        $data_classes[id].weapon_set.push(29)
      when 8960
        $data_classes[id].weapon_set.push(30)
        $data_classes[id].weapon_set.push(29)
        $data_classes[id].weapon_set.push(28)
      when 10240
        $data_classes[id].weapon_set.push(31)
      when 20480
        $data_classes[id].weapon_set.push(32)
      when 30720
        $data_classes[id].weapon_set.push(31)
        $data_classes[id].weapon_set.push(32)
      else
        $data_classes[id].weapon_set.push(30)
      end
      
      # Liste CT/CS
      for element in Pokemon_Info.skills_tech(id)
        if element.type == Fixnum # CT
          $data_classes[id].weapon_set.push(ct_list[element])
        end
        if element.type == Array
          $data_classes[id].weapon_set.push(cs_list[element[0]])
        end
      end
      
      # Capa Spé
      list = []
      for i in 1..$data_ability.length-1
        list.push($data_ability[i][0])
      end
      for ability in POKEMON_S::Pokemon_Info.ability_list(id)
        abid = list.index(ability) + 1
        $data_classes[id].armor_set.push(abid + 33)
      end
      
      # Attaque par accouplement
      r = 0
      for skill in Pokemon_Info.breed_move(id)
        if $data_enemies[id].actions[r] == nil
          $data_enemies[id].actions[r] = RPG::Enemy::Action.new
        end
        $data_enemies[id].actions[r].kind = 1
        $data_enemies[id].actions[r].skill_id = skill
        r += 1
      end
    end
    
    file = File.open("Data/Enemies.rxdata", "wb")
    Marshal.dump($data_enemies, file)
    file.close
    file = File.open("Data/Classes.rxdata", "wb")
    Marshal.dump($data_classes, file)
    file.close
    file = File.open("Data/Weapons.rxdata", "wb")
    Marshal.dump($data_weapons, file)
    file.close
    file = File.open("Data/Armors.rxdata", "wb")
    Marshal.dump($data_armors, file)
    file.close
    
    window.dispose
    window = Window_Base.new(80, 160, 480, 160)
    window.contents = Bitmap.new(480-32, 160-32)
    window.contents.font.name = $fontface
    window.contents.font.size = $fontsize
    window.active = false
    window.visible = true
    window.z = 10000
    window.contents.font.color = window.normal_color
    window.contents.draw_text(0, 0, 480-32, 32, "Mise à jour terminée.", 1)
    window.contents.draw_text(0, 32, 480-32, 32, "Dans RMXP, cliquez sur 'Fichier'", 1)
    window.contents.draw_text(0, 64, 480-32, 32, "puis sur 'Fermer le projet'.", 1)
    window.contents.draw_text(0, 96, 480-32, 32, "Et réouvrez votre projet.", 1)
    loop do
      Input.update
      Graphics.update
      if Input.trigger?(Input::C)
        break
      end
    end
    window.dispose
    exit
  end





Pokemon_Data
coller entre ligne 194-195
Code:

    def self.skills_table(id)
      list = []
      if skills_list(id).length != 0
        for i in 0..(skills_list(id).length/2-1)
          list.push([skills_list(id)[2*i+1], skills_list(id)[2*i]])
        end
      end
      return list
    end 





Pokemon_party_menu
Remplacer ligne 642
Code:

      if @pokemong.egg

par
Code:

      if @pokemon.egg

Posté par Krosk le 11 Sep - 12:12 (2008)
Maj Correctif 2

Correctif 2


- Intégration de MAPINTRO : possibilité de faire une Introduction sur une map
- Correction d'un bug de panorama
- Correction du bug d'un oeuf qui peut tenir un objet
- Correction du script de Carte Dresseur (récupérez les nouveaux fonds sur le correctif)

Config Panel
Collez à la ligne 127
Code:
  # --------------------------------------------------------
  # MAPINTRO
  #   - Ecrivez [numéro de map, position x, position y]
  #     si vous voulez spécifiez une intro faite sur une map de votre choix.
  #     Ecrivez false sinon : l'intro en script sera utilisée
  #     Exemple : [5, 12, 13] => commence une intro sur la map 5, x=12, y=13
  #   - Quand votre intro est terminée, inscrivez
  # --------------------------------------------------------
  MAPINTRO = false





Scene_title
Méthode main ligne 15-290
remplacer par
Spoiler
Code:
  def main
    if $BTEST
      battle_test
      return
    end
   
    if FileTest.exist?("SaveAuto.rxdata")
      print("Sauvegarde de secours détectée.\n\nAppuyez sur Entrée, puis sur Echap pour charger, ou Entrée pour continuer.")
      loop do
        Input.update
        if Input.trigger?(Input::C)
          File.delete("SaveAuto.rxdata")
          break
        end
        if Input.trigger?(Input::B)
          @auto_load = true
          break
        end
      end
    end
   
    if $game_system == nil
      $data_actors        = load_data("Data/Actors.rxdata")
      $data_classes       = load_data("Data/Classes.rxdata")
      $data_skills        = load_data("Data/Skills.rxdata")
      $data_items         = load_data("Data/Items.rxdata")
      $data_weapons       = load_data("Data/Weapons.rxdata")
      $data_armors        = load_data("Data/Armors.rxdata")
      $data_enemies       = load_data("Data/Enemies.rxdata")
      $data_troops        = load_data("Data/Troops.rxdata")
      $data_states        = load_data("Data/States.rxdata")
      $data_animations    = load_data("Data/Animations.rxdata")
      $data_tilesets      = load_data("Data/Tilesets.rxdata")
      $data_common_events = load_data("Data/CommonEvents.rxdata")
      $data_system        = load_data("Data/System.rxdata")
      $picture_data       = load_data("Data/Library.rxdata")
     
      $game_system = Game_System.new
    end
   
    if not @auto_load and not MAPINTRO
   
      # -----------------------------------------------------------------
      #     La scène d'intro commence ici (non MAPINTRO)
      # -----------------------------------------------------------------
      # Elle est bien sûr modifiable à votre goût.
      # -----------------------------------------------------------------
      view = Viewport.new(0,0,640,480)
      view.z = -5
      #view = Viewport.new(0,25,640,430)
      #view.z = 0
      background = Plane.new(view)
      background.bitmap = RPG::Cache.title("Opening2.jpg")
      #background.oy += 25
      background.z = 0
      background.tone = Tone.new(0,0,0,255)
     
      #view = Viewport.new(0,0,640,480)
      #view.z = -5
      #background_bis = Plane.new(view)
      #background_bis.bitmap = RPG::Cache.title("Opening2.jpg")
      #background_bis.z = -5
     
      band_top = Sprite.new
      band_top.bitmap = RPG::Cache.title("Opening3.png")
      band_top.z = 5
      band_bottom = Sprite.new
      band_bottom.bitmap = RPG::Cache.title("Opening3.png")
      band_bottom.z = 5
      band_bottom.y = 450
     
      band_mid = Plane.new(Viewport.new(0,0,640,480))
      band_mid.bitmap = RPG::Cache.title("Opening4.png")
      band_mid.z = 5
     
      middle = Sprite.new
      middle.bitmap = RPG::Cache.title("Opening1.png")
      middle.z = 2
     
      title1 = Sprite.new
      title1.bitmap = RPG::Cache.title("Opening6.png")
      title1.z = 3
      title1.opacity = 0
      title1.color = Color.new(255,255,255,255)
     
      title2 = Sprite.new
      title2.bitmap = RPG::Cache.title("Opening7.png")
      title2.z = 4
      title2.opacity = 0
      title2.color = Color.new(255,255,255,255)
     
      flash = Sprite.new
      flash.bitmap = RPG::Cache.title("Opening8.png")
      flash.z = 10
      flash.opacity = 0
     
      mid = Sprite.new
      mid.bitmap = RPG::Cache.title("Opening5.png")
      mid.z = 5
      mid.visible = false
     
      screen = Sprite.new
      screen.bitmap = RPG::Cache.title("Opening10.png")
      screen.z = 2
      screen.visible = false
     
      start = Sprite.new
      start.bitmap = RPG::Cache.title("Opening11.png")
      start.z = 5
      start.visible = false
     
      Graphics.transition(5)
     
      $game_system.bgm_play($data_system.title_bgm)
      Audio.me_stop
      Audio.bgs_stop
     
      timer = 0
      loop do
        Graphics.update
        Input.update
       
        timer += 1
        background.ox -= 12
        #background_bis.ox += 6
       
        if timer == 210
          background.tone.gray = 0
        end
       
        if timer > 210 and background.tone.red > 0
          background.tone.red -= 25
          background.tone.green -= 25
        end
         
        if timer > 210 and timer % (150 + rand(50)) == 0
          background.tone.red = background.tone.green = 250
        end
       
        if flash.opacity > 0
          flash.opacity -= 15
        end
       
        if timer > 5 and not band_top.disposed?
          band_top.x += 13
          if band_top.x > 640
            band_top.dispose
          end
        end
       
        if timer > 73 and not band_bottom.disposed?
          band_bottom.x -= 13
          if band_bottom.x < -640
            band_bottom.dispose
          end
        end
       
        if timer > 150 and not band_mid.disposed?
          band_mid.ox -= 20
          if timer > 210
            band_mid.dispose
            mid.visible = true
          end
        end
       
        if timer > 210 and not title1.disposed? and title1.opacity < 255
          title1.opacity += 15
          title1.color.alpha -= 15
        end
       
        if timer > 240 and not title1.disposed? and title1.opacity == 255
          title1.color.alpha += 15
        end
       
        if timer == 270
          flash.opacity = 255
          title1.dispose
          mid.dispose
          middle.dispose
          screen.visible = true
        end
       
        if timer > 270 and not title2.disposed? and title2.opacity < 255
          title2.opacity += 15
          title2.color.alpha -= 15
          if title2.opacity >= 255
            title2.dispose
          end
        end
       
        if timer > 290 and timer%20 == 0
          start.visible = !start.visible
        end
       
        if Input.trigger?(Input::C)
          $game_system.se_play($data_system.decision_se)
          break
        end
       
        if timer > 3750
          Audio.bgm_fade(1000*5)
        end
       
      end
     
      Graphics.freeze
      background.dispose if not background.disposed?
      #background_bis.dispose if not background_bis.disposed?
      band_top.dispose if not band_top.disposed?
      band_bottom.dispose if not band_bottom.disposed?
      band_mid.dispose if not band_mid.disposed?
      mid.dispose if not mid.disposed?
      middle.dispose if not middle.disposed?
      title1.dispose if not title1.disposed?
      title2.dispose if not title2.disposed?
      flash.dispose if not flash.disposed?
      start.dispose if not start.disposed?
      screen.dispose if not screen.disposed?
      Graphics.transition
      Graphics.freeze
     
      Audio.bgm_stop
     
      # -----------------------------------------------------------------
      #     Fin de la scène d'intro
      # -----------------------------------------------------------------
   
    elsif MAPINTRO.type == Array and $_temp_map_intro == nil
      $_temp_map_intro = true
      $map_link = {}
      Audio.bgm_stop
      Graphics.frame_count = 0
      $game_temp          = Game_Temp.new
      $game_system        = Game_System.new
      $game_switches      = Game_Switches.new
      $game_variables     = Game_Variables.new
      $game_self_switches = Game_SelfSwitches.new
      $game_screen        = Game_Screen.new
      $game_actors        = Game_Actors.new
      $game_party         = Game_Party.new
      $game_troop         = Game_Troop.new
      $game_map           = Game_Map.new
      $game_player        = Game_Player.new
      # ---- Pas forcément nécessaire
      $pokemon_party = POKEMON_S::Pokemon_Party.new
      $data_storage = [[0]]
      $pokemon_party.create_box
      Player.set_trainer_code(rand(2**32))
      $random_encounter = Array.new(7)
      $random_encounter[0] = 0
      $battle_var = POKEMON_S::Pokemon_Battle_Variable.new
      $existing_pokemon = []
      $string = []
      POKEMON_S::set_SAVESLOT = @index
      Player.trainer_trade_code
      # ---- Pas forcément nécessaire
      $game_party.setup_starting_members
      $game_map.setup(MAPINTRO[0])
      $game_player.moveto(MAPINTRO[1], MAPINTRO[2])
      $game_player.refresh
      $game_map.autoplay
      $game_map.update
      $scene = Scene_Map.new
      return
    end
   
    Audio.bgm_stop
    $_temp_map_intro = nil
   
    @sprite = Sprite.new
    @sprite.bitmap = RPG::Cache.title($data_system.title_name)
   
    number = 0 # Nombre de cadres de sauvegarde à générer
    for i in 0..2
      if FileTest.exist?("Save#{i+1}.rxdata")
        number += 1
      end
    end
    @number = number
   
    @new_game_window = Window_Base.new(30, 30 + 83*@number, 580, 80)
    @new_game_window.contents = Bitmap.new(548, 48)
    set_window(@new_game_window)
    @new_game_window.contents.draw_text(9,3,548,48,"NOUVELLE PARTIE")
   
    @save_game_window_list = []
    for i in 1..@number
      window = Window_Base.new(30, 30 + 83*(i-1), 580, 80)
      window.contents = Bitmap.new(548, 48)
      @save_game_window_list.push(window)
    end
   
    @index = 0
   
    @background = Plane.new(Viewport.new(0,0,640,480))
    @background.bitmap = RPG::Cache.picture("fondsaved.png")
    @background.z -= 10
   
    refresh_all
    Graphics.transition
   
    loop do
      Graphics.update
      Input.update
      update
      if $scene != self
        break
      end
    end
   
    Graphics.freeze
   
    @new_game_window.dispose
    @background.dispose
    for window in @save_game_window_list
      window.dispose
    end
  end




Pokemon_Party_Menu
ligne 571
Code:
      list += ["RESUME", "ORDRE", "OBJET", "RETOUR"]

remplacer par
Code:
      list += ["RESUME", "ORDRE", "OBJET", "RETOUR"]
      if $pokemon_party.actors[@order[@menu_index]].egg
        list.delete("OBJET")
      end




Carte_Dresseur
Remplacer l'intégralité du script par
Spoiler
Code:
#==============================================================================
# ■ Carde Dresseur
#    Script Communauté PSP - Louro
#    Remis en forme par Krosk
#-----------------------------------------------------------------------------
# Support de carte dresseur
#-----------------------------------------------------------------------------
# Pour changer l'image de vos badges, réglez les noms juste en dessous
# Pour afficher un badge, Insérez un script: badgex où x est le num du badge
# Pour afficher un objectif, Insérez un script: objectifx où x est le num de
#   l'objectif
#-----------------------------------------------------------------------------
# Variables occupées : 200, 1000, 1500
# Interrupteurs occupés : 1001-1008, 1500-1505
#-----------------------------------------------------------------------------

module POKEMON_S_TCARD
  # Script crée par Louro pour les membres de la communautée de PSP
  # qui veulent s'en servir
 
  # Les noms d'icones pour chaque badge
  BADGE1 = "baie01.png"
  BADGE2 = "baie02.png"
  BADGE3 = "baie03.png"   
  BADGE4 = "baie04.png"   
  BADGE5 = "baie05.png"   
  BADGE6 = "baie06.png"   
  BADGE7 = "baie07.png"   
  BADGE8 = "baie08.png"
 
  # Réglez les coordonnées horizontales de vos badges ici,
  # si vous avez un décalage !
  BADGE1_X = 59
  BADGE2_X = 128
  BADGE3_X = 197 
  BADGE4_X = 266   
  BADGE5_X = 335   
  BADGE6_X = 404   
  BADGE7_X = 473   
  BADGE8_X = 542   
 
  # Numéro de la variable stockant le nombre de badge acquit   
  VAR = 200
 
  # Nom des objectifs
  OBJECTIF1 = "PREMIER OBJECTIF"
  OBJECTIF2 = "DEUXIEME OBJECTIF"
  OBJECTIF3 = "TROISIEME OBJECTIF"
  OBJECTIF4 = "QUATRIEME OBJECTIF"
  OBJECTIF5 = "CINQUIEME OBJECTIF"
end

class TrainerCardWindow < Window_Base   
  attr_accessor :devant
  include POKEMON_S_TCARD
  include POKEMON_S
 
  def initialize(devant)
    super(0, 0, 640, 480)   
    self.contents = Bitmap.new(width - 32, height - 32)   
    self.contents.font.name = $fontface   
    self.contents.font.size = $fontsizebig   
    self.contents.font.color = Color.new(60,60,60)   
    @captured = 0
    @devant = devant
    for i in 1..$data_pokedex.length-1   
      if $data_pokedex[i][1]   
        @captured += 1   
      end   
    end   
    refresh   
  end   
 
  def refresh   
    self.contents.clear
    if @devant == true
      @total_sec = Graphics.frame_count / Graphics.frame_rate   
      hour = @total_sec / 60 / 60   
      min = @total_sec / 60 % 60   
      temps = sprintf("%02d:%02d", hour, min)   
      wd1 = self.contents.text_size($pokemon_party.money.to_s+"$").width   
      wd2 = self.contents.text_size(@captured.to_s).width   
      wd3 = self.contents.text_size(Player.id.to_s).width   
      self.contents.font.color = Color.new(110,110,110, 85) 
      self.contents.draw_text(48+2, 99+2+12, 160, 64, "NOM ")       
      self.contents.draw_text(48+3, 99+2+12, 160, 64, "NOM ")
      self.contents.draw_text(48+3, 99-1+12, 160, 64, "NOM ")   
      self.contents.draw_text(48+2, 99-1+12, 160, 64, "NOM ")     
      self.contents.font.color = Color.new(60,60,60) 
      self.contents.draw_text(48, 99+12, 160, 64, "NOM ")   
      self.contents.draw_text(48+1, 99+12, 160, 64, "NOM ")
      self.contents.draw_text(48, 99-1+12, 160, 64, "NOM ")   
      self.contents.font.color = Color.new(110,110,110, 85) 
      self.contents.draw_text(130+2, 99+2+12, 160, 64, Player.name)   
      self.contents.draw_text(130+2, 99-1+12, 160, 64, Player.name)   
      self.contents.font.color = Color.new(110,110,110) 
      self.contents.draw_text(130, 99+12, 160, 64, Player.name)
      self.contents.draw_text(130, 99-1+12, 160, 64, Player.name)   
      self.contents.font.color = Color.new(60,60,60) 
      self.contents.font.color = Color.new(110,110,110, 85) 
      self.contents.draw_text(48+2, 171+2+12, 160, 64, "ARGENT ")   
      self.contents.draw_text(48+3, 171+2+12, 160, 64, "ARGENT ")   
      self.contents.draw_text(48+3, 171-1+12, 160, 64, "ARGENT ")   
      self.contents.draw_text(48+2, 171-1+12, 160, 64, "ARGENT ")   
      self.contents.font.color = Color.new(60,60,60) 
      self.contents.draw_text(48, 171+12, 160, 64, "ARGENT ")   
      self.contents.draw_text(48+1, 171+12, 160, 64, "ARGENT ")   
      self.contents.draw_text(48, 171-1+12, 160, 64, "ARGENT ")   
      self.contents.font.color = Color.new(110,110,110, 85) 
      self.contents.draw_text(340 - wd1+2, 171+2+12, 160, 64, $pokemon_party.money.to_s+"$")   
      self.contents.draw_text(340 - wd1+2, 171-1+12, 160, 64, $pokemon_party.money.to_s+"$")   
      self.contents.font.color = Color.new(110,110,110) 
      self.contents.draw_text(340 - wd1, 171+12, 160, 64, $pokemon_party.money.to_s+"$")   
      self.contents.draw_text(340 - wd1, 171-1+12, 160, 64, $pokemon_party.money.to_s+"$")   
      if $data_pokedex[0] == true   
        self.contents.font.color = Color.new(110,110,110, 85) 
        self.contents.draw_text(48+2, 220+2+12, 160, 64, "POKéDEX ")   
        self.contents.draw_text(48+3, 220+2+12, 160, 64, "POKéDEX ")   
        self.contents.draw_text(48+3, 220-1+12, 160, 64, "POKéDEX ")   
        self.contents.draw_text(48+2, 220-1+12, 160, 64, "POKéDEX ")   
        self.contents.font.color = Color.new(60,60,60) 
        self.contents.draw_text(48, 220+12, 160, 64, "POKéDEX ")   
        self.contents.draw_text(48+1, 220+12, 160, 64, "POKéDEX ")   
        self.contents.draw_text(48, 220-1+12, 160, 64, "POKéDEX ")   
        self.contents.font.color = Color.new(110,110,110, 85) 
        self.contents.draw_text(340 - wd2+2, 220+2+12, 160, 64, @captured.to_s)   
        self.contents.draw_text(340 - wd2+2, 220-1+12, 160, 64, @captured.to_s)   
        self.contents.font.color = Color.new(110,110,110)     
        self.contents.draw_text(340 - wd2, 220+12, 160, 64, @captured.to_s)   
        self.contents.draw_text(340 - wd2, 220-1+12, 160, 64, @captured.to_s)   
      end
      self.contents.font.color = Color.new(110,110,110, 85) 
      self.contents.draw_text(48+2, 268+2+12, 160, 64, "DUREE JEU ")   
      self.contents.draw_text(48+3, 268+2+12, 160, 64, "DUREE JEU ")   
      self.contents.draw_text(48+3, 268-1+12, 160, 64, "DUREE JEU ")   
      self.contents.draw_text(48+2, 268-1+12, 160, 64, "DUREE JEU ")   
      self.contents.font.color = Color.new(60,60,60) 
      self.contents.draw_text(48, 268+12, 160, 64, "DUREE JEU ")   
      self.contents.draw_text(48+1, 268+12, 160, 64, "DUREE JEU ")   
      self.contents.draw_text(48, 268-1+12, 160, 64, "DUREE JEU ")   
      self.contents.font.color = Color.new(110,110,110, 85) 
      self.contents.draw_text(257+2, 268+2+12, 160, 64, temps)   
      self.contents.draw_text(257+2, 268-1+12, 160, 64, temps)   
      self.contents.font.color = Color.new(110,110,110)     
      self.contents.draw_text(257, 268+12, 160, 64, temps)   
      self.contents.draw_text(257, 268-1+12, 160, 64, temps)   
      self.contents.font.color = Color.new(230,230,230, 225) 
      self.contents.draw_text(370, 25+1+12, 160, 64, "N°ID")   
      self.contents.draw_text(370, 25+2+12, 160, 64, "N°ID ")   
      self.contents.draw_text(370+1, 25+1+12, 160, 64, "N°ID")   
      self.contents.draw_text(370+1, 25+2+12, 160, 64, "N°ID ")   
      self.contents.draw_text(370+2, 25+12, 160, 64, "N°ID ")   
      self.contents.draw_text(370+3, 25+12, 160, 64, "N°ID ")   
      self.contents.font.color = Color.new(60,60,60) 
      self.contents.draw_text(370, 25+12, 160, 64, "N°ID ")   
      self.contents.draw_text(370+1, 25+12, 160, 64, "N°ID ")   
      self.contents.draw_text(370, 25-1+12, 160, 64, "N°ID")   
      self.contents.font.color = Color.new(230,230,230, 225) 
      self.contents.draw_text(370 + wd3+2, 25+2+12, 160, 64, Player.id.to_s)   
      self.contents.draw_text(370 + wd3+2, 25-1+12, 160, 64, Player.id.to_s)   
      self.contents.font.color = Color.new(110,110,110) 
      self.contents.draw_text(370 + wd3, 25+12, 160, 64, Player.id.to_s)   
      self.contents.draw_text(370 + wd3, 25-1+12, 160, 64, Player.id.to_s)   
    elsif @devant == false
      wd1 = self.contents.text_size($pokemon_party.money.to_s+"$").width   
      wd2 = self.contents.text_size(@captured.to_s).width   
      wd3 = self.contents.text_size(Player.id.to_s).width   
      self.contents.font.color = Color.new(110,110,110, 85) 
      self.contents.draw_text(30+2, 25+2+12, 550, 64, "CARTE DRESSEUR de "+Player.name, 2)       
      self.contents.draw_text(30+3, 25+2+12, 550, 64, "CARTE DRESSEUR de "+Player.name, 2)
      self.contents.draw_text(30+3, 25-1+12, 550, 64, "CARTE DRESSEUR de "+Player.name, 2)   
      self.contents.draw_text(30+2, 25-1+12, 550, 64, "CARTE DRESSEUR de "+Player.name, 2)     
      self.contents.font.color = Color.new(60,60,60) 
      self.contents.draw_text(30, 25+12, 550, 64, "CARTE DRESSEUR de "+Player.name, 2)
      self.contents.draw_text(30+1, 25+12, 550, 64, "CARTE DRESSEUR de "+Player.name, 2)
      self.contents.draw_text(30, 25-1+12, 550, 64, "CARTE DRESSEUR de "+Player.name, 2)
      if $game_switches[1500] == true
        wd4 = self.contents.text_size($game_variables[1500].to_s).width   
        self.contents.font.color = Color.new(110,110,110, 85) 
        self.contents.draw_text(48+2, 99+15+2, 160, 64, "PANTHEON")       
        self.contents.draw_text(48+3, 99+15+2, 160, 64, "PANTHEON")
        self.contents.draw_text(48+3, 99+15-1, 160, 64, "PANTHEON")   
        self.contents.draw_text(48+2, 99+15-1, 160, 64, "PANTHEON")     
        self.contents.font.color = Color.new(60,60,60) 
        self.contents.draw_text(48, 99+15, 160, 64, "PANTHEON ")   
        self.contents.draw_text(48+1, 99+15, 160, 64, "PANTHEON")
        self.contents.draw_text(48, 99+15-1, 160, 64, "PANTHEON")
        self.contents.font.size += 2
        self.contents.font.color = Color.new(242,118,214) 
        self.contents.draw_text(570-wd4+3, 99+15, 160, 64, $game_variables[1500]) 
        self.contents.draw_text(570-wd4, 99+15+3, 160, 64, $game_variables[1500]) 
        self.contents.draw_text(570-wd4+1, 99+15+3, 160, 64, $game_variables[1500]) 
        self.contents.draw_text(570-wd4+2, 99+15+3, 160, 64, $game_variables[1500]) 
        self.contents.draw_text(570-wd4+3, 99+15+3, 160, 64, $game_variables[1500]) 
        self.contents.font.color = Color.new(190,0,0) 
        self.contents.draw_text(570-wd4, 99+15, 160, 64, $game_variables[1500]) 
        self.contents.font.size -= 2
      end
      if $game_switches[1501] == true
        wd4 = self.contents.text_size($game_variables[1501].to_s).width   
        self.contents.font.color = Color.new(110,110,110, 85) 
        self.contents.draw_text(48+2, 147+15+2, 380, 64, OBJECTIF1)       
        self.contents.draw_text(48+3, 147+15+2, 380, 64, OBJECTIF1)
        self.contents.draw_text(48+3,147+15-1, 380, 64, OBJECTIF1)   
        self.contents.draw_text(48+2, 147+15-1, 380, 64, OBJECTIF1)     
        self.contents.font.color = Color.new(60,60,60) 
        self.contents.draw_text(48, 147+15, 380, 64, OBJECTIF1)   
        self.contents.draw_text(48+1, 147+15, 380, 64, OBJECTIF1)
        self.contents.draw_text(48, 147+15-1, 380, 64, OBJECTIF1)
        self.contents.font.size += 2
        self.contents.font.color = Color.new(242,118,214) 
        self.contents.draw_text(570-wd4+3, 147+15, 160, 64, $game_variables[1501].to_s) 
        self.contents.draw_text(570-wd4, 147+15+3, 160, 64, $game_variables[1501].to_s) 
        self.contents.draw_text(570-wd4+1, 147+15+3, 160, 64, $game_variables[1501].to_s) 
        self.contents.draw_text(570-wd4+2, 147+15+3, 160, 64, $game_variables[1501].to_s) 
        self.contents.draw_text(570-wd4+3, 147+15+3, 160, 64, $game_variables[1501].to_s) 
        self.contents.font.color = Color.new(190,0,0) 
        self.contents.draw_text(570-wd4, 147+15, 160, 64, $game_variables[1501].to_s)   
        self.contents.font.size -= 2
      end
      if $game_switches[1502] == true
        wd4 = self.contents.text_size($game_variables[1502].to_s).width   
        self.contents.font.color = Color.new(110,110,110, 85) 
        self.contents.draw_text(48+2, 195+15+2, 380, 64, OBJECTIF2)       
        self.contents.draw_text(48+3, 195+15+2, 380, 64, OBJECTIF2)
        self.contents.draw_text(48+3,195+15-1, 380, 64, OBJECTIF2)   
        self.contents.draw_text(48+2, 195+15-1, 380, 64, OBJECTIF2)     
        self.contents.font.color = Color.new(60,60,60) 
        self.contents.draw_text(48, 195+15, 380, 64, OBJECTIF2)   
        self.contents.draw_text(48+1, 195+15, 380, 64, OBJECTIF2)
        self.contents.draw_text(48, 195+15-1, 380, 64, OBJECTIF2)
        self.contents.font.size += 2
        self.contents.font.color = Color.new(242,118,214) 
        self.contents.draw_text(570-wd4+3, 195+15, 160, 64, $game_variables[1502].to_s) 
        self.contents.draw_text(570-wd4, 195+15+3, 160, 64, $game_variables[1502].to_s) 
        self.contents.draw_text(570-wd4+1, 195+15+3, 160, 64, $game_variables[1502].to_s) 
        self.contents.draw_text(570-wd4+2, 195+15+3, 160, 64, $game_variables[1502].to_s) 
        self.contents.draw_text(570-wd4+3, 195+15+3, 160, 64, $game_variables[1502].to_s) 
        self.contents.font.color = Color.new(190,0,0) 
        self.contents.draw_text(570-wd4, 195+15, 160, 64, $game_variables[1502].to_s)   
        self.contents.font.size -= 2
      end
      if $game_switches[1503] == true
        wd4 = self.contents.text_size($game_variables[1503].to_s).width   
        self.contents.font.color = Color.new(110,110,110, 85) 
        self.contents.draw_text(48+2, 243+15+2, 380, 64, OBJECTIF3)       
        self.contents.draw_text(48+3, 243+15+2, 380, 64, OBJECTIF3)
        self.contents.draw_text(48+3,243+15-1, 380, 64, OBJECTIF3)   
        self.contents.draw_text(48+2, 243+15-1, 380, 64, OBJECTIF3)     
        self.contents.font.color = Color.new(60,60,60) 
        self.contents.draw_text(48, 243+15, 380, 64, OBJECTIF3)   
        self.contents.draw_text(48+1, 243+15, 380, 64, OBJECTIF3)
        self.contents.draw_text(48, 243+15-1, 380, 64, OBJECTIF3)
        self.contents.font.size += 2
        self.contents.font.color = Color.new(242,118,214) 
        self.contents.draw_text(570-wd4+3, 243+15, 160, 64, $game_variables[1503].to_s) 
        self.contents.draw_text(570-wd4, 243+15+3, 160, 64, $game_variables[1503].to_s) 
        self.contents.draw_text(570-wd4+1, 243+15+3, 160, 64, $game_variables[1503].to_s) 
        self.contents.draw_text(570-wd4+2, 243+15+3, 160, 64, $game_variables[1503].to_s) 
        self.contents.draw_text(570-wd4+3, 243+15+3, 160, 64, $game_variables[1503].to_s) 
        self.contents.font.color = Color.new(190,0,0) 
        self.contents.draw_text(570-wd4, 243+15, 160, 64, $game_variables[1503].to_s)   
        self.contents.font.size -= 2
      end
      if $game_switches[1504] == true
        wd4 = self.contents.text_size($game_variables[1504].to_s).width   
        self.contents.font.color = Color.new(110,110,110, 85) 
        self.contents.draw_text(48+2, 291+15+2, 380, 64, OBJECTIF4)       
        self.contents.draw_text(48+3, 291+15+2, 380, 64, OBJECTIF4)
        self.contents.draw_text(48+3,291+15-1, 380, 64, OBJECTIF4)   
        self.contents.draw_text(48+2, 291+15-1, 380, 64, OBJECTIF4)     
        self.contents.font.color = Color.new(60,60,60) 
        self.contents.draw_text(48, 291+15, 380, 64, OBJECTIF4)   
        self.contents.draw_text(48+1, 291+15, 380, 64, OBJECTIF4)
        self.contents.draw_text(48, 291+15-1, 380, 64, OBJECTIF4)
        self.contents.font.size += 2
        self.contents.font.color = Color.new(242,118,214) 
        self.contents.draw_text(570-wd4+3, 291+15, 160, 64, $game_variables[1504].to_s) 
        self.contents.draw_text(570-wd4, 291+15+3, 160, 64, $game_variables[1504].to_s) 
        self.contents.draw_text(570-wd4+1, 291+15+3, 160, 64, $game_variables[1504].to_s) 
        self.contents.draw_text(570-wd4+2, 291+15+3, 160, 64, $game_variables[1504].to_s) 
        self.contents.draw_text(570-wd4+3, 291+15+3, 160, 64, $game_variables[1504].to_s) 
        self.contents.font.color = Color.new(190,0,0) 
        self.contents.draw_text(570-wd4, 291+15, 160, 64, $game_variables[1504].to_s)   
        self.contents.font.size -= 2
      end
      if $game_switches[1505] == true
        wd4 = self.contents.text_size($game_variables[1505].to_s).width   
        self.contents.font.color = Color.new(110,110,110, 85) 
        self.contents.draw_text(48+2, 339+15+2, 380, 64, OBJECTIF5)       
        self.contents.draw_text(48+3, 339+15+2, 380, 64, OBJECTIF5)
        self.contents.draw_text(48+3,339+15-1, 380, 64, OBJECTIF5)   
        self.contents.draw_text(48+2, 339+15-1, 380, 64, OBJECTIF5)     
        self.contents.font.color = Color.new(60,60,60) 
        self.contents.draw_text(48, 339+15, 380, 64, OBJECTIF5)   
        self.contents.draw_text(48+1, 339+15, 380, 64, OBJECTIF5)
        self.contents.draw_text(48, 339+15-1, 380, 64, OBJECTIF5)
        self.contents.font.size += 2
        self.contents.font.color = Color.new(242,118,214) 
        self.contents.draw_text(570-wd4+3, 339+15, 160, 64, $game_variables[1505].to_s) 
        self.contents.draw_text(570-wd4, 339+15+3, 160, 64, $game_variables[1505].to_s) 
        self.contents.draw_text(570-wd4+1, 339+15+3, 160, 64, $game_variables[1505].to_s) 
        self.contents.draw_text(570-wd4+2, 339+15+3, 160, 64, $game_variables[1505].to_s) 
        self.contents.draw_text(570-wd4+3, 339+15+3, 160, 64, $game_variables[1505].to_s) 
        self.contents.font.color = Color.new(190,0,0) 
        self.contents.draw_text(570-wd4, 339+15, 160, 64, $game_variables[1505].to_s)   
        self.contents.font.size -= 2
      end
    end
  end   
end   

class TCARD
  include POKEMON_S_TCARD
 
  def main   
    @tcard = TrainerCardWindow.new(true)
    @tcard.opacity = 0   
    @background = Plane.new(Viewport.new(0,0,640,480))   
    @background.bitmap = RPG::Cache.picture("tcard.png")   
    @badge1 = Sprite.new   
    @badge2 = Sprite.new   
    @badge3 = Sprite.new   
    @badge4 = Sprite.new   
    @badge5 = Sprite.new   
    @badge6 = Sprite.new   
    @badge7 = Sprite.new   
    @badge8 = Sprite.new   
    $game_variables[VAR] = 0   
    unless $game_switches[1001] == true then @badge1.visible = false else @badge1.visible = true and $game_variables[VAR] += 1 end   
    unless $game_switches[1002] == true then @badge2.visible = false else @badge2.visible = true and $game_variables[VAR] += 1 end   
    unless $game_switches[1003] == true then @badge3.visible = false else @badge3.visible = true and $game_variables[VAR] += 1 end   
    unless $game_switches[1004] == true then @badge4.visible = false else @badge4.visible = true and $game_variables[VAR] += 1 end   
    unless $game_switches[1005] == true then @badge5.visible = false else @badge5.visible = true and $game_variables[VAR] += 1 end   
    unless $game_switches[1006] == true then @badge6.visible = false else @badge6.visible = true and $game_variables[VAR] += 1 end   
    unless $game_switches[1007] == true then @badge7.visible = false else @badge7.visible = true and $game_variables[VAR] += 1 end   
    unless $game_switches[1008] == true then @badge8.visible = false else @badge8.visible = true and $game_variables[VAR] += 1 end   
    @badge1.bitmap = RPG::Cache.icon(BADGE1)   
    @badge2.bitmap = RPG::Cache.icon(BADGE2)   
    @badge3.bitmap = RPG::Cache.icon(BADGE3)   
    @badge4.bitmap = RPG::Cache.icon(BADGE4)   
    @badge5.bitmap = RPG::Cache.icon(BADGE5)   
    @badge6.bitmap = RPG::Cache.icon(BADGE6)   
    @badge7.bitmap = RPG::Cache.icon(BADGE7)   
    @badge8.bitmap = RPG::Cache.icon(BADGE8)   
    @badge1.x = BADGE1_X
    @badge1.y = 363 + 12
    @badge2.x = BADGE2_X
    @badge2.y = 363 + 12
    @badge3.x = BADGE3_X
    @badge3.y = 363 + 12
    @badge4.x = BADGE4_X
    @badge4.y = 363 + 12
    @badge5.x = BADGE5_X
    @badge5.y = 363 + 12
    @badge6.x = BADGE6_X
    @badge6.y = 363 + 12
    @badge7.x = BADGE7_X
    @badge7.y = 363 + 12
    @badge8.x = BADGE8_X
    @badge8.y = 363 + 12
    @perso = Sprite.new   
    if $game_variables[1000] == nil or $game_variables[1000] == 0
      @perso.bitmap = RPG::Cache.picture("persogars.png")
    end
    if $game_variables[1000] == 1   
      @perso.bitmap = RPG::Cache.picture("persogars.png")   
    end
    if $game_variables[1000] == 2   
      @perso.bitmap = RPG::Cache.picture("persofille.png")   
    end   
    @perso.x = 434
    @perso.y = 150 + 12   
    Graphics.transition   
    loop do   
      Graphics.update   
      Input.update   
      update   
      if $scene != self   
        break   
      end   
    end   
    Graphics.freeze   
    unless @tcard == nil then @tcard.dispose end
    unless @background == nil then @background.dispose end
    unless @badge1 == nil then @badge1.dispose end
    unless @badge2 == nil then @badge2.dispose end
    unless @badge3 == nil then @badge3.dispose end
    unless @badge4 == nil then @badge4.dispose end
    unless @badge5 == nil then @badge5.dispose end
    unless @badge6 == nil then @badge6.dispose end
    unless @badge7 == nil then @badge7.dispose end
    unless @badge8 == nil then @badge8.dispose end
    unless @perso == nil then @perso.dispose end
  end   
   
  def update   
    if Input.trigger?(Input::C)   
      if @tcard.devant == false
        $game_system.se_play($data_system.cancel_se)   
        $scene = Scene_Map.new   
        return
      end
      if @tcard.devant == true
        @tcard.devant = false
        $game_system.se_play($data_system.decision_se)   
        @badge1.dispose   
        @badge2.dispose   
        @badge3.dispose   
        @badge4.dispose   
        @badge5.dispose   
        @badge6.dispose   
        @badge7.dispose   
        @badge8.dispose   
        @perso.dispose   
        @tcard.dispose
        @tcard = TrainerCardWindow.new(false)
        @tcard.opacity = 0   
        @background.bitmap = RPG::Cache.picture("backcard.png")   
      end
    end
   
    if Input.trigger?(Input::B)   
      $game_system.se_play($data_system.cancel_se)   
      $scene = Scene_Map.new   
      return   
    end   
  end   
end 


class Interpreter
  def ligue_finie
    @total_sec = Graphics.frame_count / Graphics.frame_rate   
    hour = @total_sec / 60 / 60   
    min = @total_sec / 60 % 60   
    sec = @total_sec % 60
    temps = sprintf("%02d:%02d:%02d", hour, min, sec)
    $game_variables[1500] = temps
    $game_switches[1500] = true
  end

  def objectif1
    $game_switches[1501] = true
  end

  def objectif2
    $game_switches[1502] = true
  end

  def objectif3
    $game_switches[1503] = true
  end

  def objectif4
    $game_switches[1504] = true
  end

  def objectif5
    $game_switches[1505] = true
  end

  def fille
    $game_variables[1000] = 2
  end

  def gars
    $game_variables[1000] = 1
  end

  def badge1
    $game_switches[1001] = true
  end

  def badge2
    $game_switches[1002] = true
  end

  def badge3
    $game_switches[1003] = true
  end

  def badge4
    $game_switches[1004] = true
  end

  def badge5
    $game_switches[1005] = true
  end

  def badge6
    $game_switches[1006] = true
  end

  def badge7
    $game_switches[1007] = true
  end

  def badge8
    $game_switches[1008] = true
  end

  def carte_dresseur
    $scene = TCARD.new
  end

end

# Merci à Zellyunie qui a changé les couleurs de l'ancienne version pour
# arranger la mise en page, ce qui m'a donné envi de l'améliorer entièrement.



MAPLINK
lignes 22-29
Code:
      @viewportlink1 = Viewport.new(0, -240, 640, 240)
      @viewportlink1.z = 0
      @viewportlink2 = Viewport.new(640, 0, 320, 480)
      @viewportlink2.z = 0
      @viewportlink3 = Viewport.new(0, 480, 640, 240)
      @viewportlink3.z = 0 
      @viewportlink4 = Viewport.new(-320, 0, 320, 480)
      @viewportlink4.z = 0

remplacer par
Code:
      @viewportlink1 = Viewport.new(0, -240, 640, 240)
      @viewportlink1.z = 1
      @viewportlink2 = Viewport.new(640, 0, 320, 480)
      @viewportlink2.z = 1
      @viewportlink3 = Viewport.new(0, 480, 640, 240)
      @viewportlink3.z = 1 
      @viewportlink4 = Viewport.new(-320, 0, 320, 480)
      @viewportlink4.z = 1

Posté par Krosk le 4 Oct - 18:34 (2008)
Maj Correctif 3

Je n'ai pas spécialement envie de remettre à jour PSP rien que pour la correction de ces bugs, j'attendrai qu'il y 'en a encore d'autres. Mais ils sont relativement "critiques", je poste les modifications à apporter d'abord, à vous d'en faire ce que vous voulez. D'autres corrections serons à venir.

Pokemon_Save
Problème ponctuel de chargement d'un fichier de sauvegarde, déclenché dans des conditions bien précises.
ligne 326
Code:
    end
    filename = "Save#{POKEMON_S::_SAVESLOT + 1}.rxdata"


Remplace par
Code:
    end
    captured = 0
    for i in 1..$data_pokedex.length-1
      if $data_pokedex[i][1]
        captured += 1
      end
    end
    $read_data = [Player.name, Player.id, captured, $map_link]
    filename = "Save#{POKEMON_S::_SAVESLOT + 1}.rxdata"





Pokemon_Data
Problème d'images manquantes alors qu'elles sont présentes
ligne 1265 (c'est avant le dernier end), à copier coller :
Code:
  if FileTest.exist?("Graphics/Battlers")
    picture_data = {}
    directory_list = ["Front_Male/", "Front_Female/", "Back_Male/", "Back_Female/",
      "Shiny_Front_Male/", "Shiny_Front_Female/", "Shiny_Back_Male/",
      "Shiny_Back_Female/", "Icon/", "Eggs/"]
    for name in directory_list   
      directory = explore("Graphics/Battlers/#{name}")
      for file in directory[0]
        picture_data["Graphics/Battlers/#{name}#{file}"] = true
      end
    end
   
    library = File.open("Data/Library.rxdata", "wb")
    Marshal.dump(picture_data, library)
    library.close
  end





Pokemon_Custom
Un petit ajout pour les Zarbi à l'état sauvage et le changement de forme par objet tenu (pour Deoxys: Remplacez item_id == x).
A coller dans un endroit libre du script:
Code:
    # -----------------------------------------------------------------
    #  Zarbi à l'état sauvage
    # -----------------------------------------------------------------
    alias temp_initialize initialize
    def initialize(id_data = 1, level = 1, shiny = false)
      temp_initialize(id_data, level, shiny)
      if name == "ZARBI"
        @form = rand(28) + 1
      end
    end 
   
    # -----------------------------------------------------------------
    #  Objet tenu, changement de forme
    # -----------------------------------------------------------------
    def item_hold=(item_id)
      @item_hold = item_id
      if name == "DEOXYS"
        @form = 5 if item_id == 1
        @form = 0 if item_id != 1
      end
    end





Pokemon_Battle_Trainer
Un léger décalage d'indice qui cause un problème quand on définit le genre d'un Pokémon d'un dresseur par la comande {"GR" => "X"} ...
ligne 91-98
Code:
        # Genre
        if pokemon_data[4] != nil
          pokemon.set_gender(pokemon_data[4])
        end
        # Forme
        if pokemon_data[5] != nil
          pokemon.form = pokemon_data[5]
        end

Remplacer par
Code:
        # Genre
        if pokemon_data[5] != nil
          pokemon.set_gender(pokemon_data[5])
        end
        # Forme
        if pokemon_data[6] != nil
          pokemon.form = pokemon_data[6]
        end





Pokemon_Data
ligne 989
Code:
            elsif $data_pokemon[id].length > 3 or $data_pokemon[id][2][1] == nil

par
Code:
            elsif $data_pokemon[id].length > 3 or $data_pokemon[id][2] == nil or $data_pokemon[id][2][1] == nil

Posté par Krosk le 2 Nov - 17:02 (2008)
Maj Correctif 4 + EDIT
Les bugs ne sont pas critiques, mais ca ne prends pas de temps pour les corriger. PSP V0.7 sera par contre corrigé.

Module RPG
Problème d'animation de combat: flash à l'écran persistant
ligne 133-134
Code:
      @@_animations.clear
    end

ajoutez la ligne self.viewport.update if self.viewport != nil
Code:
      @@_animations.clear
      self.viewport.update if self.viewport != nil
    end




Pokemon_Types
Léger problème de texte au combat, lié aux types
Ligne 79
Code:
alias_type_string(type)

remplacer par
Code:
return alias_type_string(type) if alias_type_string(type) != nil




Correction d'un problème de noms de zones innaparentes quand le jeu est compilé
Scene_Debug
Lignes 1520
Code:
    file = File.open("Data/data_mapzone.rxdata", "wb")
    Marshal.dump($data_mapzone, file)
    file.close
  end

Remplacer par
Code:
    file = File.open("Data/data_mapzone.rxdata", "wb")
    Marshal.dump($data_mapzone, file)
    file.close
   
    file = File.open("Data/data_zone.rxdata", "wb")
    Marshal.dump($data_zone, file)
    file.close
  end


MAPPANEL
Ligne 71
Code:
    $data_mapzone = load_data("Data/data_mapzone.rxdata")

Remplacer par
Code:
    $data_zone = load_data("Data/data_zone.rxdata")
    $data_mapzone = load_data("Data/data_mapzone.rxdata")

Posté par Krosk le 10 Déc - 18:22 (2008)
Correctif 5 temporaire
Le post suivant regroupe quelques corrections manuelles à appliquer, et fera objet d'un correctif complet quand il sera plus fourni.

Scene_Debug
La MAJ BDD remet par défaut les ID Bis, cette correction corrige ce bug.
Ligne 1250
Code:
      # ID secondaire
      $data_enemies[id].maxsp = id


A remplacer par :
Code:
      # ID secondaire
      $data_enemies[id].maxsp = Pokemon_Info.id_bis(id)




DAYCARE
Une erreur dans le script de la pension, qui donne un bug quand 2 Pokémons sont placés et se reproduisent.
Ligne 100 et ligne 102
Code:
            if   breed_female.female? or breed_male.male?
              set_egg(Pokemon.new.new_egg(breed_female, breed_male))
            elsif breed_male.female? or breed_female.male?
              set_egg(Pokemon.new.new_egg(breed_male, breed_female))
            end

Remplacer par :
Code:
            if   breed_female.female? or breed_male.male?
              set_breed_egg(Pokemon.new.new_egg(breed_female, breed_male))
            elsif breed_male.female? or breed_female.male?
              set_breed_egg(Pokemon.new.new_egg(breed_male, breed_female))
            end



Pokemon_Save (ajout le 10/12/08 )
Problème de sauvegarde pour les fichiers dont l'ID joueur commence par 0.

Ligne 198
remplacer:
Code:
@save_game_window_list[i].contents.draw_text(285, 42, 252, 48, sprintf("%05d",id) , 2)

par
Code:
@save_game_window_list[i].contents.draw_text(285, 42, 252, 48, id , 2)

Posté par Krosk le 17 Jan - 19:59 (2009)
Correctif 6

Probleme de Pokédex persistant
Scene_Title, ligne 546
Remplacer :
Code:
    Player.trainer_trade_code

par :
Code:
    Player.trainer_trade_code
    $data_pokedex = Array.new($data_pokemon.length-1)
    $data_pokedex[0] = false # Possède ou non
    for i in 1..$data_pokemon.length-1
      $data_pokedex[i] = [false, false] # Vu, Capturé
    end



Problème d'index sur le Pokédex régional (erreur corrigée)
Remplacer Pokemon_Pokedex par :
Spoiler
Code:
#==============================================================================
# ■ Pokemon_Pokedex
# Pokemon Script Project - Krosk
# 18/07/07
# 07/09/08 - révision v0.7, Pokédex de Shaolan (PSP4G) simplifié et optimisé
#             (crédits : Shaolan, Slash)
# 03/01/09 - révision
#-----------------------------------------------------------------------------
# Scène modifiable
#-----------------------------------------------------------------------------
# Pokédex
#-----------------------------------------------------------------------------

module POKEMON_S
  class Pokemon_Pokedex #(Numérique)
    def initialize(index = 0, show = true)
      @index = index
      @show = show
      @table = []
      # Regional
      if POKEMON_S._DEXREG
        for id in 1..$data_pokedex.length-1
          @table[Pokemon_Info.id_bis(id)] = id
        end
        @table.shift # débarasser l'élément 0
        @table.compact!
      else
      # National
        for id in 1..$data_pokedex.length-1
          @table.push(id)
        end
      end
    end
   
    def main
      # Fenêtre principale
      # Fond
      @background = Sprite.new
      @background.bitmap = RPG::Cache.picture("PokedexSh.png")
      @background.z = 5
      @backbackground = Sprite.new
      @backbackground.bitmap = RPG::Cache.picture("PokedexShback.png")
      @backbackground.z = 0
     
      # Liste
      @list = []
      for i in 0 .. @table.length-1
        if $data_pokedex[@table[i]][0]
          @list.push(@table[i]) # liste des ID vus
        end
      end
      @pokemon_list = POKEMON_S::Pokemon_List.new(@table, @list, @index, @show)
      @pokemon_list.active = true
     
      # Vu/Capture
      #@pokemon_amount = Window_Base.new(27 - 16, 432 - 16, 420 + 32, 48 + 32)
      @pokemon_amount = Window_Base.new(27 - 16, 70, 155, 400)
      @pokemon_amount.contents = Bitmap.new(155-32, 400-32)
      #@pokemon_amount.contents = Bitmap.new(420, 48)
      @pokemon_amount.contents.font.name = $fontface
      @pokemon_amount.contents.font.size = $fontsize
      @pokemon_amount.contents.font.italic = true
      @pokemon_amount.opacity = 0
      viewed = @list.length.to_s
      captured = 0
      for element in @list
        if $data_pokedex[element][1]
          captured += 1
        end
      end
      #@pokemon_amount.contents.draw_text(0, 0, 420, 48, "VUS " + viewed, 0)
      #@pokemon_amount.contents.draw_text(0, 0, 420, 48, "CAPTURéS " + captured.to_s, 2)
      @pokemon_amount.contents.draw_text(0, 0, 155-32, 35, "VUS", 1)# + viewed, 1)
      @pokemon_amount.contents.draw_text(0, 78, 155-32, 35, "PRIS", 1)# + captured.to_s, 1)
      rect = Rect.new (32, 35, 120, 3)
      @pokemon_amount.contents.fill_rect(rect, Color.new(0, 0, 0))
      rect = Rect.new (30, 33, 120, 3)
      @pokemon_amount.contents.fill_rect(rect, Color.new(255, 255, 255))
      rect = Rect.new (32, 78 + 35, 120, 3)
      @pokemon_amount.contents.fill_rect(rect, Color.new(0, 0, 0))
      rect = Rect.new (30, 78 + 33, 120, 3)
      @pokemon_amount.contents.fill_rect(rect, Color.new(255, 255, 255))
      string_viewed = sprintf("% 3s", viewed)
      string_captured = sprintf("% 3s", captured.to_s)
      @pokemon_amount.contents.draw_text(0, 37, 155-32, 35, string_viewed, 1)
      @pokemon_amount.contents.draw_text(0, 78 + 37, 155-32, 35, string_captured, 1)
     
      @pokemon_list.update
      @pokemon_list.refresh
      # Fin Fenêtre principale

     
      Graphics.transition
      loop do
        Graphics.update
        Input.update
        update
        if $scene != self
          break
        end
      end
      Graphics.freeze
      @pokemon_list.dispose
      @pokemon_amount.dispose
      @background.dispose
      @backbackground.dispose
    end
   
    def update
      @pokemon_list.update
      @index = @pokemon_list.index
     
      if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        $scene = POKEMON_S::Pokemon_Menu.new(0)
        return
      end
     
      if Input.trigger?(Input::C)
        if @show
          pokemon_id = @table[@index]
        else
          pokemon_id = @list[@index]
        end
        seen = $data_pokedex[pokemon_id][0]
        if seen == false
          $game_system.se_play($data_system.buzzer_se)
          return
        end
        $scene = Pokemon_Detail.new(pokemon_id, @show)
        return
      end
     
      if Input.trigger?(Input::A)
        @show = @show ? false : true
        @index = 0
        @pokemon_list.dispose
        @pokemon_list = POKEMON_S::Pokemon_List.new(@table, @list, @index, @show)
        @pokemon_list.active = true
        @pokemon_list.update
        @pokemon_list.refresh
      end
    end
  end
 
 
  class Pokemon_Detail
    def initialize(id, show, mode = 0)
      @id = id
      @show = show
      @mode = mode
      @table = []
      # Regional
      if POKEMON_S._DEXREG
        for id in 1..$data_pokedex.length-1
          @table[Pokemon_Info.id_bis(id)] = id
        end
        @table.shift # débarasser l'élément 0
        @table.compact!
      else
      # National
        for id in 1..$data_pokedex.length-1
          @table.push(id)
        end
      end
    end
   
    def main
      # Fenêtre détail
      @background = Sprite.new
      @background.bitmap = RPG::Cache.picture("PokedexShfond1.png")
      @background.z = 0
     
      # Sprite
      @pokemon_sprite = Sprite.new
      @pokemon_sprite.x = 26
      @pokemon_sprite.y = 71
      @pokemon_sprite.z = 10
      @pokemon_sprite.visible = false
     
      # Identité
      @data_window = Window_Base.new(233-16, 76-16, 370+32, 196+32)
      @data_window.contents = Bitmap.new(370, 196)
      color = Color.new(60,60,60)
      @data_window.contents.font.name = $fontface
      @data_window.contents.font.size = $fontsizebig
      @data_window.contents.font.color = color
      @data_window.opacity = 0
      @data_window.z = 10
      @data_window.visible = false
     
      # Descr
      @text_window = Window_Base.new(60 - 16, 252 - 16 + 51, 550 + 32, 160 + 32)
      @text_window.contents = Bitmap.new(550 , 160)
      @text_window.contents.font.name = $fontface
      @text_window.contents.font.size = $fontsize
      @text_window.contents.font.color = color
      @text_window.opacity = 0
      @text_window.z = 10
      @text_window.visible = false
     
      @list = []
      for i in 0.. @table.length-1
        if $data_pokedex[@table[i]][0]
          @list.push(@table[i])
        end
      end
     
      if @mode == 0
        filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
        if FileTest.exist?(filename)
          Audio.se_play(filename)
        end
      end
     
      data_refresh
      @background.visible = false
      @pokemon_sprite.visible = false
      @data_window.visible = false
      @text_window.visible = false
      case @mode
      when 0
        @background.visible = true
        @pokemon_sprite.visible = true
        @data_window.visible = true
        @text_window.visible = true
      when 1
        refresh_zone
      when 2
        refresh_cri
      when 3
        refresh_tail
      end
       
      Graphics.transition
      loop do
        Graphics.update
        Input.update
        update
        if $scene != self
          break
        end
      end
      Graphics.freeze
      @background.dispose
      @data_window.dispose
      @pokemon_sprite.dispose
      @text_window.dispose
    end
   
    def update
      if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        Graphics.freeze
        hide
        if @show
          index = @table.index(@id)
        else
          index = @list.index(@id)
        end
        $scene = Pokemon_Pokedex.new(index, @show)
        return
      end
     
      if Input.trigger?(Input::C) and @mode == 1
        Graphics.freeze
        hide
        $game_system.se_play($data_system.decision_se)
        $game_temp.map_temp = ["PKDX", false, $game_map.map_id, $game_player.x,
          $game_player.y, $game_player.direction, $game_player.character_name,
          $game_player.character_hue, $game_player.step_anime,
          $game_system.menu_disabled, POKEMON_S::_MAPLINK, @id, @show]
        $game_temp.transition_processing = true
        $game_temp.transition_name = ""
        POKEMON_S::_MAPLINK = false
       
        $scene = Scene_Map.new
        $game_map.setup(POKEMON_S::_WMAPID)
        $game_player.moveto(9, 7)
        $game_map.autoplay
        $game_map.update
        return
      end
     
      if Input.trigger?(Input::C) and @mode == 2
        filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
        if FileTest.exist?(filename)
          Audio.se_play(filename)
        end
      end
     
      if Input.trigger?(Input::DOWN)
        Graphics.freeze
        index = @list.index(@id)
        if @id == @list.last
          @id = @list.first
        else
          @id = @list[index+1]
        end
        hide
        Graphics.transition(5)
        Graphics.freeze
        @mode = 0
        data_refresh
        Graphics.transition
        filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
        if FileTest.exist?(filename)
          Audio.se_play(filename)
        end
      end
     
      if Input.trigger?(Input::UP)
        Graphics.freeze
        index = @list.index(@id)
        if @id == @list.first
          @id = @list.last
        else
          @id = @list[index-1]
        end
        hide
        Graphics.transition(5)
        Graphics.freeze
        @mode = 0
        data_refresh
        Graphics.transition
        filename = "Audio/SE/Cries/" + sprintf("%03d", @id) + "Cry.wav"
        if FileTest.exist?(filename)
          Audio.se_play(filename)
        end
      end
     
      if Input.trigger?(Input::A) and @pokemon_sprite.visible == false
        @show = @show ? false : true
        @index = 0
        @pokemon_list.dispose
        @pokemon_list = POKEMON_S::Pokemon_List.new(@list, @index, @show)
        @pokemon_list.active = true
        @pokemon_list.update
        @pokemon_list.refresh
      end
     
      if Input.trigger?(Input::LEFT)
        if @mode > 0
          Graphics.freeze
          hide
          #Graphics.transition(1)
          @mode -= 1
          #Graphics.freeze
          case @mode
          when 0
            data_refresh
          when 1
            refresh_zone
          when 2
            refresh_cri
          when 3
            refresh_tail
          end
          Graphics.transition(1)
        end
      end
     
      if Input.trigger?(Input::RIGHT)
        if @mode < 3
          Graphics.freeze
          hide
          #Graphics.transition(1)
          @mode += 1
          #Graphics.freeze
          case @mode
          when 0
            data_refresh
          when 1
            refresh_zone
          when 2
            refresh_cri
          when 3
            refresh_tail
          end
          Graphics.transition(1)
        end
      end
    end
   
    def hide
      @background.visible = false
      @pokemon_sprite.visible = false
      case @mode
      when 0
        @data_window.visible = false
        @text_window.visible = false
      when 1
        @text.dispose
      when 2
        @data_window.visible = false
        @text_window.visible = false
      when 3
        @trainer.dispose
        @pokemon_new_sprite.dispose
        @text.dispose
      end
    end
       
   
    def data_refresh
      @background.bitmap = RPG::Cache.picture("PokedexShfond1.png")
      @pokemon_sprite.x = 26
      @pokemon_sprite.y = 71
      @data_window.x = 233-16
      @data_window.y = 76-16
      @pokemon_sprite.visible = true
      @background.visible = true
      @data_window.visible = true
      @text_window.visible = true
     
      @pokemon = $data_pokemon[@id]
      show = $data_pokedex[@id][1]
      ida = sprintf("%03d", @id)
      @pokemon_sprite.bitmap = RPG::Cache.battler("Front_Male/" + ida + ".png", 0)

      if POKEMON_S._DEXREG
        name = "N." + sprintf("%03d", Pokemon_Info.id_bis(@id)) + "  " + @pokemon[0]
      else
        name = "N." + ida + "  " + @pokemon[0]
      end

      if show # Descr accessible
        species = @pokemon[9][1]
        height_data = @pokemon[9][2]
        weight = @pokemon[9][3]
      else
        species = "???"
        height_data = "???"
        weight = "???  "
      end
     
      @data_window.contents.clear
      @data_window.contents.draw_text(15, 0, 370, 47, name)
      @data_window.contents.draw_text(15, 41, 370, 47, "Pokémon " + species)
      @data_window.contents.draw_text(41, 95, 230, 47, "Taille: ")
      @data_window.contents.draw_text(41, 95, 212, 47, height_data, 2)
      @data_window.contents.draw_text(41, 148, 230, 47, "Poids: ")
      @data_window.contents.draw_text(41, 148, 230, 47, weight, 2)
     
      @text_window.contents.clear
      if show
        text = @pokemon[9][0]
        string = string_builder(text, 51)
        string1 = string[0]
        string2 = string[1]
        string3 = string[2]
        string4 = string[3]
        @text_window.contents.draw_text(0, 0, 550, 40, string1)
        @text_window.contents.draw_text(0, 40, 550, 40, string2)
        @text_window.contents.draw_text(0, 80, 550, 40, string3)
        @text_window.contents.draw_text(0, 120, 550, 40, string4)
      end
    end
   
    def refresh_zone
      @background.bitmap = RPG::Cache.picture("PokedexShfond2.png")
      @background.visible = true
      @text = Window_Base.new(32-16, 223-16, 576+32, 47+32)
      @text.contents = Bitmap.new(576, 47)
      @text.contents.font.name = $fontface
      @text.contents.font.size = $fontsizebig
      @text.contents.font.color = Color.new(60,60,60)
      @text.contents.draw_text(0, 0, 576, 47, "OUVRIR LA CARTE", 1)
      @text.opacity = 0
    end
   
    def refresh_cri
      @background.bitmap = RPG::Cache.picture("PokedexShfond3.png")
      @pokemon_sprite.visible = true
      @background.visible = true
      @data_window.visible = true
      @pokemon_sprite.x = 51
      @pokemon_sprite.y = 75
      @data_window.x = 211 - 16
      @data_window.y = 75 - 5
      @data_window.contents.clear
      @data_window.contents.draw_text(0, 0, 339, 47, "CRI DE")
      @data_window.contents.draw_text(0, 41, 339, 47, @pokemon[0])
    end
   
    def refresh_tail
      @background.bitmap = RPG::Cache.picture("PokedexShfond4.png")
      @background.visible = true
      @pokemon_new_sprite = Sprite.new
      ida = sprintf("%03d", @id)
      @pokemon_new_sprite.bitmap = RPG::Cache.battler("Front_Male/" + ida + ".png", 0)
      @pokemon_new_sprite.color = Color.new(0, 0, 0, 255)
     
      @trainer = Sprite.new
      @trainer.bitmap = RPG::Cache.battler("trainer000.png", 0)
      @trainer.color = Color.new(0, 0, 0, 255)
     
      sizes = []
      for sprite in [@trainer, @pokemon_new_sprite]
        i = j = 0
        while sprite.bitmap.get_pixel(i,j).alpha == 0
          i += 1
          if i > sprite.bitmap.width
            i = 0
            j += 1
          end
        end
        up_pix = j
        i = 0
        j = sprite.bitmap.height
        while sprite.bitmap.get_pixel(i,j).alpha == 0
          i += 1
          if i > sprite.bitmap.width
            i = 0
            j -= 1
          end
        end
        down_pix = j
        sizes.push( down_pix-up_pix + 0.0 )
        sizes.push( down_pix )
      end
     
      if $data_pokemon[@id][9][2].to_f > 1.50
        zoom_pok = 1.00
        zoom_dre = 1.50 / $data_pokemon[@id][9][2].to_f * sizes[2] / sizes[0]
      else
        zoom_pok = $data_pokemon[@id][9][2].to_f/1.50 * sizes[0] / sizes[2]
        zoom_dre = 1.00
      end
     
      @pokemon_new_sprite.ox = @pokemon_new_sprite.bitmap.width/2
      @pokemon_new_sprite.oy = sizes[3]#@pokemon_new_sprite.bitmap.height
      @pokemon_new_sprite.x = 141 + @pokemon_new_sprite.ox
      @pokemon_new_sprite.y = 92 + 160#@pokemon_new_sprite.oy
     
      @trainer.ox = @trainer.bitmap.width/2
      @trainer.oy = sizes[1]#@trainer.bitmap.height
      @trainer.x = 339 + @trainer.ox
      @trainer.y = 92 + 160 #@trainer.oy
     
      @pokemon_new_sprite.zoom_x = @pokemon_new_sprite.zoom_y = zoom_pok
      @trainer.zoom_x = @trainer.zoom_y = zoom_dre
     
      @text = Window_Base.new(32-16, 367-16, 576+32, 47+32)
      @text.contents = Bitmap.new(576, 47)
      @text.contents.font.name = $fontface
      @text.contents.font.size = $fontsizebig
      @text.contents.font.color = Color.new(60,60,60)
      @text.contents.draw_text(0, 0, 576, 47, "TAILLE COMPARE A #{Player.name}", 1)
      @text.opacity = 0
    end
   
    def string_builder(text, limit)
      length = text.length
      full1 = false
      full2 = false
      full3 = false
      full4 = false
      string1 = ""
      string2 = ""
      string3 = ""
      string4 = ""
      word = ""
      for i in 0..length
        letter = text[i..i]
        if letter != " " and i != length
          word += letter.to_s
        else
          word = word + " "
          if (string1 + word).length < limit and not(full1)
            string1 += word
            word = ""
          else
            full1 = true
          end
         
          if (string2 + word).length < limit and not(full2)
            string2 += word
            word = ""
          else
            full2 = true
          end
         
          if (string3 + word).length < limit and not(full3)
            string3 += word
            word = ""
          else
            full3 = true
          end
         
          if (string4 + word).length < limit and not(full4)
            string4 += word
            word = ""
          else
            full4 = true
          end
        end
      end
      return [string1, string2, string3, string4]
    end
   
   
  end
 
 
  class Pokemon_List < Window_Selectable
    def initialize(table, id_list = [], menu_index = 0, show = true)
      # show montre les pokémons intermédiaires
      # id_list liste des pokémons vu/attrapés
      #super(50-16, 48-16, 560+32, 387+32, 43)
      @hauteur = 35
      super(340, 32, 560+32, 384+32, @hauteur)#(640 - 320, 48-16, 560+32, 387+32, 43)
      @index = menu_index
      @table = table
      @id_list = id_list
      @last = id_list[-1]
      @show = show
      self.opacity = 0
      if @show
        value = @table.index(@last)
        value += 1 if value != nil
      else
        value = id_list.length
      end
      if value == nil
        value = 1
        @last = 1
      end
      @flag_up = 0
      @flag_down = 0
      @item_max = value
      @pokeball = Sprite.new
      @pokeball.bitmap = RPG::Cache.picture("PokedexShBall.png")
      @pokeball.ox = 150
      @pokeball.oy = 150
      @pokeball.y = 240
      @pokeball.z = 6
      self.contents = Bitmap.new(width - 32, value * @hauteur)
      self.contents.font.name = $fontface
      self.contents.font.size = $fontsize
      @sprite_array = []
      for i in 1..5
        sprite = Sprite.new
        sprite.z = 4
        sprite.x = 185
        sprite.y = -4 + 160*(i-2)
        @sprite_array.push(sprite)
      end
      sprite_refresh
      @pokeball.angle = - @index * 22.5
    end
   
    def dispose
      super
      for sprite in @sprite_array
        sprite.dispose
      end
      @pokeball.dispose
    end
   
    def update
      if @flag_up > 0
        @flag_up -= 1
        self.oy -= 7
        #self.oy += 1 if @flag_up == 0
        @pokeball.angle += 4.5
        for sprite in @sprite_array
          sprite.y += 32
        end
        if @flag_up == 0
          @sprite_array.unshift(@sprite_array.pop)
          @sprite_array[0].y -= 800
          sprite_refresh
        end
        return
      end
      if @flag_down > 0
        @flag_down -= 1
        self.oy += 7
        #self.oy -= 1 if @flag_down == 0
        @pokeball.angle -= 4.5
        for sprite in @sprite_array
          sprite.y -= 32
        end
        if @flag_down == 0
          @sprite_array.push(@sprite_array.shift)
          @sprite_array[4].y += 800
          sprite_refresh
        end
        return
      end
      if self.active and @item_max > 0 and @index >= 0
        if Input.repeat?(Input::DOWN)
          if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
             @index < @item_max - @column_max
            $game_system.se_play($data_system.cursor_se)
            @index = (@index + @column_max) % @item_max
            @flag_down += 5
            return
          end
        end
       
        if Input.repeat?(Input::UP)
          if (@column_max == 1 and Input.trigger?(Input::UP)) or
             @index >= @column_max
            $game_system.se_play($data_system.cursor_se)
            @index = (@index - @column_max + @item_max) % @item_max
            @flag_up += 5
            return
          end
        end

        if Input.repeat?(Input::RIGHT)
          if @column_max >= 2 and @index < @item_max - 1
            $game_system.se_play($data_system.cursor_se)
            @index += 1
          end
        end

        if Input.repeat?(Input::LEFT)
          if @column_max >= 2 and @index > 0
            $game_system.se_play($data_system.cursor_se)
            @index -= 1
          end
        end

        if Input.repeat?(Input::R)
          if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
            $game_system.se_play($data_system.cursor_se)
            @index = [@index + self.page_item_max - 2, @item_max - 1].min
            self.top_row += self.page_row_max
            sprite_refresh
          end
        end

        if Input.repeat?(Input::L)
          if self.top_row > 0
            $game_system.se_play($data_system.cursor_se)
            @index = [@index - self.page_item_max + 2, 0].max
            self.top_row -= self.page_row_max
            sprite_refresh
          end
        end
      end
     
      if self.active and @help_window != nil
        update_help
      end
     
      update_cursor_rect
   
      if @index < 6 and self.oy != 35 + (4-@index) * @hauteur
        self.oy = -(35 + (4-@index) * @hauteur)
      end
    end
   
    def update_cursor_rect
      self.cursor_rect.empty
      row = @index / @column_max
      if row < self.top_row + 5
        self.top_row = row - 5
      end
      if row > self.top_row + (self.page_row_max - 5)
        self.top_row = row - (self.page_row_max - 5)
      end
    end
   
    def sprite_refresh
      for i in 0..4
        if not @show and $data_pokedex[@id_list[(@index+i-2)%@id_list.length]][0]
          @sprite_array[i].bitmap = RPG::Cache.battler("Front_Male/#{sprintf('%03d', @id_list[(@index+i-2)%@id_list.length])}.png", 0)
        elsif @show
          if $data_pokedex[@table[(@index+i-2)%(@table.index(@last)+1)]][0] #(@index+i-2)%@last + 1)
            @sprite_array[i].bitmap = RPG::Cache.battler("Front_Male/#{sprintf('%03d', @table[(@index+i-2)%@last])}.png", 0) 
          else
            @sprite_array[i].bitmap = RPG::Cache.battler("Front_Male/000.png", 0)
          end
        end
      end
    end
   
    def refresh
      self.contents.clear
      normal_color = Color.new(60,60,60)
      self.contents.font.color = normal_color
      i = 0 # désigne l'entrée
     
      for value in @table
        if @id_list.include?(value)
          i += 1
          ida = sprintf("%03d", @table.index(value) + 1)
          string = "  N." + ida
          self.contents.draw_text(10, @hauteur * (i-1), 480, @hauteur, string)
          string = Pokemon_Info.name(value)
          self.contents.draw_text(110, @hauteur * (i-1), 300, @hauteur, string)
          if $data_pokedex[value][1]
            bitmap = RPG::Cache.picture("Pokedexball.png")
            self.contents.blt(80, 5 + @hauteur * (i-1), bitmap, Rect.new(0, 0, 24, 24))
          end
        elsif @show and i < @table.index(@last) + 1
          i += 1
          ida = sprintf("%03d", @table.index(value) + 1)
          string = "  N." + ida
          self.contents.draw_text(10, @hauteur * (i-1), 480, @hauteur, string)
          string = "-------"
          self.contents.draw_text(110, @hauteur * (i-1), 300, @hauteur, string)
        elsif i >= @table.index(@last) + 1
          break
        else
          next
        end
       
      end
    end
   
  end
end


-- 17/01/08

Problème à l'utilisation de la commande d'affichage de l'argent (fond non apparent)
Window_Message (dans les scripts modifiés)
Ligne 218
Code:
            @gold_window.opacity = self.opacity
            @gold_window.back_opacity = self.back_opacity

à remplacer par
Code:
            @gold_window.opacity = 255
            @gold_window.back_opacity = 255



Problème de décision d'attaque, qui lance des LUTTE alors qu'il reste des PP aux attaques
Trainer IA
Remplacer tous les
Code:
rate = 0

par
Code:
rate = 0.5



Message de défaite non apparent dans un combat contre un dresseur
Pokemon_Battle_Trainer
remplacez à la ligne 695 :
Code:
      end_battle
    end

par
Code:
      end_battle
    end
   
    def end_battle_defeat
      $battle_var.result_defeat = true
      list_string = Trainer_Info.string_defeat(@trainer_id)
      draw_text(list_string)
      wait_hit
     
      wait(40)
      $pokemon_party.money /= 2
      if not(@lose)
        if $game_variables[1] == 0
          print("Réglez votre point de retour!")
        else
          $game_map.setup($game_variables[1])
          $game_map.display_x = $game_variables[2]
          $game_map.display_y = $game_variables[3]
          $game_player.moveto($game_variables[2], $game_variables[3])
        end
        $game_temp.common_event_id = 2
      end
      $game_temp.map_bgm = $game_map.bgm
      end_battle(2)
    end



Pokemon_Battle_Trainer
Petite pause quand le dresseur adverse change de Pokémon.
Ligne 389
Code:
        if alive > 1
          wait_hit

Remplacer par
Code:
        wait_hit
        if alive > 1


Pokemon_Battle_Trainer
Dresseur non centré quand on gagne
Ligne 664, remplacer :
Code:
      @enemy_sprite.y -= @enemy_sprite.bitmap.height / 2

par
Code:
      @enemy_sprite.y -= @enemy_sprite.bitmap.height / 2 + 34



Interpreter
Fonction supplémentaire, à insérer dans le script Interpreter, ligne 1056 par exemple
Code:
  # ------------------------------------------------------
  # effectif_equipe
  #   Compte combien de membre appelable au combat
  # ------------------------------------------------------
  def effectif_equipe
    resultat = 0
    for member in $pokemon_party.actors
      if not member.egg?
        resultat += 1
      end
    end
    return resultat
  end

Posté par Krosk le 17 Jan - 20:08 (2009)
Correctif 6 suite

Pokemon_Data
- Correction de valeurs incorrectes dans la bdd
- Nouvelle méthode d'importation de données de Pokémons (ie un Pokémon a des valeurs par défaut)
Remplacez Pokemon_Data par
http://eventgame.1allo.com/psproject/script/Pokemon_Data.txt

ou bien par :

http://www.mediafire.com/download.php?mmqj0jlkhdv

Posté par Krosk le 4 Mar - 19:08 (2009)
C 7

Attention, un résidus de code est resté dans PSPv0.7 (il l'est en tout cas dans la version téléchargeable).

Dans le script Main :
Code:
    file = File.open("data.txt", "w")
    for i in 1..493
      file.write("$data_pokemon[#{i}] = #{$data_pokemon[i].inspect}\n")
    end
    file.close


Ce résidu génère au démarrage de votre jeu, un fichier data.txt (dans le dossier de votre jeu) qui est votre base de donnée complète de Pokémon. Avant de distribuer votre jeu, supprimez ce fichier, et les lignes de code résiduelles, sinon vous pourrez vous faire piquer votre BDD !

Posté par Krosk le 14 Juil - 20:21 (2009)
Correction d'un bug dans l'utilisation de la commande évènement ajouter / retirer un objet.

Script Pokemon_Party, ligne 356 :
Code:
    def add_item(id, amount = 1)
      if $data_item[id] == nil or Item.name(id) == ""
        return
      end
      socket = Item.socket(id)
      index = bag_list(socket).index(id)
      if index == nil # ne possède pas cet item
        if Item.holdable?(id)
          @bag[socket].push([id, amount])
        else
          @bag[socket].push([id, 1])
        end
      else
        @bag[socket][index][1] += amount
        if not Item.holdable?(id) and @bag[socket][index][1] > 1
          @bag[socket][index][1] = 1
        end
        if @bag[socket][index][1] < 0
          @bag[socket][index][1] = 0
        end
      end
    end

à remplacer par :
Code:
    def add_item(id, amount = 1)
      if $data_item[id] == nil or Item.name(id) == ""
        return
      end
      socket = Item.socket(id)
      index = bag_list(socket).index(id)
      if index == nil and amount > 0 # ne possède pas cet item
        if Item.holdable?(id)
          @bag[socket].push([id, amount])
        else
          @bag[socket].push([id, 1])
        end
      else
        @bag[socket][index][1] += amount
        if not Item.holdable?(id) and @bag[socket][index][1] > 1
          @bag[socket][index][1] = 1
        end
        if @bag[socket][index][1] <= 0
          @bag[socket].delete_at(index)
        end
      end
    end

Posté par Krosk le 24 Juil - 12:46 (2009)
Correction du bug de Magnepiège, par Sphinx :
* confusion des types dans Magnepiège
* texte superposé

Script Pokemon_Battle_Core_1, ligne 335:
Remplacer :
Code:
            if not(switch_able(@actor, @enemy))
              $game_system.se_play($data_system.buzzer_se)
              return
            end

par :
Code:
            @action_window.visible = false
            if not(switch_able(@actor, @enemy))
              $game_system.se_play($data_system.buzzer_se)
              draw_text("Que doit faire", @actor.given_name + "?")
              @action_window.visible = true
              return
            end


ligne 359
et remplacer :
Code:
            @action_window.visible = false
            if not(flee_able(@actor, @enemy))
              $game_system.se_play($data_system.buzzer_se)
              @action_window.visible = true
              draw_text("Que doit faire", @actor.given_name + "?")
              return
            end

par :
Code:
            @action_window.visible = false
            if not(flee_able(@actor, @enemy))
              $game_system.se_play($data_system.buzzer_se)
              draw_text("Que doit faire", @actor.given_name + "?")
              @action_window.visible = true
              return
            end


Script Pokemon_Battle_Core_2 :
Remplacez chacun des deux (lignes 86 et 135) :
Code:
if enemy.ability == 23 or (enemy.ability == 42 and enemy.type_steel?)

par :
Code:
if enemy.ability == 23 or (enemy.ability == 42 and actor.type_steel?)

Posté par Krosk le 27 Juil - 18:31 (2009)
Script Scene_Title, ligne 414:
Code:
        @save_game_window_list[i].contents.draw_text(285, 42, 252, 48, sprintf("%05d",id) , 2)

à remplacer par
Code:
        @save_game_window_list[i].contents.draw_text(285, 42, 252, 48, id , 2)

Posté par Nuri Yuri le 17 Mar - 14:26 (2012)
Script Scene_Map dans les alentours des lignes 200 :
Code:
# Vérification de switch
      if (switch_id == 0 or $game_switches[switch_id]) and tag > 0
        $random_encounter[tag] = $data_encounter[list_id][2]
      end

À remplacer par :
Code:
# Vérification de switch
      if (switch_id == 0 or $game_switches[switch_id]) and tag > 0
        if $random_encounter[tag]
          $random_encounter[tag] += $data_encounter[list_id][2]
        else
          $random_encounter[tag] = $data_encounter[list_id][2]
        end
      end

De base le dernier groupe de la map ayant le tag voulu est prit en compte, les autres sont ignorés, ce code vous permet de mettre plusieurs groupes de monstres sur la carte avec le même tag et de tous les faire prendre en compte.

Cette correction peut s'appliquer aux autres SKs si elle n'est pas présente et que ces lignes sont similaires.

Édit : Si vous souhaitez que PSP fasse la moyenne des chances de rencontre seul vous pouvez ajouter ce code après la correction (dans la méthode) :
Code:
    #Correction des % de rencontre
    1.step(7) do |tag|
      next unless $random_encounter[tag]
      en=0 #Ecarts de niveau
      cn=0 #Nombres de groupes présents
      na=[0] #Nouveau tableau
      $random_encounter[tag].each_index do |i|
        if $random_encounter[tag][i].class==Fixnum
          #C'est un écart de nv et ça indique la présence d'un groupe
          en+=$random_encounter[tag][i]
          cn+=1
        else
          #C'est un pokémon est c'est ajouté dans le nouveau tableau
          #L'array est cloné pour ne pas modifier le data brut.
          na.push($random_encounter[tag][i].clone)
        end
      end
      cn=1 if cn < 1
      na[0]=en/cn #Moyenne de l'écart de niveau
      #Modification des chances de rencontre en fonction du nombre de groupes présents
      na.each_index do |i|
        na[i][2]/=cn if na[i].class==Array and na[i][2]
      end
      $random_encounter[tag]=na
    end