¡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, conéctate 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.]

#1KReaper XP Empty KReaper XP el Vie Oct 25, 2019 8:07 am

Reputación del mensaje :100% (1 voto)

kyonides

kyonides
KReaper XP

por Kyonides Arkanthes


Introducción

¿Desean agregar dos habilidades más a su proyecto? Aquí les traigo unas sugerencias... Crear un contador de tiempo para que pierdan PV o PM. Además pueden hacer que se vean afectados por estados como un extra. En el caso de PM, pueden configurarlo para que también mate al objetivo si los PM llegan a 0.

Creo que estas habilidades son buenas para monstruos o jefes.

Script Principal
Código:
# * KReaper XP
#  Scripter : Kyonides Arkanthes
#  2019-10-26

# Este script les permite matar a sus héroes o enemigos via llamados a script.
# Crea un cronómetro que eventualmente ¡reducirá a 0 sus PV o PM!

# Revisen el módulo KReaper, allí pueden fijar muchos valores iniciales.
# Técnicas pueden detonar la "Sentencia del Segador" y "Hoyo Negro de Mana".

# KReaper.add_states = true O false
#  Agrega un estado si la víctima se convirtió en el objetivo del Segador.

# KReaper.mana_knockout = true O false
#  Seres mágicos sin Mana restante (no) caerán en batalla automáticamente.

# KReaper.mana_loss_lose_hp = true O false
#  Seres mágicos (no) perderán PV también.

# KReaper.mana_loss_hp_loss
#  Seres mágicos perderán n cantidad de PV por Segundo

# * Llamados a Script Opcionales *

# $game_party.reaper_targets
#  Retorna a todos los héroes que se han convertido en objetivos del Segador.

# $game_party.mana_loss_targets
#  Retorna a todos los héroes que verán como su Mana se desvanece.

#  Solo en caso de que deseen ajustar el objetivo del Segador manualmente...
# battler = $game_party.actors[Indice_Miembro]
#  O bien
# battler = $game_troop.enemies[Indice_Miembro]
#  Entonces
# battler.reaper_target!  #=> El Cronómetro de Vida se activa!
# battler.reaper_target?  #=> ¿Está la hoz del Segador acechando a su presa?
# battler.doom_timer      #=> Tiempo restante en cuadros alias frames
#  O sus versiones de Pérdida de Mana...
# battler.mana_loss_target!
# battler.mana_loss_target?
# battler.mana_loss_timer

module KReaper
  LIFE_SKILL_ID = 1 # Técnica que llamará la atención del Segador
  MANA_SKILL_ID = 2 # Técnica que representará al Hoyo Negro de Mana
  # Agrega estados a las víctimas del Segador
  @add_states = true
  # ¿Deben morir los Seres Mágicos si su Mana se reduce a 0?
  @mana_knockout = true
  # ¿Debe quemarse Vida junto con el Mana?
  @mana_loss_lose_hp = true
  @mana_loss_hp_loss = 1 # PV Perdido Por Segundo
  # Valor Sugerido del Cronómetro: Frame Rate * 60 ( 1 Minuto )
  @timer = Graphics.frame_rate * 60
  TIMER = {
    :actor => { 1 => @timer * 2 },
    :enemy => { 1 => @timer * 4 }
  }
  TIMER.default = @timer * 3
  STATES = {
    :actor => { 1 => [1] },
    :enemy => { 1 => [2] }
  }
  STATES.default = []
  class << self
    attr_accessor :add_state, :mana_knockout, :show_timer
    attr_accessor :mana_loss_lose_hp, :mana_loss_hp_loss
  end
end

class Game_System
  alias :kyon_reaper_gm_sys_up :update
  def update
    $game_party.check_reaper_timers
    $game_party.check_mana_loss_timers
    kyon_reaper_gm_sys_up
  end
end

class Game_Battler
  alias :kyon_reaper_gm_battler_init :initialize
  alias :kyon_reaper_gm_battler_se :skill_effect
  def initialize
    kyon_reaper_gm_battler_init
    @doom_timer = 0
    @mana_timer = 0
  end

  def skill_effect(user, skill)
    result = kyon_reaper_gm_battler_se(user, skill)
    if result
      if KReaper::LIFE_SKILL_ID == skill.id
        reaper_target!
      elsif KReaper::MANA_SKILL_ID == skill.id
        mana_loss_target!
      end
    end
    result
  end

  def check_reaper_time
    @doom_timer -= 1
    reaper_claim! if @doom_timer == 0
  end

  def reaper_claim!
    @reaper_target = nil
    @hp = 0
  end

  def reaper_target!
    reaper_states = KReaper.add_states ? KReaper::STATES[self.kind] : []
    reaper_states.each{|n| add_state(n) }
    @doom_timer = KReaper::TIMER[self.kind]
    @reaper_target = true
  end

  def check_mana_loss_time
    @mana_loss_timer -= 1
    if @mana_loss_timer % 60 == 0 and KReaper.mana_loss_lose_hp
      self.hp -= KReaper.mana_loss_hp_loss
    end
    mana_robber_claim! if @mana_loss_timer == 0
  end

  def mana_robber_claim!
    @mana_loss_target = nil
    @hp = 0 if KReaper.mana_knockout
    @sp = 0
  end

  def mana_loss_target!
    @mana_timer = KReaper::TIMER[self.kind]
    @mana_loss_target = true
  end
  def reaper_target?() @reaper_target end
  def mana_loss_target?() @mana_loss_target end
  def no_life_left?() @doom_timer == 0 end
  def no_mana_left?() @mana_loss_timer == 0 end
  def clear_doom_timer?() @doom_timer %= Graphics.frame_rate == 0 end
  def clear_mana_timer?() @mana_loss_timer %= Graphics.frame_rate == 0 end
  attr_accessor :doom_timer, :mana_loss_timer
end

class Game_Actor
  def kind() :actor end
end

class Game_Enemy
  def kind() :enemy end
end

class Game_Party
  def reaper_targets() @actors.select{|a| a.reaper_target? } end
  def non_reaper_targets() @actors.reject{|a| a.reaper_target? } end
  def check_reaper_timers() reaper_targets.each{|a| a.check_reaper_time } end
  def mana_loss_targets() @actors.select{|a| a.mana_loss_target? } end
  def non_mana_loss_targets() @actors.reject{|a| a.mana_loss_target? } end
  def check_mana_loss_timers() mana_loss_targets.each{|a| a.check_mana_loss_time } end
end

Complemento para el Sistema de Batallas por Defecto

Código:
# * KReaper XP Default Battle System Add On
#   Scripter : Kyonides Arkanthes

module KReaper
  LIFE_TIMER_Y = 280
  MANA_TIMER_Y = 280
  @show_timer = true # Toggle Life or Mana Timers: true OR false
end

class Scene_Battle
  alias :kyon_reaper_scn_battle_main :main
  alias :kyon_reaper_scn_battle_mao :make_action_orders
  alias :kyon_reaper_scn_battle_up4s6 :update_phase4_step6
  def main
    @frames = Graphics.frame_rate
    @hp_reapers = []
    @sp_reapers = []
    4.times do |n|
      @hp_reapers << s = Sprite.new
      s.x = 30 + n * 160
      s.y = KReaper::LIFE_TIMER_Y
      s.bitmap = Bitmap.new(100, 24)
      @sp_reapers << s = Sprite.new
      s.x = 30 + n * 160
      s.y = KReaper::MANA_TIMER_Y
      s.bitmap = Bitmap.new(100, 24)
    end
    kyon_reaper_scn_battle_main
    (@hp_reapers + @sp_reapers).each{|s| s.dispose }
  end

  def make_action_orders
    kyon_reaper_scn_battle_mao
    return unless KReaper.show_timer
    $game_party.non_reaper_targets.each do |a|
      pos = $game_party.actors.index(a)
      @hp_reapers[pos].bitmap.clear
    end
    $game_party.non_mana_loss_targets.each do |a|
      pos = $game_party.actors.index(a)
      @sp_reapers[pos].bitmap.clear
    end
  end

  def update_phase4_step6
    kyon_reaper_scn_battle_up4s6
    return unless KReaper.show_timer
    $game_party.reaper_targets.each do |a|
      next unless a.clear_doom_timer? and !a.no_life_left?
      pos = $game_party.actors.index(a)
      redraw_reaper_timer(@hp_reapers[pos].bitmap, a.doom_timer)
    end
    $game_party.mana_loss_targets.each do |a|
      next unless a.clear_mana_timer? and !a.no_mana_left?
      pos = $game_party.actors.index(a)
      redraw_reaper_timer(@sp_reapers[pos].bitmap, a.mana_loss_timer)
    end
  end

  def redraw_reaper_timer(bitmap, timer)
    time = sprintf("%02d:%02d", timer / @frames, timer % @frames)
    bitmap.clear
    bitmap.draw_text(bitmap.rect, time)
  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 Dom Oct 27, 2019 4:48 am, editado 2 veces

#2KReaper XP Empty Re: KReaper XP el Sáb Oct 26, 2019 7:29 am

kyonides

kyonides
Bueno regresé para dejar una versión corregida y un complemento curioso, si es que usan un sistema de batallas compatible con el que viene por defecto.

#3KReaper XP Empty Re: KReaper XP el Jue Abr 02, 2020 5:43 am

Vala

Vala
kyonides, como siempre, aportando valor Ópalo Aplaudiendo

¡Sigue así, chico! Me place leerte cada vez.
Toma tu Ópalo Reputación muy merecido.

Saludos,
Vala.



KReaper XP M4FTeH
KReaper XP Dreki_userbar_by_orochii-d5lt2qd

Contenido patrocinado


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.