Últimos temas
» [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

» 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


KReaper XP

Ir abajo

KReaper XP Empty KReaper XP

Mensaje por kyonides el Dom Oct 27, 2019 4:34 am

KReaper XP

por Kyonides Arkanthes

Introducción

Se trata de un script con una nota "halloweenesca", ya que busca permitirle a los monstruos matar a los héroes porque hacen que sus vidas tengan un plazo definido. También pueden quemar el mana que sus víctimas aún posean. Dependiendo de la configuración, lo último incluso puede acabar con un héroe.

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

Script Complementario para el Sistema de Batallas por Defecto y compatibles
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

En sus créditos deben incluir ni seudónimo y la URL del sitio web donde lo encontraron.
Pueden utilizarlo en proyectos no comerciales.


Última edición por kyonides el Dom Oct 27, 2019 4:49 am, editado 1 vez (Razón : Traducción del script)

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.