[Rpgmaker script]Clima "tormenta eléctrica"

Like Tree10Gracias
Respuesta
 
Herramientas Desplegado
  #1  
05/04/2017
Predeterminado [Rpgmaker script]Clima "tormenta eléctrica"
Este fue el primer script que hice en rpg maker. Consiste en un clima nuevo basado en una "tormenta eléctrica" cuyos efectos son:

-Cada final de turno todos los pokémon en el campo de batalla son dañados 1/3hp.

-Los pokémon tipo eléctrico o tierra son inmunes a este efecto. También lo son los pokémon con Pararrayos o Absor.Electricidad.

-Los pokémon de tipo Volador, Agua o Acero reciben un daño de 1/2 de su vida en lugar de 1/3.
-No te puedes proteger de este efecto con ningún objeto (de momento) ni con la habilidad Funda.

¿Cómo lo meto en mi proyecto?

Añadir a tu script las cosas escritas en rojo
de forma que queden como está en este post.
En el script PBWeather
Código:
#11045744
begin
  module PBWeather
    SUNNYDAY    = 1
    RAINDANCE   = 2
    SANDSTORM   = 3
    HAIL        = 4
    HARSHSUN    = 5
    HEAVYRAIN   = 6
    STRONGWINDS = 7
    THUNDERSTO  = 9
En el script PokeBattle_Battle buscad esto

Código:
if @weather==PBWeather::SUNNYDAY
      pbCommonAnimation("Sunny",nil,nil)
      pbDisplay(_INTL("The sunlight is strong."))
    elsif @weather==PBWeather::RAINDANCE
      pbCommonAnimation("Rain",nil,nil)
      pbDisplay(_INTL("It is raining."))
    elsif @weather==PBWeather::SANDSTORM
      pbCommonAnimation("Sandstorm",nil,nil)
      pbDisplay(_INTL("A sandstorm is raging."))
    elsif @weather==PBWeather::HAIL
      pbCommonAnimation("Hail",nil,nil)
      pbDisplay(_INTL("Hail is falling."))
    elsif @weather==PBWeather::THUNDERSTO
      pbCommonAnimation("Rain",nil,nil)
      pbDisplay(_INTL("You are under a thunderstorm"))
    elsif @weather==PBWeather::HEAVYRAIN
      pbCommonAnimation("HeavyRain",nil,nil)
      pbDisplay(_INTL("It is raining heavily."))
    elsif @weather==PBWeather::HARSHSUN
      pbCommonAnimation("HarshSun",nil,nil)
      pbDisplay(_INTL("The sunlight is extremely harsh."))
    elsif @weather==PBWeather::STRONGWINDS
      pbCommonAnimation("StrongWinds",nil,nil)
      pbDisplay(_INTL("The wind is strong."))
    end
y esto

Código:
              !i.hasWorkingAbility(:OVERCOAT) &&
               !i.hasWorkingItem(:SAFETYGOGGLES) &&
               ![0xCA,0xCB].include?(PBMoveData.new(i.effects[PBEffects::TwoTurnAttack]).function) # Dig, Dive
              @scene.pbDamageAnimation(i,0)
              i.pbReduceHP((i.totalhp/16).floor)
              pbDisplay(_INTL("{1} is buffeted by the hail!",i.pbThis))
              if i.isFainted?
                return if !i.pbFaint
              end
            end
          end
        end
      end
      #----------THUNDERSTORM------------
    when PBWeather::THUNDERSTO
      @weatherduration=@weatherduration-1 if @weatherduration>0
      if @weatherduration==0
        pbDisplay(_INTL("The thunder storm stopped."))
        @weather=0
        PBDebug.log("[End of effect] Thunder weather ended")
      else
        pbCommonAnimation("Rain",nil,nil)
#        pbDisplay(_INTL("The thunderstorm continues falling."))
        if pbWeather==PBWeather::THUNDERSTO
          PBDebug.log("[Lingering effect triggered] Thunderstorm damage")
          for i in priority
            next if i.isFainted?
            if !i.pbHasType?(:ELECTRIC) &&
               !i.pbHasType?(:GROUND) &&
               !i.hasWorkingAbility(:LIGHTNINGROD) &&
               !i.hasWorkingAbility(:VOLTABSORB) &&
               ![0xCA,0xCB].include?(PBMoveData.new(i.effects[PBEffects::TwoTurnAttack]).function) # Dig, Dive
              @scene.pbDamageAnimation(i,0)
              if !i.pbHasType?(:WATER) &&
                 !i.pbHasType?(:FLYING) &&
                 !i.pbHasType?(:STEEL)
                 i.pbReduceHP((i.totalhp/3).floor)
                 pbDisplay(_INTL("{1} is hitted by a thunder!",i.pbThis))
               else  
               i.pbReduceHP((i.totalhp/2).floor)
               pbDisplay(_INTL("{1} is hitted by a thunder!",i.pbThis))
              if i.isFainted?
                return if !i.pbFaint
              end
             end 
            end
          end
        end
    end
    when PBWeather::HEAVYRAIN
      hasabil=false
      for i in 0...4
        if isConst?(@battlers[i].ability,PBAbilities,:PRIMORDIALSEA) && !@battlers[i].isFainted?
          hasabil=true; break
        end
y finalmente para implementar que cuando el clima de "Storm" en el overworld cause este tipo de clima hay que buscar en PField_Field
y cambiar el script para que la sección indicada quede así

Código:
def pbPrepareBattle(battle)
  case $game_screen.weather_type
  when PBFieldWeather::Rain, PBFieldWeather::HeavyRain 
    battle.weather=PBWeather::RAINDANCE
    battle.weatherduration=-1
  when PBFieldWeather::Storm
     battle.weather=PBWeather::THUNDERSTO
     battle.weatherduration=-1
  when PBFieldWeather::Snow, PBFieldWeather::Blizzard
    battle.weather=PBWeather::HAIL
    battle.weatherduration=-1
  when PBFieldWeather::Sandstorm
    battle.weather=PBWeather::SANDSTORM
    battle.weatherduration=-1
  when PBFieldWeather::Sun
    battle.weather=PBWeather::SUNNYDAY
    battle.weatherduration=-1
  end
  battle.shiftStyle=($PokemonSystem.battlestyle==0)
  battle.battlescene=($PokemonSystem.battlescene==0)
  battle.environment=pbGetEnvironment
end
Y ya estaría.


En PokeBattle_Battle

Boostear Ataques Eléctricos


Código:
   case @battle.pbWeather
    when PBWeather::SUNNYDAY, PBWeather::HARSHSUN
      if isConst?(type,PBTypes,:FIRE)
        damage=(damage*1.5).round
      elsif isConst?(type,PBTypes,:WATER)
        damage=(damage*0.5).round
      end
    when PBWeather::THUNDERSTO
      if isConst?(type,PBTypes,:ELECTRIC)
        damage=(damage*1.5).round
      end
    when PBWeather::RAINDANCE, PBWeather::HEAVYRAIN
      if isConst?(type,PBTypes,:FIRE)
        damage=(damage*0.5).round
      elsif isConst?(type,PBTypes,:WATER)
        damage=(damage*1.5).round
      end
    end


Boost Velocidad en tipo eléctrico

En PokeBattle_Battler buscar esto y añadir lo rojo de forma que quede como está aquí.
Ya está testeado y funciona correctamente.
Código:
def pbSpeed()
    stagemul=[10,10,10,10,10,10,10,15,20,25,30,35,40]
    stagediv=[40,35,30,25,20,15,10,10,10,10,10,10,10]
    speed=@speed
    stage=@stages[PBStats::SPEED]+6
    speed=(speed*stagemul[stage]/stagediv[stage]).floor
    speedmult=0x1000
    case @battle.pbWeather
    when PBWeather::RAINDANCE, PBWeather::HEAVYRAIN
      speedmult=speedmult*2 if self.hasWorkingAbility(:SWIFTSWIM)
    when PBWeather::SUNNYDAY, PBWeather::HARSHSUN
      speedmult=speedmult*2 if self.hasWorkingAbility(:CHLOROPHYLL)
    when PBWeather::SANDSTORM
      speedmult=speedmult*2 if self.hasWorkingAbility(:SANDRUSH)
    when PBWeather::THUNDERSTO
      speedmult=speedmult*2 if self.pbHasType?(:ELECTRIC)
    end
    if self.hasWorkingAbility(:QUICKFEET) && self.status>0
      speedmult=(speedmult*1.5).round
    end
    if self.hasWorkingAbility(:UNBURDEN) && @effects[PBEffects::Unburden] &&
       self.item==0
      speedmult=speedmult*2
    end
    if self.hasWorkingAbility(:SLOWSTART) && self.turncount<=5
      speedmult=(speedmult/2).round
    end


Cualquier bug que podáis encontrar no dudéis en reportarmelo. Saludos.

Última edición por Rainsis; 05/04/2017 a las 21:29
  #2  
05/04/2017
Predeterminado Respuesta: [Rpgmaker script]Clima "tormenta eléctrica"
Genial esto se va directo a mi proyecto,Se agradece que se traigan cosas de este tipo te informare si encuentro algún fallo



Salu2 y Geo fuera
Gracias: Rainsis


"Tus errores te perseguirán hasta la muerte, a menos que aprendas de ellos"
Mi proyecto

  #3  
05/04/2017
Predeterminado Respuesta: [Rpgmaker script]Clima "tormenta eléctrica"
También, si alguien quiere que los movimientos eléctricos se vean mejorados hay que poner en PokeBattle_Move lo siguiente:

Boostear Ataques Eléctricos

Código:
   case @battle.pbWeather
    when PBWeather::SUNNYDAY, PBWeather::HARSHSUN
      if isConst?(type,PBTypes,:FIRE)
        damage=(damage*1.5).round
      elsif isConst?(type,PBTypes,:WATER)
        damage=(damage*0.5).round
      end
    when PBWeather::THUNDERSTO
      if isConst?(type,PBTypes,:ELECTRIC)
        damage=(damage*1.5).round
      end
    when PBWeather::RAINDANCE, PBWeather::HEAVYRAIN
      if isConst?(type,PBTypes,:FIRE)
        damage=(damage*0.5).round
      elsif isConst?(type,PBTypes,:WATER)
        damage=(damage*1.5).round
      end
    end

Aunque personalmente prefiero que los pokémon eléctricos tenga velocidad x1.5

Boost Velocidad en tipo eléctrico

En PokeBattle_Battler buscar esto y añadir lo rojo de forma que quede como está aquí.
Ya está testeado y funciona correctamente.
Código:
def pbSpeed()
    stagemul=[10,10,10,10,10,10,10,15,20,25,30,35,40]
    stagediv=[40,35,30,25,20,15,10,10,10,10,10,10,10]
    speed=@speed
    stage=@stages[PBStats::SPEED]+6
    speed=(speed*stagemul[stage]/stagediv[stage]).floor
    speedmult=0x1000
    case @battle.pbWeather
    when PBWeather::RAINDANCE, PBWeather::HEAVYRAIN
      speedmult=speedmult*2 if self.hasWorkingAbility(:SWIFTSWIM)
    when PBWeather::SUNNYDAY, PBWeather::HARSHSUN
      speedmult=speedmult*2 if self.hasWorkingAbility(:CHLOROPHYLL)
    when PBWeather::SANDSTORM
      speedmult=speedmult*2 if self.hasWorkingAbility(:SANDRUSH)
    when PBWeather::THUNDERSTO
      speedmult=speedmult*2 if self.pbHasType?(:ELECTRIC)
    end
    if self.hasWorkingAbility(:QUICKFEET) && self.status>0
      speedmult=(speedmult*1.5).round
    end
    if self.hasWorkingAbility(:UNBURDEN) && @effects[PBEffects::Unburden] &&
       self.item==0
      speedmult=speedmult*2
    end
    if self.hasWorkingAbility(:SLOWSTART) && self.turncount<=5
      speedmult=(speedmult/2).round
    end


Los añado al post principal.

Última edición por Rainsis; 05/04/2017 a las 21:29
  #4  
05/04/2017
Predeterminado Respuesta: [Rpgmaker script]Clima "tormenta eléctrica"
Menudo pedazo de aporte, probablemente lo mire a ver si hay algún fallo, quiero asegurarme, y en el caso de que no halla, puede que lo meta. Muchas gracias por traernos algo tan bueno.

Mi proyecto


  #5  
05/04/2017
Predeterminado Re: [Rpgmaker script]Clima "tormenta eléctrica"
Wuw, aportazo, interesante la cosa, yo tambien voy a probarlo, espero funcione que parece interesante, desde ya "Gran Aporte"
  #6  
05/04/2017
Predeterminado Respuesta: [Rpgmaker script]Clima "tormenta eléctrica"
Un genial aporte!
No soy maker pero tanto la idea como el desarrollo es fantástica!!
seguro le servirá a varios makers de la comunidad (a los que quedan)

Es alentador ver que se sigue aportando de estas cosas por aquí
¡Muchas Gracias!

El inteligente no es aquel que lo sabe todo

Si no aquel que sabe utilizar lo poco que sabe
  #7  
05/04/2017
Predeterminado Respuesta: [Rpgmaker script]Clima "tormenta eléctrica"
Me gusta la idea, per no crees que quitar la mitad de la vida en un turno es muy exagerado? Quizas podrías hacer que quitara lo mismo que Tormenta de Arena/Granizo, pero que quite el doble a Pokémon Voladores, Agua y Acero. Creo que lo veo más realista.

Aun así, es un buen aporte ^^

Este tío es un...

  #8  
05/04/2017
Predeterminado Respuesta: [Rpgmaker script]Clima "tormenta eléctrica"
Dicho por Tervaxx Ver mensaje
Me gusta la idea, per no crees que quitar la mitad de la vida en un turno es muy exagerado? Quizas podrías hacer que quitara lo mismo que Tormenta de Arena/Granizo, pero que quite el doble a Pokémon Voladores, Agua y Acero. Creo que lo veo más realista.

Aun así, es un buen aporte ^^

No me parece del todo exagerado, después de todo, le ha caído un rayo a un pájaro ¿no? lo mas realista sería instakill. De todas formas el daño que haga o deje de hacer lo podéis cambiar de la siguiente manera:

-En el 3er script explicado, la parte roja sería esto

3er script indicado en el primer post

Código:
 #----------THUNDERSTORM------------
    when PBWeather::THUNDERSTO
      @weatherduration=@weatherduration-1 if @weatherduration>0
      if @weatherduration==0
        pbDisplay(_INTL("The thunder storm stopped."))
        @weather=0
        PBDebug.log("[End of effect] Thunder weather ended")
      else
        pbCommonAnimation("Rain",nil,nil)
#        pbDisplay(_INTL("The thunderstorm continues falling."))
        if pbWeather==PBWeather::THUNDERSTO
          PBDebug.log("[Lingering effect triggered] Thunderstorm damage")
          for i in priority
            next if i.isFainted?
            if !i.pbHasType?(:ELECTRIC) &&
               !i.pbHasType?(:GROUND) &&
               !i.hasWorkingAbility(:LIGHTNINGROD) &&
               !i.hasWorkingAbility(:VOLTABSORB) &&
               ![0xCA,0xCB].include?(PBMoveData.new(i.effects[PBEffects::TwoTurnAttack]).function) # Dig, Dive
              @scene.pbDamageAnimation(i,0)
              if !i.pbHasType?(:WATER) &&
                 !i.pbHasType?(:FLYING) &&
                 !i.pbHasType?(:STEEL)
                 i.pbReduceHP((i.totalhp/3).floor)
                 pbDisplay(_INTL("{1} is hitted by a thunder!",i.pbThis))
               else  
               i.pbReduceHP((i.totalhp/2).floor)
               pbDisplay(_INTL("{1} is hitted by a thunder!",i.pbThis))
              if i.isFainted?
                return if !i.pbFaint
              end
             end 
            end
          end
        end
    end


Pues bien, la parte en rojo actualmente indica el daño que recibiría un pokémon sin ser tipo Agua, Volador o Acero. Eso es una función que básicamente significa REDUCIR VIDA EN (VIDA TOTAL/3) es decir vida actual menos 1/3 de vida total. Sabiendo eso puedes cambiar el número 3 por un 16 (que es lo que sería en granizo/tormenta arena) o en un 1 que sería un instakill.
Luego, la parte en cián indica exactamente lo mismo que la roja pero esta reduce en 1/2 la vida de los "entes" especificados antes; en este caso los pokémon Agua, Volador y Acero


Aprovecho esto para decir que la parte de Boostear la velocidad de los pokes eléctricos está mal ya que en batalla técnicamente la boostea al final del turno, durante ese turno por lo que es inútil.

Aquí está la versión buena:

Boost Velocidad en tipo eléctrico

En PokeBattle_Battler buscar esto y añadir lo rojo de forma que quede como está aquí.
Ya está testeado y funciona correctamente.
Código:
def pbSpeed()
    stagemul=[10,10,10,10,10,10,10,15,20,25,30,35,40]
    stagediv=[40,35,30,25,20,15,10,10,10,10,10,10,10]
    speed=@speed
    stage=@stages[PBStats::SPEED]+6
    speed=(speed*stagemul[stage]/stagediv[stage]).floor
    speedmult=0x1000
    case @battle.pbWeather
    when PBWeather::RAINDANCE, PBWeather::HEAVYRAIN
      speedmult=speedmult*2 if self.hasWorkingAbility(:SWIFTSWIM)
    when PBWeather::SUNNYDAY, PBWeather::HARSHSUN
      speedmult=speedmult*2 if self.hasWorkingAbility(:CHLOROPHYLL)
    when PBWeather::SANDSTORM
      speedmult=speedmult*2 if self.hasWorkingAbility(:SANDRUSH)
    when PBWeather::THUNDERSTO
      speedmult=speedmult*2 if self.pbHasType?(:ELECTRIC)
    end
    if self.hasWorkingAbility(:QUICKFEET) && self.status>0
      speedmult=(speedmult*1.5).round
    end
    if self.hasWorkingAbility(:UNBURDEN) && @effects[PBEffects::Unburden] &&
       self.item==0
      speedmult=speedmult*2
    end
    if self.hasWorkingAbility(:SLOWSTART) && self.turncount<=5
      speedmult=(speedmult/2).round
    end
Gracias: Tervaxx y Sayer301!

Última edición por Rainsis; 05/04/2017 a las 21:43
  #9  
05/04/2017
Predeterminado Respuesta: [Rpgmaker script]Clima "tormenta eléctrica"
Buah no soy Maker tampoco, pero me flipa que se aporten ideas de este estilo tan guay, encima explicando todo bastante bien y hasta como cambiar el daño que es algo que tampoco me tenía muy convencido. Mis dieces señor, me quito el sombrero!
Si no sigues al Pokémon Verde Hierba, entonces eres un mierda!!


Gracias a todos!

MIS HACKS FAVORITOS DE WAH:

  #10  
05/04/2017
Predeterminado Respuesta: [Rpgmaker script]Clima "tormenta eléctrica"
Gran aporte
Pero me pasa que no se que poner en la pbs de "moves", perdón si es muy nub la pregunta, gracias de antemano .
Respuesta

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 01:44.