O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Fraquezas, resistências e mais um duvida

Iniciado por Mistis, 27/01/2018 às 03:14

27/01/2018 às 03:14 Última edição: 28/01/2018 às 17:14 por Mistis
Teria como eu definir fraquezas e resistência(tipo que tenha fraqueza com fogo e sempre que tomar dano com fogo recebe 200% a mais de dano) para um inimigo? e aproveitando que tenho outra duvida nesse mesmo forum queria saber se tem como tirar o "a,b,c" dos personagens
Ex:
Spoiler
[close]

Quanto aos atributos de fraqueza e resistência eu não posso te ajudar pois também não sei huashua, mas para tirar o "a,b,c" é bem simples, eu modifiquei alguns scripts do próprio RPG Maker e consegui tira-los. Obs: Pode dar algum erro caso você use algum script que modifique "Game_Enemy" e "Game_Troop".

Para usar basta substituir estes comandos.

Game_Enemy
#==============================================================================
# ** Game_Enemy
#------------------------------------------------------------------------------
#  Esta classe gerencia os inimigos. Ela é utilizada internamente pela 
# classe Game_Troop ($game_troop).
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # * Variáveis públicas
  #--------------------------------------------------------------------------
  attr_reader   :index                    # Índice do inimigo na tropa
  attr_reader   :enemy_id                 # ID do inimigo
  attr_reader   :original_name            # Nome original
  attr_accessor :letter                   # Letra associado ao nome
  attr_accessor :plural                   # Flag de várias ocorrencias
  attr_accessor :screen_x                 # Coordenada X na tela
  attr_accessor :screen_y                 # Coordenada Y na tela
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize(index, enemy_id)
    super()
    @index = index
    @enemy_id = enemy_id
    enemy = $data_enemies[@enemy_id]
    @original_name = enemy.name
    @plural = false
    @screen_x = 0
    @screen_y = 0
    @battler_name = enemy.battler_name
    @battler_hue = enemy.battler_hue
    @hp = mhp
    @mp = mmp
  end
  #--------------------------------------------------------------------------
  # * Definição de inimigo
  #--------------------------------------------------------------------------
  def enemy?
    return true
  end
  #--------------------------------------------------------------------------
  # * Unidade aliada
  #--------------------------------------------------------------------------
  def friends_unit
    $game_troop
  end
  #--------------------------------------------------------------------------
  # * Unidade inimiga
  #--------------------------------------------------------------------------
  def opponents_unit
    $game_party
  end
  #--------------------------------------------------------------------------
  # * Aquisição das informçãoes do inimigo
  #--------------------------------------------------------------------------
  def enemy
    $data_enemies[@enemy_id]
  end
  #--------------------------------------------------------------------------
  # * Lista com características do objeto
  #--------------------------------------------------------------------------
  def feature_objects
    super + [enemy]
  end
  #--------------------------------------------------------------------------
  # * Nome de exibição
  #--------------------------------------------------------------------------
  def name
    @original_name + (@plural ? letter : "")
  end
  #--------------------------------------------------------------------------
  # * Aquisição do valor base do parâmetro
  #     param_id : ID do parâmetro
  #--------------------------------------------------------------------------
  def param_base(param_id)
    enemy.params[param_id]
  end
  #--------------------------------------------------------------------------
  # * Aquisição de experiência
  #--------------------------------------------------------------------------
  def exp
    enemy.exp
  end
  #--------------------------------------------------------------------------
  # * Aquisição de dinheiro
  #--------------------------------------------------------------------------
  def gold
    enemy.gold
  end
  #--------------------------------------------------------------------------
  # * Lista de itens derrubados
  #--------------------------------------------------------------------------
  def make_drop_items
    enemy.drop_items.inject([]) do |r, di|
      if di.kind > 0 && rand * di.denominator < drop_item_rate
        r.push(item_object(di.kind, di.data_id))
      else
        r
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Modificador de taxa de aquisição de itens
  #--------------------------------------------------------------------------
  def drop_item_rate
    $game_party.drop_item_double? ? 2 : 1
  end
  #--------------------------------------------------------------------------
  # * Aquisição das informações do item
  #     kind    : tipo do item
  #     data_id : ID do item
  #--------------------------------------------------------------------------
  def item_object(kind, data_id)
    return $data_items  [data_id] if kind == 1
    return $data_weapons[data_id] if kind == 2
    return $data_armors [data_id] if kind == 3
    return nil
  end
  #--------------------------------------------------------------------------
  # * Definição de uso de sprites
  #--------------------------------------------------------------------------
  def use_sprite?
    return true
  end
  #--------------------------------------------------------------------------
  # * Aquisição do coordenada Z na tela
  #--------------------------------------------------------------------------
  def screen_z
    return 100
  end
  #--------------------------------------------------------------------------
  # * Execução dos efeitos de dano
  #--------------------------------------------------------------------------
  def perform_damage_effect
    @sprite_effect_type = :blink
    Sound.play_enemy_damage
  end
  #--------------------------------------------------------------------------
  # * Execução dos efeitos de colapso
  #--------------------------------------------------------------------------
  def perform_collapse_effect
    case collapse_type
    when 0
      @sprite_effect_type = :collapse
      Sound.play_enemy_collapse
    when 1
      @sprite_effect_type = :boss_collapse
      Sound.play_boss_collapse1
    when 2
      @sprite_effect_type = :instant_collapse
    end
  end
  #--------------------------------------------------------------------------
  # * Transformação
  #     enemy_id : ID do inimigo
  #--------------------------------------------------------------------------
  def transform(enemy_id)
    @enemy_id = enemy_id
    if enemy.name != @original_name
      @original_name = enemy.name
      @letter = ""
      @plural = false
    end
    @battler_name = enemy.battler_name
    @battler_hue = enemy.battler_hue
    refresh
    make_actions unless @actions.empty?
  end
  #--------------------------------------------------------------------------
  # * Definição de atendimento das condições de uma ação
  #     action : ação
  #--------------------------------------------------------------------------
  def conditions_met?(action)
    method_table = {
      1 => :conditions_met_turns?,
      2 => :conditions_met_hp?,
      3 => :conditions_met_mp?,
      4 => :conditions_met_state?,
      5 => :conditions_met_party_level?,
      6 => :conditions_met_switch?,
    }
    method_name = method_table[action.condition_type]
    if method_name
      send(method_name, action.condition_param1, action.condition_param2)
    else
      true
    end
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [Número de turnos]
  #     param1 : turnos totais
  #     param2 : turnos múltiplos
  #--------------------------------------------------------------------------
  def conditions_met_turns?(param1, param2)
    n = $game_troop.turn_count
    if param2 == 0
      n == param1
    else
      n > 0 && n >= param1 && n % param2 == param1 % param2
    end
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [HP]
  #     param1 : valor mínimo
  #     param2 : valor máximo
  #--------------------------------------------------------------------------
  def conditions_met_hp?(param1, param2)
    hp_rate >= param1 && hp_rate <= param2
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [MP]
  #     param1 : valor mínimo
  #     param2 : valor máximo
  #--------------------------------------------------------------------------
  def conditions_met_mp?(param1, param2)
    mp_rate >= param1 && mp_rate <= param2
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [Estado]
  #     param1 : estado
  #--------------------------------------------------------------------------
  def conditions_met_state?(param1, param2)
    state?(param1)
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [Nível do Grupo]
  #     param1 : nível
  #--------------------------------------------------------------------------
  def conditions_met_party_level?(param1, param2)
    $game_party.highest_level >= param1
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [Switch]
  #     param1 : ID do switch
  #--------------------------------------------------------------------------
  def conditions_met_switch?(param1, param2)
    $game_switches[param1]
  end
  #--------------------------------------------------------------------------
  # * Definição de ação valida
  #     action : ação
  #--------------------------------------------------------------------------
  def action_valid?(action)
    conditions_met?(action) && usable?($data_skills[action.skill_id])
  end
  #--------------------------------------------------------------------------
  # * Definição de ação selecionada aleatóriamente
  #     action_list : lista de ações
  #     rating_zero : valor consideradocomo taxa zero
  #--------------------------------------------------------------------------
  def select_enemy_action(action_list, rating_zero)
    sum = action_list.inject(0) {|r, a| r += a.rating - rating_zero }
    return nil if sum <= 0
    value = rand(sum)
    action_list.each do |action|
      return action if value < action.rating - rating_zero
      value -= action.rating - rating_zero
    end
  end
  #--------------------------------------------------------------------------
  # * Definição de ações
  #--------------------------------------------------------------------------
  def make_actions
    super
    return if @actions.empty?
    action_list = enemy.actions.select {|a| action_valid?(a) }
    return if action_list.empty?
    rating_max = action_list.collect {|a| a.rating }.max
    rating_zero = rating_max - 3
    action_list.reject! {|a| a.rating <= rating_zero }
    @actions.each do |action|
      action.set_enemy_action(select_enemy_action(action_list, rating_zero))
    end
  end
end


Game_Troop
#==============================================================================
# ** Game_Troop
#------------------------------------------------------------------------------
#  Esta classe gerencia o grupo de inimigos e informações relacionadas à
# batalha. Também executa eventos de batalha.
# A instância desta classe é referenciada por $game_troop.
#==============================================================================

class Game_Troop < Game_Unit
  #--------------------------------------------------------------------------
  # * Tabela com caracteres que acompanham o nome dos inimigos
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  # * Variáveis públicas
  #--------------------------------------------------------------------------
  attr_reader   :screen                   # Estado da tela de batalha
  attr_reader   :interpreter              # Interpretador dos eventos
  attr_reader   :event_flags              # Flag de execução de eventos
  attr_reader   :turn_count               # Número de turnos
  attr_reader   :name_counts              # Lista de ocorrência de nomes iguais
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super
    @screen = Game_Screen.new
    @interpreter = Game_Interpreter.new
    @event_flags = {}
    clear
  end
  #--------------------------------------------------------------------------
  # * Lista de membros
  #--------------------------------------------------------------------------
  def members
    @enemies
  end
  #--------------------------------------------------------------------------
  # * Limpeza
  #--------------------------------------------------------------------------
  def clear
    @screen.clear
    @interpreter.clear
    @event_flags.clear
    @enemies = []
    @turn_count = 0
    @names_count = {}
  end
  #--------------------------------------------------------------------------
  # * Aquisição das informações do grupo de inimigos
  #--------------------------------------------------------------------------
  def troop
    $data_troops[@troop_id]
  end
  #--------------------------------------------------------------------------
  # * Configuração do grupo de inimigos
  #     troop_id : ID do grupo de inimigos
  #--------------------------------------------------------------------------
  def setup(troop_id)
    clear
    @troop_id = troop_id
    @enemies = []
    troop.members.each do |member|
      next unless $data_enemies[member.enemy_id]
      enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
      enemy.hide if member.hidden
      enemy.screen_x = member.x
      enemy.screen_y = member.y
      @enemies.push(enemy)
    end
  #--------------------------------------------------------------------------
  # * Inicialização da tonalidade da tela
  #--------------------------------------------------------------------------
  def init_screen_tone
    @screen.start_tone_change($game_map.screen.tone, 0) if $game_map
  end
  #--------------------------------------------------------------------------
  # * Definição de nomes diferentes para inimigos
  #--------------------------------------------------------------------------
  
  #--------------------------------------------------------------------------
  # * Aquisição da tabela de caracteres que acompanham o nome dos inimigos
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  # * Atualização da tela
  #--------------------------------------------------------------------------
  def update
    @screen.update
  end
  #--------------------------------------------------------------------------
  # * Lista dos nomes dos inimigos
  #    Será feita no início do combate. Elimina nomes duplicados
  #--------------------------------------------------------------------------
  def enemy_names
    names = []
    members.each do |enemy|
      next unless enemy.alive?
      next if names.include?(enemy.original_name)
      names.push(enemy.original_name)
    end
    names
  end
  #--------------------------------------------------------------------------
  # * Definição de atendimento das condições de uma página
  #     page : página da condição
  #--------------------------------------------------------------------------
  def conditions_met?(page)
    c = page.condition
    if !c.turn_ending && !c.turn_valid && !c.enemy_valid &&
       !c.actor_valid && !c.switch_valid
      return false      # Condições inválidas. Não executar
    end
    if @event_flags[page]
      return false      
    end
    if c.turn_ending    # No final do turno
      return false unless BattleManager.turn_end?
    end
    if c.turn_valid     # Número de turnos
      n = @turn_count
      a = c.turn_a
      b = c.turn_b
      return false if (b == 0 && n != a)
      return false if (b > 0 && (n < 1 || n < a || n % b != a % b))
    end
    if c.enemy_valid    # Inimigos
      enemy = $game_troop.members[c.enemy_index]
      return false if enemy == nil
      return false if enemy.hp_rate * 100 > c.enemy_hp
    end
    if c.actor_valid    # Herói
      actor = $game_actors[c.actor_id]
      return false if actor == nil 
      return false if actor.hp_rate * 100 > c.actor_hp
    end
    if c.switch_valid   # Switch
      return false if !$game_switches[c.switch_id]
    end
    return true         # Condições Aceitas
  end
  #--------------------------------------------------------------------------
  # * Configuração do evento de batalha
  #--------------------------------------------------------------------------
  def setup_battle_event
    return if @interpreter.running?
    return if @interpreter.setup_reserved_common_event
    troop.pages.each do |page|
      next unless conditions_met?(page)
      @interpreter.setup(page.list)
      @event_flags[page] = true if page.span <= 1
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Aumentar turno
  #--------------------------------------------------------------------------
  def increase_turn
    troop.pages.each {|page| @event_flags[page] = false if page.span == 1 }
    @turn_count += 1
  end
  #--------------------------------------------------------------------------
  # * Cálculo da soma da experiência
  #--------------------------------------------------------------------------
  def exp_total
    dead_members.inject(0) {|r, enemy| r += enemy.exp }
  end
  #--------------------------------------------------------------------------
  # * Cálculo da soma do dinheiro
  #--------------------------------------------------------------------------
  def gold_total
    dead_members.inject(0) {|r, enemy| r += enemy.gold } * gold_rate
  end
  #--------------------------------------------------------------------------
  # * Aquisição do multiplicador de dinheiro
  #--------------------------------------------------------------------------
  def gold_rate
    $game_party.gold_double? ? 2 : 1
  end
  #--------------------------------------------------------------------------
  # * Lista de itens derrubados
  #--------------------------------------------------------------------------
  def make_drop_items
    dead_members.inject([]) {|r, enemy| r += enemy.make_drop_items }
  end
end
end


Desculpe se estiver faltando alguma coisa (explicações, erros de comandos do BBCode, etc), sou novato aqui e não estou acostumado com os comandos do fórum  :math:

Para criar "fraquezas" é bem simples. No database, na aba de criação de inimigos você encontra essa janela:
[close]
Clicando em um campo vazio da mesma você encontrará essa:
[close]
Já está na aba e na opção que precisamos. Ali você define quanto dano determinado elemento causa nesse inimigo. Por padrão, o dano é de 100% e é usado para os elementos não mencionados ali. Ou seja, você só precisa informar os elementos que sofreram alterações. Para calcular o dano basta inserir um novo número sendo que:
- Números abaixo de 100 reduzirão o dano que o inimigo recebe.
- Números acima de 100 aumentarão.

Spoiler
Citação de: Tiago_TLG12 online 27/01/2018 às 18:14
Quanto aos atributos de fraqueza e resistência eu não posso te ajudar pois também não sei huashua, mas para tirar o "a,b,c" é bem simples, eu modifiquei alguns scripts do próprio RPG Maker e consegui tira-los. Obs: Pode dar algum erro caso você use algum script que modifique "Game_Enemy" e "Game_Troop".

Para usar basta substituir estes comandos.

Game_Enemy
#==============================================================================
# ** Game_Enemy
#------------------------------------------------------------------------------
#  Esta classe gerencia os inimigos. Ela é utilizada internamente pela 
# classe Game_Troop ($game_troop).
#==============================================================================

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # * Variáveis públicas
  #--------------------------------------------------------------------------
  attr_reader   :index                    # Índice do inimigo na tropa
  attr_reader   :enemy_id                 # ID do inimigo
  attr_reader   :original_name            # Nome original
  attr_accessor :letter                   # Letra associado ao nome
  attr_accessor :plural                   # Flag de várias ocorrencias
  attr_accessor :screen_x                 # Coordenada X na tela
  attr_accessor :screen_y                 # Coordenada Y na tela
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize(index, enemy_id)
    super()
    @index = index
    @enemy_id = enemy_id
    enemy = $data_enemies[@enemy_id]
    @original_name = enemy.name
    @plural = false
    @screen_x = 0
    @screen_y = 0
    @battler_name = enemy.battler_name
    @battler_hue = enemy.battler_hue
    @hp = mhp
    @mp = mmp
  end
  #--------------------------------------------------------------------------
  # * Definição de inimigo
  #--------------------------------------------------------------------------
  def enemy?
    return true
  end
  #--------------------------------------------------------------------------
  # * Unidade aliada
  #--------------------------------------------------------------------------
  def friends_unit
    $game_troop
  end
  #--------------------------------------------------------------------------
  # * Unidade inimiga
  #--------------------------------------------------------------------------
  def opponents_unit
    $game_party
  end
  #--------------------------------------------------------------------------
  # * Aquisição das informçãoes do inimigo
  #--------------------------------------------------------------------------
  def enemy
    $data_enemies[@enemy_id]
  end
  #--------------------------------------------------------------------------
  # * Lista com características do objeto
  #--------------------------------------------------------------------------
  def feature_objects
    super + [enemy]
  end
  #--------------------------------------------------------------------------
  # * Nome de exibição
  #--------------------------------------------------------------------------
  def name
    @original_name + (@plural ? letter : "")
  end
  #--------------------------------------------------------------------------
  # * Aquisição do valor base do parâmetro
  #     param_id : ID do parâmetro
  #--------------------------------------------------------------------------
  def param_base(param_id)
    enemy.params[param_id]
  end
  #--------------------------------------------------------------------------
  # * Aquisição de experiência
  #--------------------------------------------------------------------------
  def exp
    enemy.exp
  end
  #--------------------------------------------------------------------------
  # * Aquisição de dinheiro
  #--------------------------------------------------------------------------
  def gold
    enemy.gold
  end
  #--------------------------------------------------------------------------
  # * Lista de itens derrubados
  #--------------------------------------------------------------------------
  def make_drop_items
    enemy.drop_items.inject([]) do |r, di|
      if di.kind > 0 && rand * di.denominator < drop_item_rate
        r.push(item_object(di.kind, di.data_id))
      else
        r
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Modificador de taxa de aquisição de itens
  #--------------------------------------------------------------------------
  def drop_item_rate
    $game_party.drop_item_double? ? 2 : 1
  end
  #--------------------------------------------------------------------------
  # * Aquisição das informações do item
  #     kind    : tipo do item
  #     data_id : ID do item
  #--------------------------------------------------------------------------
  def item_object(kind, data_id)
    return $data_items  [data_id] if kind == 1
    return $data_weapons[data_id] if kind == 2
    return $data_armors [data_id] if kind == 3
    return nil
  end
  #--------------------------------------------------------------------------
  # * Definição de uso de sprites
  #--------------------------------------------------------------------------
  def use_sprite?
    return true
  end
  #--------------------------------------------------------------------------
  # * Aquisição do coordenada Z na tela
  #--------------------------------------------------------------------------
  def screen_z
    return 100
  end
  #--------------------------------------------------------------------------
  # * Execução dos efeitos de dano
  #--------------------------------------------------------------------------
  def perform_damage_effect
    @sprite_effect_type = :blink
    Sound.play_enemy_damage
  end
  #--------------------------------------------------------------------------
  # * Execução dos efeitos de colapso
  #--------------------------------------------------------------------------
  def perform_collapse_effect
    case collapse_type
    when 0
      @sprite_effect_type = :collapse
      Sound.play_enemy_collapse
    when 1
      @sprite_effect_type = :boss_collapse
      Sound.play_boss_collapse1
    when 2
      @sprite_effect_type = :instant_collapse
    end
  end
  #--------------------------------------------------------------------------
  # * Transformação
  #     enemy_id : ID do inimigo
  #--------------------------------------------------------------------------
  def transform(enemy_id)
    @enemy_id = enemy_id
    if enemy.name != @original_name
      @original_name = enemy.name
      @letter = ""
      @plural = false
    end
    @battler_name = enemy.battler_name
    @battler_hue = enemy.battler_hue
    refresh
    make_actions unless @actions.empty?
  end
  #--------------------------------------------------------------------------
  # * Definição de atendimento das condições de uma ação
  #     action : ação
  #--------------------------------------------------------------------------
  def conditions_met?(action)
    method_table = {
      1 => :conditions_met_turns?,
      2 => :conditions_met_hp?,
      3 => :conditions_met_mp?,
      4 => :conditions_met_state?,
      5 => :conditions_met_party_level?,
      6 => :conditions_met_switch?,
    }
    method_name = method_table[action.condition_type]
    if method_name
      send(method_name, action.condition_param1, action.condition_param2)
    else
      true
    end
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [Número de turnos]
  #     param1 : turnos totais
  #     param2 : turnos múltiplos
  #--------------------------------------------------------------------------
  def conditions_met_turns?(param1, param2)
    n = $game_troop.turn_count
    if param2 == 0
      n == param1
    else
      n > 0 && n >= param1 && n % param2 == param1 % param2
    end
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [HP]
  #     param1 : valor mínimo
  #     param2 : valor máximo
  #--------------------------------------------------------------------------
  def conditions_met_hp?(param1, param2)
    hp_rate >= param1 && hp_rate <= param2
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [MP]
  #     param1 : valor mínimo
  #     param2 : valor máximo
  #--------------------------------------------------------------------------
  def conditions_met_mp?(param1, param2)
    mp_rate >= param1 && mp_rate <= param2
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [Estado]
  #     param1 : estado
  #--------------------------------------------------------------------------
  def conditions_met_state?(param1, param2)
    state?(param1)
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [Nível do Grupo]
  #     param1 : nível
  #--------------------------------------------------------------------------
  def conditions_met_party_level?(param1, param2)
    $game_party.highest_level >= param1
  end
  #--------------------------------------------------------------------------
  # * Definição de regras de decisão para condições [Switch]
  #     param1 : ID do switch
  #--------------------------------------------------------------------------
  def conditions_met_switch?(param1, param2)
    $game_switches[param1]
  end
  #--------------------------------------------------------------------------
  # * Definição de ação valida
  #     action : ação
  #--------------------------------------------------------------------------
  def action_valid?(action)
    conditions_met?(action) && usable?($data_skills[action.skill_id])
  end
  #--------------------------------------------------------------------------
  # * Definição de ação selecionada aleatóriamente
  #     action_list : lista de ações
  #     rating_zero : valor consideradocomo taxa zero
  #--------------------------------------------------------------------------
  def select_enemy_action(action_list, rating_zero)
    sum = action_list.inject(0) {|r, a| r += a.rating - rating_zero }
    return nil if sum <= 0
    value = rand(sum)
    action_list.each do |action|
      return action if value < action.rating - rating_zero
      value -= action.rating - rating_zero
    end
  end
  #--------------------------------------------------------------------------
  # * Definição de ações
  #--------------------------------------------------------------------------
  def make_actions
    super
    return if @actions.empty?
    action_list = enemy.actions.select {|a| action_valid?(a) }
    return if action_list.empty?
    rating_max = action_list.collect {|a| a.rating }.max
    rating_zero = rating_max - 3
    action_list.reject! {|a| a.rating <= rating_zero }
    @actions.each do |action|
      action.set_enemy_action(select_enemy_action(action_list, rating_zero))
    end
  end
end


Game_Troop
#==============================================================================
# ** Game_Troop
#------------------------------------------------------------------------------
#  Esta classe gerencia o grupo de inimigos e informações relacionadas à
# batalha. Também executa eventos de batalha.
# A instância desta classe é referenciada por $game_troop.
#==============================================================================

class Game_Troop < Game_Unit
  #--------------------------------------------------------------------------
  # * Tabela com caracteres que acompanham o nome dos inimigos
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  # * Variáveis públicas
  #--------------------------------------------------------------------------
  attr_reader   :screen                   # Estado da tela de batalha
  attr_reader   :interpreter              # Interpretador dos eventos
  attr_reader   :event_flags              # Flag de execução de eventos
  attr_reader   :turn_count               # Número de turnos
  attr_reader   :name_counts              # Lista de ocorrência de nomes iguais
  #--------------------------------------------------------------------------
  # * Inicialização do objeto
  #--------------------------------------------------------------------------
  def initialize
    super
    @screen = Game_Screen.new
    @interpreter = Game_Interpreter.new
    @event_flags = {}
    clear
  end
  #--------------------------------------------------------------------------
  # * Lista de membros
  #--------------------------------------------------------------------------
  def members
    @enemies
  end
  #--------------------------------------------------------------------------
  # * Limpeza
  #--------------------------------------------------------------------------
  def clear
    @screen.clear
    @interpreter.clear
    @event_flags.clear
    @enemies = []
    @turn_count = 0
    @names_count = {}
  end
  #--------------------------------------------------------------------------
  # * Aquisição das informações do grupo de inimigos
  #--------------------------------------------------------------------------
  def troop
    $data_troops[@troop_id]
  end
  #--------------------------------------------------------------------------
  # * Configuração do grupo de inimigos
  #     troop_id : ID do grupo de inimigos
  #--------------------------------------------------------------------------
  def setup(troop_id)
    clear
    @troop_id = troop_id
    @enemies = []
    troop.members.each do |member|
      next unless $data_enemies[member.enemy_id]
      enemy = Game_Enemy.new(@enemies.size, member.enemy_id)
      enemy.hide if member.hidden
      enemy.screen_x = member.x
      enemy.screen_y = member.y
      @enemies.push(enemy)
    end
  #--------------------------------------------------------------------------
  # * Inicialização da tonalidade da tela
  #--------------------------------------------------------------------------
  def init_screen_tone
    @screen.start_tone_change($game_map.screen.tone, 0) if $game_map
  end
  #--------------------------------------------------------------------------
  # * Definição de nomes diferentes para inimigos
  #--------------------------------------------------------------------------
  
  #--------------------------------------------------------------------------
  # * Aquisição da tabela de caracteres que acompanham o nome dos inimigos
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  # * Atualização da tela
  #--------------------------------------------------------------------------
  def update
    @screen.update
  end
  #--------------------------------------------------------------------------
  # * Lista dos nomes dos inimigos
  #    Será feita no início do combate. Elimina nomes duplicados
  #--------------------------------------------------------------------------
  def enemy_names
    names = []
    members.each do |enemy|
      next unless enemy.alive?
      next if names.include?(enemy.original_name)
      names.push(enemy.original_name)
    end
    names
  end
  #--------------------------------------------------------------------------
  # * Definição de atendimento das condições de uma página
  #     page : página da condição
  #--------------------------------------------------------------------------
  def conditions_met?(page)
    c = page.condition
    if !c.turn_ending && !c.turn_valid && !c.enemy_valid &&
       !c.actor_valid && !c.switch_valid
      return false      # Condições inválidas. Não executar
    end
    if @event_flags[page]
      return false      
    end
    if c.turn_ending    # No final do turno
      return false unless BattleManager.turn_end?
    end
    if c.turn_valid     # Número de turnos
      n = @turn_count
      a = c.turn_a
      b = c.turn_b
      return false if (b == 0 && n != a)
      return false if (b > 0 && (n < 1 || n < a || n % b != a % b))
    end
    if c.enemy_valid    # Inimigos
      enemy = $game_troop.members[c.enemy_index]
      return false if enemy == nil
      return false if enemy.hp_rate * 100 > c.enemy_hp
    end
    if c.actor_valid    # Herói
      actor = $game_actors[c.actor_id]
      return false if actor == nil 
      return false if actor.hp_rate * 100 > c.actor_hp
    end
    if c.switch_valid   # Switch
      return false if !$game_switches[c.switch_id]
    end
    return true         # Condições Aceitas
  end
  #--------------------------------------------------------------------------
  # * Configuração do evento de batalha
  #--------------------------------------------------------------------------
  def setup_battle_event
    return if @interpreter.running?
    return if @interpreter.setup_reserved_common_event
    troop.pages.each do |page|
      next unless conditions_met?(page)
      @interpreter.setup(page.list)
      @event_flags[page] = true if page.span <= 1
      return
    end
  end
  #--------------------------------------------------------------------------
  # * Aumentar turno
  #--------------------------------------------------------------------------
  def increase_turn
    troop.pages.each {|page| @event_flags[page] = false if page.span == 1 }
    @turn_count += 1
  end
  #--------------------------------------------------------------------------
  # * Cálculo da soma da experiência
  #--------------------------------------------------------------------------
  def exp_total
    dead_members.inject(0) {|r, enemy| r += enemy.exp }
  end
  #--------------------------------------------------------------------------
  # * Cálculo da soma do dinheiro
  #--------------------------------------------------------------------------
  def gold_total
    dead_members.inject(0) {|r, enemy| r += enemy.gold } * gold_rate
  end
  #--------------------------------------------------------------------------
  # * Aquisição do multiplicador de dinheiro
  #--------------------------------------------------------------------------
  def gold_rate
    $game_party.gold_double? ? 2 : 1
  end
  #--------------------------------------------------------------------------
  # * Lista de itens derrubados
  #--------------------------------------------------------------------------
  def make_drop_items
    dead_members.inject([]) {|r, enemy| r += enemy.make_drop_items }
  end
end
end


Desculpe se estiver faltando alguma coisa (explicações, erros de comandos do BBCode, etc), sou novato aqui e não estou acostumado com os comandos do fórum  :math:
[close]

Primeiro Bem-vindo Tiago, e muito obrigado pela sua ajuda vou te anotar para dar os créditos quando terminar o jogo me ajudou muito!
Spoiler
Citação de: Corvo online 27/01/2018 às 18:21
Para criar "fraquezas" é bem simples. No database, na aba de criação de inimigos você encontra essa janela:
[close]
Clicando em um campo vazio da mesma você encontrará essa:
[close]
Já está na aba e na opção que precisamos. Ali você define quanto dano determinado elemento causa nesse inimigo. Por padrão, o dano é de 100% e é usado para os elementos não mencionados ali. Ou seja, você só precisa informar os elementos que sofreram alterações. Para calcular o dano basta inserir um novo número sendo que:
- Números abaixo de 100 reduzirão o dano que o inimigo recebe.
- Números acima de 100 aumentarão.

[close]
mee nunca tinha entendido isso direito, tu eu nem preciso dizer que vai estar nos créditos ajuda em tudo  obg !