[Combat]Assimilation de compétences

La section pour les scripts de RPG Maker XP !

[Combat]Assimilation de compétences

Message par Amathlog » 18 Juin 2007, 20:46

Vient de la factory
Créateur : Mizuojiro

Il permet d'apprendre des compétences ennemis a vos personnages quand ils utilisent la commande Défense, un pourcentage de réussite peut être configuré et vous pouvez rendre des compétences impossible à apprendre par ce moyen et il est aussi possible d'afficher une animation lorsque le personnage est sur le point d'apprendre une compétence.
L'apprentissage n'est possible non pas quand la commande Défense est lancée mais lorsqu'elle est actionnée.

Je l'ai fait à l'image du systeme d'apprentissage de Breath of Fire (ayant adoré BOF3 ^^)

Il ne devrait pas y avoir de problème.
Tout est expliqué dans le script même :

Code : Tout sélectionner
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
#_/ ¦ Assimilation (par défense)
#_/  Par Eudliel, AOL (Angels of Legacy)
#_/  Le 4/02/2007
#_/-------------------------------------------------------------------
#_/  Apprentissage d'une compétence ennemie lors de la défense de l'un
#_/  de vos personnages.
#_/-------------------------------------------------------------------
#_/  Pour rendre une compétence impossible à apprendre par l'ennemi
#_/  par ce moyen il suffit de créer un attribut "Nolearning"
#_/  et de cocher l'attribut sur la compétence désirée.
#_/  Vous pouvez modifier le nom de l'attribut à cette ligne :
#_/  UNLEARNABLE_ELEMENT = "NOM_ATTRIBUT"
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

module AOL
  # Vous devez ici préciser dans LEARN_OPTION le pourcentage de réussite
  # de l'assimilation.
  LEARN_OPTION = 50
  # Mettre true pour indiquer au joueur le pourcentage de réussite.
  LEARN_INFO = true
  # Faire varier les chances d'assimilation en fonction du pourcentage de HP
  # de la cible.
  LEARN_HP_VARIATION = true
  # Si 0, plus le rapport HP / HP Max est haut plus les chances augmentent.
  # Si 1, plus le rapport HP / HP Max est bas plus les chances augmentent.
  LEARN_VARIATION_TYPE = 1
  # Jouer une animation lorsqu'une compétence est sur le point d'être assimilée.
  ANIM_LEARN = true
  ANIM_ID = 98 # ID de l'animation à jouer
  # Nom de l'attribut qui rend une compétence impossible à apprendre.
  UNLEARNABLE_ELEMENT = "Nolearning"
end

class Game_Battler
 
  attr_accessor :assimilation         # Apprentissage par défense
  alias initialize_Learn_Skill_AOL initialize
  def initialize
    initialize_Learn_Skill_AOL
    @assimilation = false
  end
 
  def assimilation
    return @assimilation
  end
 
  alias skill_effect_Learn_Skill_AOL skill_effect
  def skill_effect(user, skill)
    skill_effect_Learn_Skill_AOL(user, skill)
    if self.assimilation == true and user.is_a?(Game_Enemy)
        prob = AOL::LEARN_OPTION
        if rand(100) < prob
          if not skill.element_set.include?($data_system.elements.index(AOL::UNLEARNABLE_ELEMENT))
            if AOL::ANIM_LEARN == true
            self.animation_id = AOL::ANIM_ID
            self.animation_hit = true           
            end
            self.learn_skill(skill.id)         
          end
        end
    end   
  end

end

class Scene_Battle
  alias make_basic_action_result_Learn_Skill_AOL make_basic_action_result
  def make_basic_action_result
      make_basic_action_result_Learn_Skill_AOL
      if @active_battler.current_action.basic == 1
      @active_battler.assimilation = true
      if AOL::LEARN_HP_VARIATION == true
       if AOL::LEARN_VARIATION_TYPE == 0
        @chance = ((@active_battler.hp.to_f/@active_battler.maxhp.to_f)*AOL::LEARN_OPTION).to_i
        else
        @chance = ((@active_battler.maxhp.to_f/@active_battler.hp.to_f)*AOL::LEARN_OPTION).to_i
       end
      else
      @chance = AOL::LEARN_OPTION
      end
      if @chance > 100
        @chance = 100
      end
      if AOL::LEARN_INFO == true
        @help_window.set_text($data_system.words.guard+" - Assimilation "+@chance.to_s+"%", 1)
        else
        @help_window.set_text($data_system.words.guard, 1)
        end
      return
    end
  end
 
  alias update_phase3_Learn_Skill_AOL update_phase3
  def update_phase3
    update_phase3_Learn_Skill_AOL
      if @active_battler != nil
      @active_battler.assimilation = false
      end
  end
 
end
Avatar de l’utilisateur
Amathlog
Modérateur
Modérateur
 
Message(s) : 1510
Inscription : 14 Jan 2007, 19:53
Meilleurs scores: 2

Retour vers Scripts (RGSS)

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)

cron