¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1KMonsterPals XP VX & ACE Empty KMonsterPals XP VX & ACE el Sáb Oct 26, 2019 7:38 am

kyonides

kyonides
KMonsterPals XP VX & ACE

por Kyonides Arkanthes

Introducción

Este script corto permite que los monstruos reaccionen después de que un amigo monstruo sea derrotado. (Esto se configura en el módulo.) En el siguiente turno o en varios turnos según su mana, podrán utilizar una técnica oculta. Si matan al héroe que lo asesinó o se quedan sin mana, se calmarán.

Script para XP
Código:
# * KMonsterPals XP
#   Scripter : Kyonides Arkanthes
#   2019-10-29

# Este script permite a los monstruos que (sobre)actúen luego de que derroten a
# su amigo monstruoso. Usan una técnica oculta para tratar de vengarse del héroe
# que lo provocó. Se calmarán si logran vengarlo.
# Nota: Si el monstruo vengativo tiene poco mana, el script le provee lo mínimo
#       para que pueda usarlo al menos una vez. (¡Agradézcanselo a su ira!)

module KMonster
  PALS = {} # ¡Ni lo volteen a ver!
  PALS.default = {} # ¡No lo toquen que se rompe!
  # [IDTropa] = { IndiceMonstruo => [IndiceMonstruoAmigo, IDTécnica], etc. }
  # NOTA: IDTécnica puede ser un arreglo o lista de IDs como [1,2,3]
  PALS[1] = { 0 => [1, 1], 1 => [0, 1] }
end

class Game_Battler
  alias :kyon_monsterpals_gm_battler_scu :skill_can_use?
  alias :kyon_monsterpals_gm_battler_se :skill_effect
  def skill_can_use?(sid)
    result = kyon_monsterpals_gm_battler_scu(sid)
    return true if result and @revenge_skill == sid
    result
  end

  def skill_effect(user, skill)
    killed = @hp == 0
    result = kyon_monsterpals_gm_battler_se(user, skill)
    if result and self.kind == :enemy and !killed and @hp == 0
      if (ids = KMonster::PALS[@troop_id][@member_index])
        enemy = $game_troop.enemies[ids[0]]
        enemy.revenge_target = $game_party.actors.index(user)
        sid = ids[1].is_a?(Array)? ids[rand(ids.size)] : ids[1]
        enemy.revenge_skill = sid
        cost = $data_skills[sid].sp_cost
        enemy.sp = cost if cost > enemy.sp
      end
    end
    result
  end
end

class Game_Enemy
  attr_writer :revenge_target, :revenge_skill
  alias :kyon_monsterpals_gm_enemy_ma :make_action
  def make_action
    if @revenge_target and @revenge_skill
      if $game_party.actors[@revenge_target].hp == 0 or
         $data_skills[@revenge_skill].sp_cost > @sp
        @revenge_target = @revenge_skill = nil
      else
        a = self.current_action
        a.kind = 1
        a.basic = 0
        a.skill_id = @revenge_skill
        a.target_index = @revenge_target
        return
      end
    end
    kyon_monsterpals_gm_enemy_ma
  end
  def kind() :enemy end
end

class Game_Actor
  def kind() :actor end
end

Script para VX
Código:
# * KMonsterPals VX
#   Scripter : Kyonides Arkanthes
#   2019-10-29

# Este script permite a los monstruos que (sobre)actúen luego de que derroten a
# su amigo monstruoso. Usan una técnica oculta para tratar de vengarse del héroe
# que lo provocó. Se calmarán si logran vengarlo.
# Nota: Si el monstruo vengativo tiene poco mana, el script le provee lo mínimo
#       para que pueda usarlo al menos una vez. (¡Agradézcanselo a su ira!)

module KMonster
  PALS = {} # ¡Ni lo volteen a ver!
  PALS.default = {} # ¡No lo toquen que se rompe!
  # [IDTropa] = { IndiceMonstruo => [IndiceMonstruoAmigo, IDTécnica], etc. }
  # NOTA: IDTécnica puede ser un arreglo o lista de IDs como [1,2,3]
  PALS[1] = { 0 => [1, 1], 1 => [0, 1] }
end

class Game_Battler
  alias :kyon_monsterpals_gm_battler_scu :skill_can_use?
  alias :kyon_monsterpals_gm_battler_se :skill_effect
  def skill_can_use?(skill)
    result = kyon_monsterpals_gm_battler_scu(skill)
    return true if result and @revenge_skill == skill.id
    result
  end

  def skill_effect(user, skill)
    killed = @hp == 0
    result = kyon_monsterpals_gm_battler_se(user, skill)
    return if !result or @skipper or @missed or @evaded
    if self.kind == :enemy and !killed and @hp == 0
      if (ids = KMonster::PALS[@troop_id][@member_index])
        enemy = $game_troop.members[ids[0]]
        enemy.revenge_target = $game_party.members.index(user)
        sid = ids[1].is_a?(Array)? ids[rand(ids.size)] : ids[1]
        enemy.revenge_skill = sid
        cost = $data_skills[sid].sp_cost
        enemy.sp = cost if cost > enemy.sp
      end
    end
  end
end

class Game_Enemy
  attr_writer :revenge_target, :revenge_skill
  alias :kyon_monsterpals_gm_enemy_ma :make_action
  def restriction
    if @revenge_target and @revenge_skill
      @states.delete_if{|s| s.restriction == 1 }
    end
    super
  end

  def make_action
    if @revenge_target and @revenge_skill
      if $game_party.members[@revenge_target].hp == 0 or
         $data_skills[@revenge_skill].sp_cost > @sp
        @revenge_target = @revenge_skill = nil
      else
        a = self.current_action
        a.kind = 1
        a.basic = 0
        a.skill_id = @revenge_skill
        a.target_index = @revenge_target
        return
      end
    end
    kyon_monsterpals_gm_enemy_ma
  end
  def kind() :enemy end
end

class Game_Actor
  def kind() :actor end
end

Script para VX ACE
Código:
# * KMonsterPals ACE
#  Scripter : Kyonides Arkanthes
#  2019-10-29

# Este script permite a los monstruos que (sobre)actúen luego de que derroten a
# su amigo monstruoso. Usan una técnica oculta para tratar de vengarse del héroe
# que lo provocó. Se calmarán si logran vengarlo.
# Nota: Si el monstruo vengativo tiene poco mana, el script le provee lo mínimo
#      para que pueda usarlo al menos una vez. (¡Agradézcanselo a su ira!)

module KMonster
  PALS = {} # ¡Ni lo volteen a ver!
  PALS.default = {} # ¡No lo toquen que se rompe!
  # [IDTropa] = { IndiceMonstruo => [IndiceMonstruoAmigo, IDTécnica], etc. }
  # NOTA: IDTécnica puede ser un arreglo o lista de IDs como [1,2,3]
  PALS[1] = { 0 => [1, 1], 1 => [0, 1] }
end

class Game_BattlerBase
  alias :kyon_monsterpals_gm_battlerbase_scm :skill_conditions_met?
  def skill_conditions_met?(skill)
    result = kyon_monsterpals_gm_battlerbase_scm(skill)
    return true if result and @revenge_skill == skill.id
    result
  end
end

class Game_Battler
  alias :kyon_monsterpals_gm_battler_ed :execute_damage
  def execute_damage(user)
    killed = @hp == 0
    kyon_monsterpals_gm_battler_ed(user)
    return if user.kind == :enemy or kind != :enemy or killed or @hp > 0
    ids = KMonster::PALS[$game_troop.troop_id][@index]
    return unless ids
    enemy = $game_troop.members[ids[0]]
    enemy.revenge_target = $game_party.index_id(user.id)
    sid = ids[1].is_a?(Array)? ids[rand(ids.size)] : ids[1]
    enemy.revenge_skill = sid
    cost = $data_skills[sid].mp_cost
    enemy.mp = cost if cost > enemy.mp
  end
end

class Game_Enemy
  attr_writer :revenge_target, :revenge_skill
  alias :kyon_monsterpals_gm_enemy_ma :make_actions
  def make_actions
    if @revenge_target and @revenge_skill
      @actions.clear
      if $game_party.members[@revenge_target].hp == 0 or
        $data_skills[@revenge_skill].sp_cost > @sp
        @revenge_target = @revenge_skill = nil
      else
        @actions << action = Game_Action.new(self)
        action.set_skill(@revenge_skill)
        action.target_index = @revenge_target
        return
      end
    end
    kyon_monsterpals_gm_enemy_ma
  end
  def kind() :enemy end
end

class Game_Actor
  def kind() :actor end
end

class Game_Party
  def index_id(aid) @actors.index(aid) end
end

class Game_Troop
  attr_reader :troop_id
end

Términos de Uso

Deben incluir mi seudónimo y el URL del sitio del que lo copiaron.
Es gratuito para demos y juegos no comerciales.



Última edición por kyonides el Jue Oct 31, 2019 5:02 am, editado 5 veces

#2KMonsterPals XP VX & ACE Empty Re: KMonsterPals XP VX & ACE el Lun Oct 28, 2019 12:42 am

kyonides

kyonides
Bueno he cambiado el idioma de las instrucciones para que se les facilite su uso. Ya lo he hecho en varios de los scripts recientes.

#3KMonsterPals XP VX & ACE Empty Re: KMonsterPals XP VX & ACE el Mar Oct 29, 2019 7:38 am

kyonides

kyonides
En esta otra oportunidad he publicado un fix para la versión XP. ¿Por qué menciono el término versión? Es debido a que ¡ya hay otra para VX! Opalo Sorprendido

EDITO

Tuve que corregir un pequeño detalle hoy 29 de octubre de 2019...

#4KMonsterPals XP VX & ACE Empty Re: KMonsterPals XP VX & ACE el Jue Oct 31, 2019 5:03 am

kyonides

kyonides
Bueno como ¿prueba? he posteado otra versión, esta vez es para... ¡VX Ace! Ópalo Aplaudiendo

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

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