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

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

» Necesito ayuda
por DorFenn Jue Ago 06, 2020 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


KMonsterSacrifice XP & VX

Ir abajo

KMonsterSacrifice XP & VX Empty KMonsterSacrifice XP & VX

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

KMonsterSacrifice XP & VX


por Kyonides Arkanthes

Introducción

Este script corto les permite configurar monstruos que sean capaces de sacrificar los puntos de vida o mana de sus compañeros monstruosos si utilizan una técnica.

Script para XP

Código:
# * KMonsterSacrifice XP
#  Scripter : Kyonides Arkanthes
#  2019-11-04

# Este script permite que configuren a monstruos que sacrifiquen a sus amigos
# para recuperar su vida o mana si usan una técnica. Además ellos pueden robar
# un poco de fuerza o inteligencia a sus colegas.

# KMonster.mana_knockout = true O bien... false
#  Seres mágicos sin mana (no) pueden morir en batalla automáticamente si otro
#  monstruo drena todo su mana.

module KMonster
  SACRIFICE_FAILED = "FALLIDO"
  LIFE_SACRIFICE_ID = 5 # Vida
  MANA_SACRIFICE_ID = 6 # Mana o SP
  STR_SACRIFICE_ID = 7 # Fuerza
  INT_SACRIFICE_ID = 8 # Inteligencia
  # ¿Deben morir si ya no tienen más mana?
  @mana_knockout = true # true O bien... false
  # Opciones: :max o :rest o un porcentaje (entre 1 y 99)
  LIFE_SACRIFICE = {
    1 => :rest, 2 => 10, 3 => :max
  }
  MANA_SACRIFICE = {
    1 => :rest, 2 => 7, 3 => :max
  }
  # Para Fuerza e Inteligencia la opción :rest es igual a :max
  STR_SACRIFICE = {}
  INT_SACRIFICE = {}
  def self.mana_knockout() @mana_knockout end
  def self.mana_knockout=(bool) @mana_knockout = bool end
end

class Game_Battler
  attr_writer :str_plus, :int_plus
  alias :kyon_monster_sacrifice_gm_battler_se :skill_effect
  def skill_effect(user, skill)
    killed = @hp == 0
    result = kyon_monster_sacrifice_gm_battler_se(user, skill)
    if result
      if KMonster::LIFE_SACRIFICE_ID == skill.id
        return life_sacrifice_calculation
      elsif KMonster::MANA_SACRIFICE_ID == skill.id
        return mana_sacrifice_calculation
      elsif KMonster::STR_SACRIFICE_ID == skill.id
        return str_sacrifice_calculation
      elsif KMonster::INT_SACRIFICE_ID == skill.id
        return int_sacrifice_calculation
      end
    end
    result
  end

  def life_sacrifice_calculation
    mobs = $game_troop.enemies - [self]
    if mobs.size > 0
      mob = mobs[rand(mobs.size)]
      stype = KMonster::LIFE_SACRIFICE[mob.id]
      case stype
      when :max
        self.hp += mhp = mob.maxhp
        @damage = -mhp
        mob.damage = mhp
        mob.hp = 0
      when :rest
        self.hp += mhp = mob.hp
        @damage = -mhp
        mob.damage = mhp
        mob.hp = 0
      when 1..99
        self.hp += total = mob.maxhp * stype / 100
        @damage = -total
        mob.damage = total
        mob.hp -= total
      end
      return true if stype
    end
    @damage = KMonster::SACRIFICE_FAILED
    false
  end

  def mana_sacrifice_calculation
    mobs = $game_troop.enemies - [self]
    if mobs.size > 0
      mob = mobs[rand(mobs.size)]
      stype = KMonster::MANA_SACRIFICE[mob.id]
      case stype
      when :max
        self.sp += msp = mob.maxsp
        @damage = -msp
        mob.damage = msp
        mob.sp = 0
      when :rest
        self.sp += msp = mob.sp
        @damage = -msp
        mob.damage = msp
        mob.sp = 0
      when 1..99
        self.sp += total = mob.maxsp * stype / 100
        @damage = -total
        mob.damage = total
        mob.sp -= total
      end
      mob.hp = 0 if KMonster.mana_knockout and mob.sp == 0
      return true if stype
    end
    @damage = KMonster::SACRIFICE_FAILED
    false
  end

  def str_sacrifice_calculation
    mobs = $game_troop.enemies - [self]
    if mobs.size > 0
      mob = mobs[rand(mobs.size)]
      stype = KMonster::STR_SACRIFICE[mob.id]
      case stype
      when :max. :rest
        @str_plus += total = mob.base_str
        @damage = -total
        mob.damage = total
        mob.str_plus = -total
      when 1..99
        @str_plus += total = (mob.base_str - mob.str_plus) * stype / 100
        @damage = -total
        mob.damage = total
        mob.str_plus -= total
      end
      return true if stype
    end
    @damage = KMonster::SACRIFICE_FAILED
    false
  end

  def int_sacrifice_calculation
    mobs = $game_troop.enemies - [self]
    if mobs.size > 0
      mob = mobs[rand(mobs.size)]
      stype = KMonster::INT_SACRIFICE[mob.id]
      case stype
      when :max. :rest
        @int_plus += total = mob.base_int
        @damage = -total
        mob.damage = total
        mob.int_plus = -total
      when 1..99
        @int_plus += total = (mob.base_int - mob.int_plus) * stype / 100
        @damage = -total
        mob.damage = total
        mob.int_plus -= total
      end
      return true if stype
    end
    @damage = KMonster::SACRIFICE_FAILED
    false
  end
end

Script para VX
Código:
# * KMonsterSacrifice VX
#  Scripter : Kyonides Arkanthes
#  2019-11-04

# Este script permite que configuren a monstruos que sacrifiquen a sus amigos
# para recuperar su vida o mana si usan una técnica. Además ellos pueden robar
# un poco de fuerza o inteligencia a sus colegas.

# KMonster.mana_knockout = true O bien... false
#  Seres mágicos sin mana (no) pueden morir en batalla automáticamente si otro
#  monstruo drena todo su mana.

module KMonster
  SACRIFICE_FAILED = "FALLIDO"
  LIFE_SACRIFICE_ID = 5 # Vida
  MANA_SACRIFICE_ID = 6 # Mana o MP
  ATK_SACRIFICE_ID = 7 # Fuerza
  SPI_SACRIFICE_ID = 8 # Inteligencia
  # ¿Deben morir si ya no tienen más mana?
  @mana_knockout = true # true O bien... false
  # Opciones: :max o :rest o un porcentaje (entre 1 y 99)
  LIFE_SACRIFICE = {
    1 => :rest, 2 => 10, 3 => :max
  }
  MANA_SACRIFICE = {
    1 => :rest, 2 => 7, 3 => :max
  }
  # Para Ataque y Espíritu la opción :rest es igual a :max
  ATK_SACRIFICE = {}
  SPI_SACRIFICE = {}
  def self.mana_knockout() @mana_knockout end
  def self.mana_knockout=(bool) @mana_knockout = bool end
end

class Game_Battler
  attr_writer :hp_damage, :mp_damage
  attr_accessor :atk_plus, :spi_plus
  alias :kyon_monster_sacrifice_gm_battler_se :skill_effect
  def skill_effect(user, skill)
    killed = @hp == 0
    result = kyon_monster_sacrifice_gm_battler_se(user, skill)
    if result
      if KMonster::LIFE_SACRIFICE_ID == skill.id
        return life_sacrifice_calculation
      elsif KMonster::MANA_SACRIFICE_ID == skill.id
        return mana_sacrifice_calculation
      elsif KMonster::ATK_SACRIFICE_ID == skill.id
        return atk_sacrifice_calculation
      elsif KMonster::SPI_SACRIFICE_ID == skill.id
        return spi_sacrifice_calculation
      end
    end
    result
  end

  def life_sacrifice_calculation
    mobs = $game_troop.members - [self]
    if mobs.size > 0
      mob = mobs[rand(mobs.size)]
      stype = KMonster::LIFE_SACRIFICE[mob.id]
      case stype
      when :max
        self.hp += total = mob.maxhp
        @hp_damage = -total
        mob.hp_damage = total
        mob.hp = 0
      when :rest
        self.hp += total = mob.hp
        @hp_damage = -total
        mob.hp_damage = total
        mob.hp = 0
      when 1..99
        self.hp += total = mob.maxhp * stype / 100
        @hp_damage = -total
        mob.hp -= total
      end
      return true if stype
    end
    @hp_damage = KMonster::SACRIFICE_FAILED
    false
  end

  def mana_sacrifice_calculation
    mobs = $game_troop.members - [self]
    if mobs.size > 0
      mob = mobs[rand(mobs.size)]
      stype = KMonster::MANA_SACRIFICE[mob.id]
      case stype
      when :max
        self.mp += total = mob.maxmp
        @mp_damage = -total
        mob.mp_damage = total
        mob.mp = 0
      when :rest
        self.mp += total = mob.mp
        @mp_damage = -total
        mob.mp_damage = total
        mob.mp = 0
      when 1..99
        self.mp += total = mob.maxmp * stype / 100
        @mp_damage = -total
        mob.damage = total
        mob.mp -= total
      end
      mob.hp = 0 if KMonster.mana_knockout and mob.mp == 0
      return true if stype
    end
    @mp_damage = KMonster::SACRIFICE_FAILED
    false
  end

  def atk_sacrifice_calculation
    mobs = $game_troop.members - [self]
    if mobs.size > 0
      mob = mobs[rand(mobs.size)]
      stype = KMonster::ATK_SACRIFICE[mob.id]
      case stype
      when :max. :rest
        @atk_plus += total = mob.base_atk
        @damage = -total
        mob.damage = total
        mob.atk_plus = -total
      when 1..99
        @atk_plus += total = (mob.base_atk - mob.atk_plus) * stype / 100
        @damage = -total
        mob.damage = total
        mob.atk_plus -= total
      end
      return true if stype
    end
    @hp_damage = KMonster::SACRIFICE_FAILED
    false
  end

  def spi_sacrifice_calculation
    mobs = $game_troop.members - [self]
    if mobs.size > 0
      mob = mobs[rand(mobs.size)]
      stype = KMonster::SPI_SACRIFICE[mob.id]
      case stype
      when :max. :rest
        @spi_plus += total = mob.base_spi
        @damage = -total
        mob.damage = total
        mob.spi_plus = -total
      when 1..99
        @spi_plus += total = (mob.base_spi - mob.spi_plus) * stype / 100
        @damage = -total
        mob.damage = total
        mob.spi_plus -= total
      end
      return true if stype
    end
    @mp_damage = KMonster::SACRIFICE_FAILED
    false
  end
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 Mar Nov 05, 2019 4:59 am, editado 1 vez

kyonides
PJ Secundario
PJ Secundario

Masculino
Costa Rica
RPG Maker : Xp
Mensajes : 146
Monedas : 388
Reputación : 7

Volver arriba Ir abajo

KMonsterSacrifice XP & VX Empty Re: KMonsterSacrifice XP & VX

Mensaje por JapoZero el Vie Nov 01, 2019 11:13 pm

Hey, he estado viendo los aportes que has ido realizando. Con todo el tiempo que ha pasado desde que salió el maker XP y con el hecho de que la mayoría de scripters se pasaron a versiones más recientes o desaparecieron del internet, tener a alguien que cree material para este maker le salvará la vida a los que sigan usando el XP.

En cuanto al script, se ve que puede tener buenos usos para crear estrategias de batalla más complejas. Acá en el foro siempre hacen un concurso de bosses al año, así que se me ocurre que ahí podría ser la ocasión perfecta para realizar un combate que use el sistema de monstruos que se coman unos a otros.

Gracias por el aporte! +1

_________________
JapoZero
JapoZero
Moderador
Moderador

Masculino
Rmakercom
RPG Maker : MV
Mensajes : 898
Monedas : 4696
Reputación : 318

Volver arriba Ir abajo

KMonsterSacrifice XP & VX Empty Re: KMonsterSacrifice XP & VX

Mensaje por kyonides el Mar Nov 05, 2019 4:56 am

¡Desde ahora los desarrolladores de VX también pueden contar con mi script!

Además les permite que los monstruos se roben su fuerza e inteligencia entre sí.

kyonides
PJ Secundario
PJ Secundario

Masculino
Costa Rica
RPG Maker : Xp
Mensajes : 146
Monedas : 388
Reputación : 7

Volver arriba Ir abajo

KMonsterSacrifice XP & VX Empty Re: KMonsterSacrifice XP & VX

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


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