Últimos temas
» LA BRÚJULA DE ZAZA [VXACE]
por Pocari Dom Nov 17, 2019 7:50 pm

» [RMVXA] Resurrected
por DorFenn Vie Nov 15, 2019 12:05 pm

» ¿Cómo puedo mandar un PDF junto a un juego?
por Muzgar Miér Nov 13, 2019 3:48 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


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 : 123
Monedas : 321
Reputación : 3

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
Héroe
Héroe

Masculino
Chile
RPG Maker : MV
Mensajes : 721
Monedas : 4137
Reputación : 291
Localización : Chile

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 : 123
Monedas : 321
Reputación : 3

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.