¡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 3699 miembros registrados.
El último usuario registrado es subliminal30.

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

[RMXP] Stormblade v0.2; armas normales que ejecutan skills en área

 :: RPG Maker :: Scripts

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP] Stormblade v0.2; armas normales que ejecutan skills en área

Mensaje por silvanash el 2017-01-10, 23:58

Basado en la idea de Wecocio del... Bueno, ya sabéis cómo va esto.

A Wecocio le mola el LoL, y a mí me mola cambiarle el nombre a todo, así que su Statikk Shiv es mi Stormblade.

Stormblade hace que un arma vaya cargando [whatever] a medida que se usa. Cuando se termina de cargar, ejecuta una skill en área sobre el grupo enemigo y se descarga. El arma va perdiendo [whatever] si se deja de usar, o si el personaje ataca y falla.

Código:
# Stormblade v0.2
# silvanash

# This script allows a weapon to be charged by using it against foes
# The charge drops if the weapon isn't used
# At max charge, the weapon executes an AoE no-cost skill

# This script requires Lightning Burst

module SLV_Config
  
  STORMBLADE_SETUP = {
    # Weapon_ID => [max_charge, charge_per_attack, charge_lost, skill_ID],
    1 => {:max => 50, :gain => 55, :lose => 15, :skill => 1,},
  }
  
end

class Scene_Battle
  
  # The method was overwritten, not alialised
  
  #--------------------------------------------------------------------------
  # * Make Basic Action Results
  #--------------------------------------------------------------------------
  def make_basic_action_result
    # If attack
    if @active_battler.current_action.basic == 0
      # Set anaimation ID
      @animation1_id = @active_battler.animation1_id
      @animation2_id = @active_battler.animation2_id
      # If action battler is enemy
      if @active_battler.is_a?(Game_Enemy)
        if @active_battler.restriction == 3
          target = $game_troop.random_target_enemy
        elsif @active_battler.restriction == 2
          target = $game_party.random_target_actor
        else
          index = @active_battler.current_action.target_index
          target = $game_party.smooth_target_actor(index)
        end
      end
      # If action battler is actor
      if @active_battler.is_a?(Game_Actor)
        if @active_battler.restriction == 3
          target = $game_party.random_target_actor
        elsif @active_battler.restriction == 2
          target = $game_troop.random_target_enemy
        else
          index = @active_battler.current_action.target_index
          target = $game_troop.smooth_target_enemy(index)
        end
      end
      # Set array of targeted battlers
      @target_battlers = [target]
      # Apply normal attack results
      for target in @target_battlers
        target.attack_effect(@active_battler)
      end
      # Proc stormblade here
      # Stormblade won't proc for Game_Enemy instances
      if @active_battler.is_a?(Game_Actor) && @target_battlers[0].damage.to_i > 0 and
        SLV_Config::STORMBLADE_SETUP.has_key?(@active_battler.weapon_id)
        # Sets the stormblade array if it doesn't exist
        @slv_stormblades = [] if @slv_stormblades.nil?
        # Loads the stormblade data
        data = SLV_Config::STORMBLADE_SETUP[@active_battler.weapon_id]
        # Charges the blade
        @slv_stormblades[@active_battler.index] = 0 if @slv_stormblades[@active_battler.index].nil?
        @slv_stormblades[@active_battler.index] += data[:gain]
        # Checks if the blade is fully charged
        if @slv_stormblades[@active_battler.index] >= data[:max]
          # If the blade requires no SP/HP, or the battler can pay the skill's cost
          skill = $data_skills[data[:skill]]
          s = false
          # Bloodprice script is being used
          if skill.sp_cost > 0
            if defined?(SLV_Config::BLOODPRICE_ID) and @active_battler.state?(SLV_Config::BLOODPRICE_ID)
              # Use up HP
              if SLV_Config::slv_pay_with_blood?(skill.id)
                if @active_battler.hp > skill.sp_cost
                  @active_battler.hp -= skill.sp_cost
                  s = true
                end
              else
                if @active_battler.sp > skill.sp_cost
                  @active_battler.sp -= skill.sp_cost
                  s = true
                end
              end
            else
              # Use up SP
              if @active_battler.sp > skill.sp_cost
                @active_battler.sp -= skill.sp_cost
                s = true
              end
            end
          else
            s = true
          end
          if s == true
            # Calls a Lightning Bolt
            proc_lightning_burst(skill)
            # Discharges the blade
            @slv_stormblades[@active_battler.index] = 0
          end
        end
      end
      return
    end
    # If guard
    if @active_battler.current_action.basic == 1
      # Display "Guard" in help window
      @help_window.set_text($data_system.words.guard, 1)
      return
    end
    # If escape
    if @active_battler.is_a?(Game_Enemy) and
       @active_battler.current_action.basic == 2
      # Display "Escape" in help window
      @help_window.set_text("Escape", 1)
      # Escape
      @active_battler.escape
      return
    end
    # If doing nothing
    if @active_battler.current_action.basic == 3
      # Clear battler being forced into action
      $game_temp.forcing_battler = nil
      # Shift to step 1
      @phase4_step = 1
      return
    end
  end
  
  alias slv_stormblade update_phase4_step3
  
  def update_phase4_step3
    # Takes some charge from the Stormblade if the actor stops using it or
    # if the actor used and missed
    if @active_battler.current_action.basic != 0 or !@target_battlers[0].damage.is_a?(Integer)
      if @active_battler.is_a?(Game_Actor) and !@slv_stormblades.nil? and
        SLV_Config::STORMBLADE_SETUP.has_key?(@active_battler.weapon_id) and
        !@slv_stormblades[@active_battler.index].nil?
        @slv_stormblades[@active_battler.index] -= SLV_Config::STORMBLADE_SETUP[@active_battler.weapon_id][:lose]
        @slv_stormblades[@active_battler.index] = 0 if @slv_stormblades[@active_battler.index] < 0
      end      
    end
    slv_stormblade
  end

end

Instrucciones:
Requiere Lightning Burst v0.2.3.2 para funcionar. Stormblade funciona llamando a un Lightning Burst cuando el arma se carga.
Copypastear encima de Main. El module se configura tal que
Código:
Weapon_ID => {:max => v1, :gain => v2, :lose => v3, :skill => v4,},
[Weapon_ID] es la ID del arma que funciona como Stormblade.
[:max] es la carga máxima del arma; cuándo se activará el efecto.
[:gain] es la carga que se gana con cada ataque normal.
[:lose] es la cantidad de carga que se pierde por no atacar con el arma, o por fallar.
[:skill] es la ID de la que skill que se ejecutará con el Lightning Burst.

Nota: la :skill debe estar configurada en Lightning Burst para que se ejecute el efecto.

Statikk Shiv: cread un Lightning Burst con decay 0 y bounce 4.

Actualizado a versión 0.2:
La idea original de Wecocio era que Stormblade no costara SPs. Ahora se pueden usar usar skills que cuesten SPs. Stormblade no se activará si el jugador no tiene SPs suficientes.
Compatible con Bloodprice. Si el personaje cumple las condiciones de Bloodprice y no tiene HPs suficientes, Stormblade no se ejecutará.


Última edición por silvanash el 2017-01-11, 15:57, editado 2 veces
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1520

Gracias : 204

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Stormblade v0.2; armas normales que ejecutan skills en área

Mensaje por silvanash el 2017-01-11, 02:57

Algunas ideas para Stormblades.

Pseudo-combo:
En Stormblade: Weapon_ID => {:max => 1, :gain => 1, :lose => 0, :skill => s},
En Ligthning Burst: s => {:decay => 0.5, :bounce => 1, :hit_main => true, :range => 0,},
Esa Stormblade siempre ejecutará un Lightning Burst sobre el mismo objetivo que recibió el ataque. El :range => 0 impide que Lightning Burst se pueda aplicar a otro objetivo si el daño del arma en sí es suficiente para matar al blanco principal.

Pseudo-escopeta:
En Stormblade: Weapon_ID => {:max => 2, :gain => 1, :lose => 1, :skill => s},
En Lightning Burst: s => {:decay => 0.4, :bounce => 3, :hit_main => true, :range => 110,},
Esa Stormblade ejecutará un ataque cada 2 turnos que afectará a 2 objetivos cercanos (220 pixeles, un poco más de 1/3 del ancho estándar del Maker; ese :range => 110 es el radio de un círculo trazado sobre el blanco principal, la distancia real es el doble de eso) y también hará daño adicional al blanco principal del ataque.

Chain Lightning con un arma:
En Stormblade: Weapon_ID => {:max => 5, :gain => 1, :lose => 1, :skill => s},
En Lightning Burst: s => {:decay => 0, :bounce => 1, :range => 320,},
Esa Stormblade ejecutará un ataque cada 5 turnos que afecta a un objetivo un máximo de 320 pixels de distancia (la mitad del ancho de la pantalla). En este caso, :range no se usa como el radio, sino como el alcance máximo poruque este Lightning Burst sólo puede alcanzar a un objetivo. El segundo objetivo recibirá el daño completo de la skill ejecutada en Lightning Burst.

Simular que se tira una red:
En Stormblade: Weapon_ID => {:max => 10, :gain => 1, ;lose => 2, :skill => s},
En Lightning Burst: s => {:decay => 0, :bounce => 8, :range => 100, :hit_main => true,},
En la base de datos, hacer que esa skill añada un estado de parálisis. Lightning Burst se ejecutará cada 10 ataques sobre una pequeña zona de la pantalla, pero afectando a 8 enemigos. La Stormblade gana 1 de carga por ataque, y pierde 2 de carga por turno si se deja de usar o el personaje falla.

Nota:
Lo de ":skill => s," significa que la "s" se debe reemplazar por la ID de la skill que sea ejecutada por la Stormblade.

Nota2:
Estas cosas se pueden hacer sin Stormblades, usando sólo la parte de Lightning Burst.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1520

Gracias : 204

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Stormblade v0.2; armas normales que ejecutan skills en área

Mensaje por silvanash el 2017-01-12, 11:22

Demo de Bloodprice, Lightning Burst y Stormblade en acción. La demo es un cutri-juego de 5 minutos en el que se usan los tres scripts. El juego está sin encriptar, para que podáis ver cómo están configurados los scripts.

A medida que avanza el juego, la protagonista conseguirá nuevas skills. Fijaos bien en qué skills tiene, porque los tres scripts están basados en skills.

Y ahora enlace. Pincha aquí.

Requiere RTP.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1520

Gracias : 204

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Stormblade v0.2; armas normales que ejecutan skills en área

Mensaje por Contenido patrocinado


Contenido patrocinado


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.