¡Bienvenido a Universo Maker!
¿Es esta la primera vez que visitas el foro? Si es así te recomendamos que te registres para tener completo acceso a todas las áreas y secciones del foro, así también podrás participar activamente en la comunidad. Si ya tienes una cuenta, conectate cuanto antes.
Iniciar Sesión Registrarme

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo Mensaje [Página 1 de 1.]

#1KMonsterSacrifice XP & VX Empty KMonsterSacrifice XP & VX el Sáb Oct 26, 2019 7:33 am

kyonides

kyonides
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 5:00 am, editado 1 vez

#2KMonsterSacrifice XP & VX Empty Re: KMonsterSacrifice XP & VX el Mar Nov 05, 2019 4:55 am

kyonides

kyonides
¡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í.

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

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