¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.
Conectarse

Recuperar mi contraseña

Temas importantes
----------------------------------------
Páginas con recursos RPG Maker
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
----------------------------------------
Afiliados
Estadísticas
Tenemos 3393 miembros registrados.
El último usuario registrado es nino34.

Nuestros miembros han publicado un total de 79784 mensajes en 11253 argumentos.
Navega con Google Chrome
[DESCARGA]

[RMXP] Efecto del veneno decrece con el tiempo

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

[RMXP] Efecto del veneno decrece con el tiempo

Mensaje por Wecoc el 2013-12-14, 23:21

Éste script hace que a medida que va pasando el tiempo el efecto del veneno vaya decreciendo hasta curarse solo (o mate al héroe, lo que pase primero xD). Lo uso en mi proyecto.

Es muy simple así que no pido créditos.
Hay tres cosas a tener en cuenta en cuanto a configuración.

Primera, que hay dos versiones del script: Por pasos y Por tiempo.
Por pasos solo afecta el veneno cuando el player se mueve (por defecto).
Por tiempo en cambio afecta indiferentemente a si se mueve o está parado (como en Birdsite)

Segunda, el cálculo del daño máximo está en la siguiente línea:
default_damage = [actor.maxhp / 100, 1].max
Cambiando ese 100 por un número más alto el veneno hará menos daño, y al revés. También se puede poner un número fijo en vez de el cálculo por defecto que se basa en la vida máxima del héroe.

Tercera, el cálculo de la reducción del daño está en la siguiente línea:
damage = (default_damage - time / 10).round
Cambiando ese 10 por un número más alto el efecto del veneno quedará reducido más lentamente, y al revés.

En realidad aún se puede indagar más en el código, pero eso lo dejo para los curiosos.

Aquí los scripts, usad el que más se adapte a vuestras necesidades.

Código:
#------------------------------------------------------------------------------
# Efecto del veneno decrece con el tiempo (Versión: Por pasos)
#------------------------------------------------------------------------------
# Autor: Wecoc (créditos no necesarios)
#------------------------------------------------------------------------------

class Game_Player < Game_Character
  attr_accessor :poison_time
  alias new_poison_initialize initialize unless $@
  def initialize
    new_poison_initialize
    @poison_time = 0
  end

  def increase_steps
    super
    unless @move_route_forcing
      $game_party.increase_steps
      if $game_party.steps % 2 == 0
        for actor in $game_party.actors
          if actor.hp > 0 and actor.slip_damage?
            @poison_time += 1
            $game_party.check_map_slip_damage(@poison_time)
            return true
          end
        end
        @poison_time = 0
      end
    end
  end
end

class Game_Battler
  alias new_poison_add_state add_state unless $@
  def add_state(state_id, force = false)
    new_poison_add_state(state_id, force)
    if $data_states[state_id].slip_damage
      $game_player.poison_time = 0
    end
  end
end

class Game_Party
  def check_map_slip_damage(time)
    for actor in @actors
      if actor.hp > 0 and actor.slip_damage?
        default_damage = [actor.maxhp / 100, 1].max
        damage = (default_damage - time / 10).round
        if damage == 0
          for i in actor.states
            if $data_states[i].slip_damage
              actor.remove_state(i)
            end
          end
        else
          actor.hp -= damage
          $game_system.se_play($data_system.actor_collapse_se) if actor.hp == 0
          alpha = (128 * damage / default_damage).round
          $game_screen.start_flash(Color.new(255,0,0,alpha), 4)
          $game_temp.gameover = $game_party.all_dead?
        end
      end
    end
  end
end

Código:
#------------------------------------------------------------------------------
# Efecto del veneno decrece con el tiempo (Versión: Por tiempo)
#------------------------------------------------------------------------------
# Autor: Wecoc (créditos no necesarios)
#------------------------------------------------------------------------------

class Game_Player < Game_Character
  attr_accessor :poison_time
  alias new_poison_initialize initialize unless $@
  def initialize
    new_poison_initialize
    @poison_time = 0
  end

  def increase_steps
    super
    unless @move_route_forcing
      $game_party.increase_steps
    end
  end

  alias new_poison_upd update unless $@
  def update
    if rand(20) == 1
      for actor in $game_party.actors
        if actor.hp > 0 and actor.slip_damage?
          @poison_time += 1
          $game_party.check_map_slip_damage(@poison_time)
          new_poison_upd
          return true
        end
      end
      @poison_time = 0
    end
    new_poison_upd
  end
end

class Game_Battler
  alias new_poison_add_state add_state unless $@
  def add_state(state_id, force = false)
    new_poison_add_state(state_id, force)
    if $data_states[state_id].slip_damage
      $game_player.poison_time = 0
    end
  end
end

class Game_Party
  def check_map_slip_damage(time)
    for actor in @actors
      if actor.hp > 0 and actor.slip_damage?
        default_damage = [actor.maxhp / 100, 1].max
        damage = (default_damage - time / 10).round
        if damage == 0
          for i in actor.states
            if $data_states[i].slip_damage
              actor.remove_state(i)
            end
          end
        else
          actor.hp -= damage
          $game_system.se_play($data_system.actor_collapse_se) if actor.hp == 0
          alpha = (128 * damage / default_damage).round
          $game_screen.start_flash(Color.new(255,0,0,alpha), 4)
          $game_temp.gameover = $game_party.all_dead?
        end
      end
    end
  end
end

Wecoc
Administrador
Administrador



Créditos 8265

Gracias : 372

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 :: RPG Maker :: Scripts

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