Últimos temas
» ¡Ayuda con Plugin!
por ocholawliet Hoy a las 7:10 am

» Ayuda me sale Error.
por Nil Hoy a las 4:43 am

» Concursos anuales del foro 2020 [Resultados]
por orochii Ayer a las 6:07 pm

» Borrar este post
por ingepro Vie Abr 03, 2020 4:33 pm

» La última bala. [COMPLETADO]
por ingepro Vie Abr 03, 2020 2:30 pm

» Formula de calculo?
por Lukthak Vie Abr 03, 2020 5:28 am

» DUDA ANIMACIONES 2
por juanpaiv Vie Abr 03, 2020 4:36 am

» DUDA ANIMACIONES
por juanpaiv Vie Abr 03, 2020 12:30 am

» [MV]Balloons de status por Japo
por JapoZero Vie Abr 03, 2020 12:14 am

» Pokemon Destiny
por Greninja555 Jue Abr 02, 2020 9:11 pm

» Actualización; normas del foro y noticias futuras
por JapoZero Jue Abr 02, 2020 12:48 am

» [MV]Recursos variados de interior por Japo
por JapoZero Jue Abr 02, 2020 12:16 am


KMonsterPals XP VX & ACE

Ir abajo

KMonsterPals XP VX & ACE Empty KMonsterPals XP VX & ACE

Mensaje por kyonides el Lun Oct 28, 2019 12:44 am

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:01 am, editado 1 vez (Razón : ¡XP VX y VX ACE disponibles ya!)

kyonides
PJ Secundario
PJ Secundario

Masculino
Costa Rica
RPG Maker : Xp
Mensajes : 131
Monedas : 348
Reputación : 5

Volver arriba Ir abajo

Volver arriba


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