Últimos temas
» ¿Cómo puedo mandar un PDF junto a un juego?
por Muzgar Miér Nov 13, 2019 3:48 pm

» LA BRÚJULA DE ZAZA [VXACE]
por Muzgar Miér Nov 13, 2019 3:41 pm

» Duda, ayuda
por Muzgar Miér Nov 13, 2019 3:38 pm

» Sistema de parallax, tiempo, climatologia e iluminacion
por ckunx Miér Nov 13, 2019 2:37 pm

» [MV/VX/Ace] Engine "Objetivo actual" y "Hablar con el grupo"
por ckunx Miér Nov 13, 2019 2:28 pm

» error de script (HUD)
por Klayer Lun Nov 11, 2019 10:47 pm

» LMD - Lunas de Magia Divina
por Zaabos Lun Nov 11, 2019 8:56 pm

» Heartland | IGMC 2018
por DopellSerch Lun Nov 11, 2019 3:55 pm

» Hasta luego
por InvariableZ Dom Nov 10, 2019 2:41 pm

» [Publicidad] Around Me, otra vez.
por Muzgar Dom Nov 10, 2019 12:45 pm

» KBoomEffect XP
por kyonides Sáb Nov 09, 2019 1:55 am

» KStatsRefill XP VX & ACE
por kyonides Vie Nov 08, 2019 5:00 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 : 123
Monedas : 321
Reputación : 3

Volver arriba Ir abajo

Volver arriba


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