Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[XP] Enemigos protegidos

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [XP] Enemigos protegidos

Mensaje por Wecoc el 2015-02-01, 23:28

Éste script es un pedido que hoy me hizo un amigo mío, y me dió permiso para postearlo.
Es un arreglo sencillo (como la mayoría de mis arreglos xD) así que no pido créditos, de hecho ni siquiera le puse "título" al script... Qué mal me vendo xD

Hace lo siguiente: Algunos tipos de enemigos no son seleccionables si hay otros tipos de enemigos concretos en batalla.

Por ejemplo si estás luchando contra un rey y dos soldados, al principio solo puedes atacar a los soldados, y hasta que no los hayas matado no puedes atacar al rey.

Es un Add-On de la batalla default, pero adaptarlo a otras batallas debería ser sencillo.

Código:
module Protected_Enemies
  # PROTECTED => PROTECTORS
  HASH = {2 => [1], 3 => [1, 2]}
  HASH.default = []
end

class Game_Troop
  def protected?(enemy_id)
    protectors = Protected_Enemies::HASH[enemy_id]
    for enemy in protectors
      if @enemies.any? {|e| protectors.include?(e.id) && !e.dead?}
        return true
      end
    end
    return false
  end
  
  def smooth_target_enemy(enemy_index)
    enemy = @enemies[enemy_index]
    if enemy != nil and enemy.exist?
      return enemy
    end
    for enemy in @enemies
      if enemy.exist?
        next if protected?(enemy.id)
        return enemy
      end
    end
  end
end

class Scene_Battle
  def update_phase3_enemy_select
    @enemy_arrow.update
    if Input.trigger?(Input::B)
      $game_system.se_play($data_system.cancel_se)
      end_enemy_select
      return
    end
    if Input.trigger?(Input::C)
      enemy = $game_troop.enemies[@enemy_arrow.index]
      if $game_troop.protected?(enemy.id)
        $game_system.se_play($data_system.cancel_se)
        return
      end
      $game_system.se_play($data_system.decision_se)
      @active_battler.current_action.target_index = @enemy_arrow.index
      end_enemy_select
      if @skill_window != nil
        end_skill_select
      end
      if @item_window != nil
        end_item_select
      end
      phase3_next_actor
    end
  end
end

Al principio del todo del script pone:
HASH = {2 => [1], 3 => [1, 2]}
Eso significa que el enemigo 2 es protegido por el 1 y el 3 es protegido por el 1 y el 2. Tendréis que cambiar esas combinaciones para adaptarlas a vuestras necesidades. Recordad que eso son IDs de la Base de Datos. Para hacerlo por posición de enemigo en la batalla, sería un script bastante distinto. Si no hay más remedio también lo haré... xD

Cualquier duda que tengáis o pedido al respecto, me lo comentáis.
avatar
Wecoc
Administrador
Administrador



Créditos 12284

Gracias : 645

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Enemigos protegidos

Mensaje por Noctámbulo el 2015-02-02, 15:23

Grandísimo aporte, con esto podré idear mecánicas para bosses más variadas, algo que me hacía falta desde hace tiempo.
Te estoy agradecido.
avatar
Noctámbulo
Principiante
Principiante

1/3

Créditos 297

Gracias : 27

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Enemigos protegidos

Mensaje por BlazeCrimson el 2015-02-02, 22:59

Increible aporte Wecoc, estaba pensando en hacer algo parecido para el enemigo más poderoso del DC pero el método que tenia pensado era mucho más engorroso, éste script me será muy útil.

Voy a probarlo estos días y te digo algo. ¡Gracias por compartir! gcool

_________________
Image and video hosting by TinyPic
avatar
BlazeCrimson
Analista
Analista

0/3

Créditos 1128

Gracias : 111

Volver arriba Ir abajo

RPG Maker XP Re: [XP] Enemigos protegidos

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


Permisos de este foro:
No puedes responder a temas en este foro.