¡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.]

#1KBoomEffect XP Empty KBoomEffect XP el Sáb Nov 09, 2019 1:54 am

kyonides

kyonides
KBoomEffect XP

por Kyonides Arkanthes


Introducción

El presente script es para hacer explotar cosas, más específicamente a los monstruos. Si los toca un ataque físico o mágico, según la configuración predefinida, estos mostrarán la respectiva animación y de inmediato saltarán los indicadores de daño sobre los héroes afectados. El rango de la explosión es de 1 héroe (el atacante) o del equipo entero.

Código:
# * KBoomEffect XP
#   Scripter : Kyonides Arkanthes
#   2019-11-08 - with actual explosions!

# Este script les permite hacer que sus monstruos exploten en cuanto sean
# afectados por algún ataque físico o mágico.

module KBoom
  FAILURE = "Ileso"
  ANIME_ID = 99
  # MonsterID => [TasaExito, ATodos?, % Variacion], etc.
  PHYSICAL_ATK = { 1 => [99, true, 5] }
  # MonsterID => [TasaExito, ATodos?, IDTecnica1, etc.], etc.
  MAGICAL_ATK = { 1 => [40, true, 60] }
end

class Game_Battler
  alias :kyon_boom_effect_gm_battler_ae :attack_effect
  alias :kyon_boom_effect_gm_battler_se :skill_effect
  def attack_effect(user)
    rate, all, variance = KBoom::PHYSICAL_ATK[self.id]
    return setup_ignition(user, rate, all, variance, nil) if @troop_id and rate
    kyon_boom_effect_gm_battler_ae(user)
  end

  def skill_effect(user, skill)
    rate, all, *skills = KBoom::MAGICAL_ATK[self.id]
    if @troop_id and rate and skills.include?(skill.id)
      return setup_ignition(user, rate, all, skill.variance, skill)
    end
    kyon_boom_effect_gm_battler_se(user, skill)
  end

  def setup_ignition(user, rate, multiple, variance, skill)
    @will_explode = rand(100) < rate
    if @will_explode
      power = skill ? skill.power : self.atk
      targets = multiple ? $game_party.survivors : [user]
      targets.each{|h| ignition_target(h, power, variance) }
    end
    @damage = @hp
    @hp = 0
    @will_explode
  end

  def ignition_target(user, power, variance)
    power = power * @hp / user.pdef
    return user.damage = KBoom::FAILURE if power < 1
    amp = [power.abs * variance / 100, 1].max
    power += rand(amp+1) + rand(amp+1) - amp
    user.damage = power
    user.hp -= power
    user.explosion_pop = true
  end
  def clear_explosion() @will_explode = @explode = nil end
  attr_accessor :will_explode, :explode, :explosion_pop
end

class Game_Party
  def survivors() @actors.select{|a| a.hp > 0 } end
end

class Sprite_Battler
  alias :kyon_boom_effect_sbt_up :update
  def update
    kyon_boom_effect_sbt_up
    return unless @battler and @battler.explode
    animation($data_animations[KBoom::ANIME_ID], true)
    @battler.clear_explosion
  end
end

class Scene_Battle
  alias :kyon_boom_effect_up_ph4_s4 :update_phase4_step4
  alias :kyon_boom_effect_up_ph4_s5 :update_phase4_step5
  def update_phase4_step4
    kyon_boom_effect_up_ph4_s4
    @target_battlers.each{|target| target.explode = target.will_explode }
  end

  def update_phase4_step5
    kyon_boom_effect_up_ph4_s5
    for target in $game_party.actors
      target.damage_pop = target.explosion_pop
      target.explosion_pop = nil
    end
  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 Nov 10, 2019 2:56 am, editado 1 vez (Razón : De Inglés a Español)

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.