Últimos temas
» Ayuda para caminar y desbloquear camino
por joseromero96 Hoy a las 9:50 pm

» Pokemon Destiny
por JapoZero Hoy a las 3:13 am

» Necesito ayuda
por DorFenn Ayer a las 5:08 am

» Consejos para monetizar un juego
por joseromero96 Miér Ago 05, 2020 7:59 pm

» KEndure XP + VX
por kyonides Sáb Ago 01, 2020 2:11 am

» KRiskPoints XP
por kyonides Sáb Ago 01, 2020 1:45 am

» The Legend of Zelda: Trident of Power (RM2K3) [Juego Completo]
por Pizus Miér Jul 29, 2020 10:27 pm

» Chara - Cebolla Caminante
por CryOnion Miér Jul 29, 2020 10:23 pm

» Error despliegue del proyecto para Web
por sipsop Miér Jul 29, 2020 2:14 pm

» [RMVX]Kami no dokusai [Juego del Foro]
por luistop12 Sáb Jul 25, 2020 9:24 am

» KMapSign RG
por kyonides Sáb Jul 25, 2020 6:38 am

» Enemybook Plugin (completar besitario por zona + premio) MV - ayuda -
por Mericantos Sáb Jul 25, 2020 4:54 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 : 146
Monedas : 388
Reputación : 7

Volver arriba Ir abajo

Volver arriba


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