Mundo Maker
¡Bienvenid@ a Mundo Maker!

¿Quieres aprender todo sobre el RPG Maker?



Regístrate y forma parte de Mundo Maker.

[RMXP] Script de Estados Veneno/Cura

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP] Script de Estados Veneno/Cura

Mensaje por Ripher el 2013-01-18, 01:41

Hola, miren, tengo este Script de Estados,
donde al solo cambiar un factor de daño a negativo, se puede crear
efectos de recuperacion por turnos, o al aumentar el factor, un veneno mas poderoso.

Mi duda, es si se puede agregar como un Script por separado, independiente
sin alterar el Game_Battler 3.

Y habra forma de hacer el mismo tipo de efecto pero que
afecte el MP/PM.


Código:

#---------------------------------------------------------------------------- 
# - Estados Venenos y Revitalias
#----------------------------------------------------------------------------
#
# Pegar en Game_Battler 3
#
#
#
# Para el estado del personaje, verificar si el estado daña
# testea si este estado es un estado de recuperacion
# verificando el nombre y la id del estado correspondiente en la BD
#
#  self.damage*= (-2) # esto es para un efecto positivo (recuperar HP/PV)
#
#  self.damage*= (2) # esto es para un efecto negativo como veneno (daña HP/PV)
#
#    when 51 #ID del estado en BD
#      if $data_states[i].id =51 and self.damage > 0
#      $data_states[51].name="Auto PV" #Nombre que aparecerá en batalla
#      self.damage*= (-2)              #Valor del "DAÑO"
#                  #negativo para recuperar, positivo para dañar
#      self.hp -= self.damage
#    end
#----------------------------------------------------------------------------



for i in @states
  case i
    when 51 #Autorevitalia
      if $data_states[i].id =51 and self.damage > 0
      $data_states[51].name="Auto PV"
      self.damage*= (-2)
      self.hp -= self.damage
    end
    when 3 #Veneno
      if $data_states[i].id =3 and self.damage > 0
      $data_states[3].name="Poison"
      self.damage*= (3)
      self.hp -= self.damage
    end
    when 53 #Regen
      if $data_states[i].id =53 and self.damage > 0
      $data_states[53].name="Regen 1"
      self.damage*= (-3)
      self.hp -= self.damage
    end
    when 20 #Quemado
      if $data_states[i].id =20 and self.damage > 0
      $data_states[20].name="Burn"
      self.damage*= (2)
      self.hp -= self.damage
    end
    when 21 #Tortura
      if $data_states[i].id =21 and self.damage > 0
      $data_states[21].name="Punishment"
      self.damage*= (10)
      self.hp -= self.damage
    end
    when 23 #Sangramiento
      if $data_states[i].id =23 and self.damage > 0
      $data_states[23].name="Bleeding 1"
      self.damage*= (4)
      self.hp -= self.damage
    end
    when 24 #Sangramiento +
      if $data_states[i].id =24 and self.damage > 0
      $data_states[24].name="Bleeding 2"
      self.damage*= (8)
      self.hp -= self.damage
    end
    when 49 #Peste
      if $data_states[i].id =49 and self.damage > 0
      $data_states[49].name="Sickness"
      self.damage*= (6)
      self.hp -= self.damage
    end
    when 55 #Zombie
      if $data_states[i].id =55 and self.damage < 0
      self.damage*= (8)
    end   
    when 54 #Super Regen
      if $data_states[i].id =54 and self.damage > 0
      $data_states[54].name="Regen 2"
      self.damage*= (-10)
      self.hp -= self.damage
    end       
    # Daño sustraido del PV
    self.hp -= self.damage
    # Fin del metodo
    return true
  end
end
avatar
Ripher
Novato
Novato

0/3

Créditos 60

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Wecoc el 2013-01-18, 01:56

Ese script no está dentro de ninguna class ni ninguna def... Lo siento por el que lo haya hecho, pero ese método es un tanto chapuza u_u" Pero supongo que en este caso solo poniendo class Game_Battler en primera línea y end en la última ya funcionaría separadamente.
Para lo segundo, ¿ves que pone en algunas líneas self.hp -= self.damage? Creo que cambiándolo por self.sp -= self.damage ya funcionaría lo de ir por magia.
avatar
Wecoc
Administrador
Administrador



Créditos 12284

Gracias : 645

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por silvanash el 2013-01-18, 02:49

He hecho un pequeño apaño con el slip_damage del Game_Battler, a ver si te convence:

Spoiler:
Código:
class Game_System
 
  attr_accessor :new_slip
 
  alias old_init initialize
 
  def initialize
    old_init
    @new_slip = false
  end

end

class Game_Battler
 
  alias old_slip slip_damage_effect
 
  def slip_damage_effect
    if $game_system.new_slip = false
      old_slip
    else
      for i in @states
        case i
        #Recovery; 10% per turn
        when 2  #Id de regeneración
          self.damage = -self.maxhp / 10
          # Dispersion
          if self.damage.abs > 0
            amp = [self.damage.abs * 15 / 100, 1].max
            self.damage += rand(amp+1) + rand(amp+1) - amp
          end
          # Subtract damage from HP
          self.hp -= self.damage
        when 3  #ID de veneno
          self.damage = self.maxhp / 10
          # Dispersion
          if self.damage.abs > 0
          amp = [self.damage.abs * 15 / 100, 1].max
          self.damage += rand(amp+1) + rand(amp+1) - amp
          end
          # Subtract damage from HP
          self.hp -= self.damage
        when 4  #ID de regeneración de MP
          self.damage = -self.maxsp / 10
          # Dispersion
          if self.damage.abs > 0
          amp = [self.damage.abs * 15 / 100, 1].max
          self.damage += rand(amp+1) + rand(amp+1) - amp
          end
          # Subtract damage from HP
          self.sp -= self.damage
        when 5  #ID de daño de MP
          self.damage = self.maxsp / 10
          # Dispersion
          if self.damage.abs > 0
          amp = [self.damage.abs * 15 / 100, 1].max
          self.damage += rand(amp+1) + rand(amp+1) - amp
          end
          # Subtract damage from HP
          self.sp -= self.damage
        end
      end
    end
    # End Method
    return true
  end
end

Para usarlo, tienes que hacer llamada a script con "$game_system.new_slip = true" al principio del juego (sin usar comillas), para que el Maker sepa que debe usar este sistema y no el original. Además, los estados que causen ganancia/pérdida de HP/MP deben tener la casilla de "recibe daño progresivamente" activada. La ID de los estados que provocan cada efecto se puede cambiar, y he dejado anotaciones en el script para saber cuáles son.

Por defecto:
2: recuperación del 10% de HP por turno.
3: daño del 10% de HP por turno.
4: recuperación del 10% de MP por turno.
5: daño del 10% de MP por turno.

Si tienes dudas pregúntale a wecoc, que sabrá mejor que yo xD

Edito:

Instrucciones 4dummies, que nunca se sabe xDD. Este script se puede usar sin tocar el Game_Battler original. Lo copias, haces un nuevo script encima de Main, pegas el contenido dentro y ya.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 205

Gracias : 251

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Ripher el 2013-01-18, 03:57

Perfecto! :D

pero mira:
when 51 #Autorevitalia
if $data_states[i].id =51 and self.damage > 0
$data_states[51].name="Auto PV"
self.damage*= (-2)
self.hp -= self.damage
end
-en este ejemplo, el self.damage es un factor que le da nivel al Veneno/Cura
entre mas es el factor mas es el daño inflingido por turno.
Supongo que el /10 es el 10%?
-Tambien se coloca un nombre al efecto en el ejemplo dice "Auto PV".

esto lo agregue al Script que me has posteado, y sale error en el " > "
avatar
Ripher
Novato
Novato

0/3

Créditos 60

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por silvanash el 2013-01-18, 04:31

self.damage es la cantidad de "efecto" que será aplicado. No sé cómo funciona el script que te han pasado (de hecho, creo que ni siquiera funciona, porque las condiciones están mal escritas), pero en el script original, self.damage equivale al HP/10.

Lo de ponerle el nombre al state no sé para qué demonios sirve. Se supone que todos los estados traen ya un nombre, que es el que les pones en la base de datos. Forzar al estado a recibir otro nombre vía script no tiene sentido. Lo que hace la línea de $data_states[51].name="Auto PV" es (creo) cambiar el nombre del estado 51, sea el que sea.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 205

Gracias : 251

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Ripher el 2013-01-18, 04:59

Si, en realidad, lo del nombre no tiene mucho sentido en realidad.
pero aun asi,
estoy probando el que me has pasado tu,
y no funciona, cuando trato de quitar MP, quita HP
o al dar HP, tambien quita HP,
como que todos los estados quitan HP.
avatar
Ripher
Novato
Novato

0/3

Créditos 60

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Ripher el 2013-01-18, 05:37

Sí, definitivamente todos quitan HP.
Antes de definir la potencia de cada tipo de estado,
deben cumplir con lo que proponen,

si dice:
when 4 #ID de regeneración de MP - "MAGUS"
self.damage = -self.maxsp / 10
# Dispersion
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# Subtract damage from HP
self.sp -= self.damage

Deberia curar el MP, pero ... no se que pasa que quita el HP...
¿tendrá que ver la definición de self.damage
que por defecto quita HP como el veneno?

avatar
Ripher
Novato
Novato

0/3

Créditos 60

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por silvanash el 2013-01-18, 12:28

Acabo de probar una batalla y funciona sin problemas, tanto la regeneración como el daño. Dato importante: cuando un personaje recupera HP/MP, el daño se muestra en verde.

¿Has hecho la llamada a script con "$game_system.new_slip = true"? Por lo que me estás diciendo, el problema está en que tu juego sigue ejecutando el método default en lugar del que escribí.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 205

Gracias : 251

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Wecoc el 2013-01-18, 15:57

A mí también me funciona. Pero una cosa, no hace falta hacer la llamada al principio del juego para activarlo. Vale cambiando en el script esto:
Código:
@new_slip = false
por esto
Código:
@new_slip = true
y así ya funcionará de buenas a primeras.

A veces creo que os complicáis demasiado la vida xD
avatar
Wecoc
Administrador
Administrador



Créditos 12284

Gracias : 645

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por silvanash el 2013-01-18, 16:15

Hombre, así daba una sensación de profesionallidad xD. Además, si quisiera que usara el método de buenas a primeras ni pondría el @new_slip, sino alias y fuera. Pero nunca se sabe si quieren usar el script o no, así que di la opción de desactivarlo.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 205

Gracias : 251

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Ripher el 2013-01-18, 18:43

Mmmm en realidad quiero usar el Script,
y he puesto un evento con inicio automatico en el primer mapa, con el script: $game_system.new_slip = true

y como he puesto en la imagen se ve claro que con cada tipo de estado, si se fijan en 100 pasos, solo les ha quitado HP. lo pueden ver?
Veneno: se supone que quita hp.
Zombie: se supone que quita MP... pero nope.
Auto-Cura: se supone que cura HP... pero lo quita
Auto-Eter: se supone que cura MP... pero quita... y HP!

le puse cada efecto a cada uno de los personajes por defecto, para ver como funciona.
no se que he hecho mal...

si quieren me postean el Script tal y como lo estan ejecutando, ya que les funciona...
gracias. pero hasta ahora, he hecho todo tal como han dicho.

avatar
Ripher
Novato
Novato

0/3

Créditos 60

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por silvanash el 2013-01-18, 19:09

Estamos usando el script (o al menos yo) tal y como lo posteé. Nuevo script encima de Main, pegar.

$game_system.new_slip = true al principio del juego.

Estado 2, 3, 4 y 5 creados en la base de datos.

Creadas habilidades que cambien el estado de los receptores al 2, 3, 4 y 5.

Creado enemigo para probar batalla.

Creado grupo enemigo para probar batalla.

Creada clase capaz de usar esas habilidades.

Creado personaje con esa clase.

Configuración de mapa: 30 pasos, el grupo enemigo que se configuró.

Pelea.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 205

Gracias : 251

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Ripher el 2013-01-18, 19:41

Bueno, no hice todo eso,
pero si:
Usando el script tal y como lo posteaste.
Nuevo script encima de Main, pegar.
$game_system.new_slip = true al principio del juego.
Estado 2, 3, 4 y 5 creados en la base de datos.
tengo 4 eventos que otorgan cada uno de los estados a cada uno de los personajes
quedando:
Alexis con estado id 2 (recupera HP)
Basil con estado id 3 (quita HP)
Gloria con estado id 4 (recupera MP)
Hilda con estado id 5 (quita MP)

y sigo teniendo que todos roban HP.

Ahora probe la batalla, y resultan todos,
pero en mapa... no.
al caminar, en el mapa, con los personajes, todos pierden HP,
intentalo! :D

avatar
Ripher
Novato
Novato

0/3

Créditos 60

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Wecoc el 2013-01-18, 20:03

¡D'OH! Yo lo estaba probando en batalla. En mapa es normal que pase lo que dices, porque el script de silvanash afecta al Game_Battler mientra que en mapa va regulado por el Game_Party (en concreto check_map_slip_damage).
Silva, habría que cambiar esto:
Código:
  def check_map_slip_damage
    for actor in @actors
      if actor.hp > 0 and actor.slip_damage?
        actor.hp -= [actor.maxhp / 100, 1].max
        if actor.hp == 0
          $game_system.se_play($data_system.actor_collapse_se)
        end
        $game_screen.start_flash(Color.new(255,0,0,128), 4)
        $game_temp.gameover = $game_party.all_dead?
      end
    end
  end
para adaptarlo a tu script. Te lo dejo que lo hagas tú, muájajaja (es que no tengo tiempo yo)

Lo que sí puedo pasaros es un script que lo que hace es alterar ese comando independientemente de que andes o no si estas en mapa, porque ya lo tenía hecho xDD Me explico, sin usar el script que pondré a continuación, tu hp/sp solo aumentará/disminuirá cuando andes si tienes el estado, mientra que si usas el script lo hará siempre que tengas el estado.

Código:
class Game_Player < Game_Character
  def increase_steps
    super
    unless @move_route_forcing
      $game_party.increase_steps
    end
  end
  alias veneno_upd update unless $@
  def update
    $game_party.check_map_slip_damage if rand(20) == 1
    veneno_upd
  end
end
No pido créditos, por cierto xD
avatar
Wecoc
Administrador
Administrador



Créditos 12284

Gracias : 645

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por silvanash el 2013-01-18, 20:28

Ya está, apañado el check_slip_damage del Game_Party.

Spoiler:
Código:
class Game_Party
 
  alias old_init initialize
 
  def initialize
    old_init
    @slip_damage = false
  end
 
  alias old_check check_map_slip_damage
 
  def check_map_slip_damage
    if $game_system.new_slip = false
      old_check
    else
      for actor in @actors
        if actor.hp > 0 and actor.slip_damage?
          if actor.state?(2) #ID de regeneración
            actor.hp += [actor.maxhp / 100, 1].max
          end
          if actor.state?(3) #ID de daño de HP
            actor.hp -= [actor.maxhp / 100, 1].max
            @slip_damage = true
            if actor.hp == 0
              $game_system.se_play($data_system.actor_collapse_se)
            end
          end
          if actor.state?(4)  #ID de regeneración de MP
            actor.sp += [actor.maxsp / 100, 1].max
          end
          if actor.state?(5)  #ID de daño de MP
            actor.sp -= [actor.maxsp / 100, 1].max
          end
        end
      end
      if @slip_damage
          $game_screen.start_flash(Color.new(255,0,0,128), 4)
          $game_temp.gameover = $game_party.all_dead?
          @slip_damage = false
      end
    end
  end

end

Entender esto me ha costado horrores xD. No pensaba que los actors del game_party funcionaran con los métodos del game_battler.

Instrucciones: pegar encima de Main. $game_system.new_slip = true. Verás un puñado de actor.state?(x) en el script. Esa "X" es la ID del estado. Ya lo he probado, y funciona, aunque aquí sólo aumenta/reduce un 1% por paso (hacer el 10% supondría matar al equipo en 10 pasos xDDDDDDDDDDDD).

Yo tampoco pido créditos, que esto está siendo prácticas de scripting para mí.

Edito: respondo a la duda que me ha mandado Ripher por MP, por si a alguien más le interesa. Su pregunta es cómo cambiar la cantidad de daño que se aplica por turno. En el script, self.damage es igual a maxhp/maxsp entre 10. Es decir, la décima parte del límite de HP/MP que pueda tener el personaje. Si cambias ese número cambiará la cantidad de damage que se aplica. Hacer la división entre 5 supondría aumentar/disminuir el 20% del valor máximo por turno (la quinta parte del total es un 20%). Dividir entre 3 aumentaría/disminuiría en un 33.333333333% la cantidad total (una tercera parte del total es un 33.33333333333%). Dividir entre 100 supondría variaciones del 1% por turno. Y así sucesivamente. Matemáticas básicas, sin nada del Maker en medio xD.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 205

Gracias : 251

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Ripher el 2013-01-18, 20:39

OHH!, se han pasado! son geniales!
incluso se puede hacer un
sistema de hambre "falso", por asi decirlo,
se crea un veneno mas debil, llamado hambre, el cual
va quitando hp o mp, con un daño mucho menor que en el mapa se hace efectivo.
y se puede quitar con algun alimento.

otra cosa, como se puede modificar, el destello rojo por estado?
como cambiar el color dependiendo el estado?
Ejemplos:
Sangramiento: rojo
Veneno: Morado
Peste: Amarillo
Hambre: Sin Destello.

:D eso seria por ahora!
esto quedara muy completo y haciendole el peso a otros scritps muy complejos de
sistemas de hambre y sed.

Supongo que es editable el 1%, ya que necesito que cada efecto sea distinto a otro
uno sea mortal! y otro sea casi imperceptible: Ejemplo:
Tortura, es como un veneno mortal! con unos cuantos pasos, el personaje muere.
Hemorragia, tiene un nivel medio de daño, pero si se descuida, el personaje muere.
Hambre, no mata al personaje, pero si no se alimenta, el personaje en un largo periodo muere,
avatar
Ripher
Novato
Novato

0/3

Créditos 60

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por silvanash el 2013-01-18, 20:42

Hijo, no abuses de la paciencia de un makero honrado xDD

De momento, el único destello que se muestra es el rojo, y sólo se activa cuando un personaje sufre daño de HP. No quiero hacer más destellos porque si tienes a 4 personas en el grupo, y cada una tiene un estado diferente, al final vas a acabar mostrando 4 destellos simultáneos (uno por personaje y estado) y fundiendo la CPU del que esté ejecutando eso.

Edito: cambiar el script es fácil. Está escrito de una forma muy literal, y cualquiera puede añadir o modificar estados. Para cambiar el valor del daño sólo habría que cambiar las operaciones que se hacen. En lugar de dividir entre 100, pues hacerlo entre 5 (¡y muerto en cinco pasos! ¡ZAS!)
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 205

Gracias : 251

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Ripher el 2013-01-19, 14:28

Jajajaja ok ok ok, creo que en verdad seria de destellos discotequeros! jajajaja
se fundira mi pc, y mi cerebro recivira ondas convulcionantes!

mejor no molesto mas!
:D
Muchisimas gracias por la excesiva paciencia!
Iras en los Creditos! si que sí!
avatar
Ripher
Novato
Novato

0/3

Créditos 60

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Ripher el 2015-02-04, 10:54

Después de dos años del post, abusare nuevamente de la paciencia del Makero. ;)

Quizás los destellos discotequeros no son muy apetecibles, pero quizás si la cantidad de pasos, vs daño.
Lo mas probable es que un estado como "hambre" haga daño mínimo en con una cantidad de pasos prolongada.
Y que "Hemorragia" haga un daño mas grave por cada paso que da el personaje.

En Mapa:
def check_map_slip_damage
               if $game_system.new_slip = false
              old_check
     else
         for actor in @actors
           if actor.hp > 0 and actor.slip_damage?
           if actor.state?(2) #ID de regeneración

               # define si suma o resta hp/mp
                actor.hp += [actor.maxhp / 100, 1].max
               
               #Factor de daño por el cual se multiplica para dar intensidad.
                actor.hp *= (2)         # en este caso 1% x 2 = 2% del hp máximo.
     
                # agregar o no agregar tono para cada estado en mapa.
                $game_screen.start_flash(Color.new(255,0,0,128), 4)

                # cambiar el numero de pasos... en otra clase???
               N pasos para aplicar el daño/ cura del estado
end

...continua el script.

No se como incorporar el numero de pasos a la condición.
Necesitaría un poco de soporte ahí.
Muuuchas gracias!
Tremendo Aporte! Saludos!



PD: Se pueden crear tablas de pasos vs, daño, quedando definidas para la interpretación visual del jugador.
EJ.
Estado  Pasos   Daño/Cura   Color-Flash

Veneno1    5         0.3%          Purpura
Veneno2    12       1.2%          Verde
Sangramiento  2      0.8%         Rojo
Regen   5           0.2%            Sin color
Regen   25         1%               Sin color
avatar
Ripher
Novato
Novato

0/3

Créditos 60

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP He craneado otra idea

Mensaje por Ripher el 2015-03-15, 18:48

Hola Otra vez, Saludos cordiales.
Tengo años dándole a este mismo Script y sistema de Regens y Venenos (PV/PM)
Necesito terminarlo. Ya es por orgullo.
Traje esta nueva idea que me nacio de inspiracion de los Tons of Add on.
La idea es que este tipo de estados sean finamente seteables a tope.
Saludos nuevamente! espero que puedan darme algunas luces.

Código:

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#
#            Idea de Curas Progresivas, Daños Progresivos (PV/PM)
#
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#IDEA: -Poder crear varios estados seteables para daños y curas progresivas
#      que devuelvan o quiten HP o SP.
#      -Poder setear el poder de cada una en batalla y en el Mapa
#      -Cambiar el tono del flash en mapa.
#
#
# Este Script te permitiria crear varios estados de venenos y regens para
# puntos vitales y otros para puntos mágicos.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#      when "i" then return [A, B, C, D, E, F]
# donde:
# A = "Factor de daño/cura PV en Batalla" (según slip_damage)
# B = "Porcentaje de daño/cura en Mapa" (según PV max)
# C = "Factor de daño/cura PM en Batalla" (según slip_damage)
# D = "Porcentaje de daño/cura en Mapa" (según PM max)
# E = "Número de pasos"
# F = "Color de flash"; 0=Sin Flash, 1=Rojo, 2=Verde, 3=Azul, 4=Morado, 5=Blanco
#
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
class Game_System
 
  alias init_regens initialize
  def initialize
    init_regens

    @REGENS_STATES        = true #false
  end
    attr_accessor :REGENS_STATES
  end
 
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#
#
# HP_POISONS_IDS = []
# HP_REGENS_IDS  = []
# SP_POISONS_IDS = []
# SP_REGENS_IDS  = []
#
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#REGENS_STATES
#for i in @states
 #  case i
module REGENS_STATES
 def self.regens_database(id)
    case id
 
# Seteos para Puntos vitales/for HP:
  when 1 then return [-10, -2, 0, 0, 12, 2]  # Soft Poison
  when 2 then return [-20, -5, 0, 0, 6, 2]  # Hard Poison
  when 3 then return [-5, -30, 0, 0, 20, 0]  # Sickness
  when 4 then return [-10, -10, 0, 0, 2, 1]  # Bleeding
  when 5 then return [+10, +2, 0, 0, 5, 5]  # Regen
  when 6 then return [+20, +20, 0, 0, 20, 5] # SuperRegen
 
# Seteos para Puntos mágicos/for SP:   
  when 7 then return [0, 0, -10, 5, 4, 4]    # Soft Redus
  when 8 then return [0, 0, -10, 5, 4, 4]    # Hard Redus
  when 9 then return [0, 0, +10, +5, 4, 3]  # Mana
  when 10 then return [0, 0, +10, +5, 4, 3]  # SuperMana
    end
    return [0, 0, 0, 0, 0, 0]
  end
end

# {REGENS_STATES.regens_database(id)[0]} #[0,1,2,3,4,5] #[A,B,C,D,E,F]

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#  Game_Party
#        B = "Porcentaje de daño/cura de HP en Mapa" (según PVmax HPmax)
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
class Game_Party
  alias check_map_slip_damage_regens check_map_slip_damage
  def check_map_slip_damage_regens
    check_map_slip_damage
    for actor in @actors
      if $data_states[i].id= REGENS_STATES  and actor.hp > 0 and actor.slip_damage?
              actor.hp -= [actor.maxhp / 100, "B"].max # "B"=Porcentaje de daño
              if actor.hp == 0
                $game_system.se_play($data_system.actor_collapse_se)
              end
              # "F" = Color de Flash...asignar variables de color?
              $game_screen.start_flash(Color.new(255,0,0,128), 4)
              $game_temp.gameover = $game_party.all_dead?
      end
    end
  end
end
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#        D = "Porcentaje de daño/cura de SP en Mapa" (según PMmax SPmax)
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
class Game_Party
  alias check_map_slip_damage_regens check_map_slip_damage
  def check_map_slip_damage_regens
    check_map_slip_damage
    for actor in @actors
      if $data_states[i].id= REGENS_STATES  and actor.sp > 0 and actor.slip_damage?
              actor.sp -= [actor.maxsp / 100, "D"].max # "D"=Porcentaje de daño
              if actor.sp == 0
                $game_system.se_play($data_system.actor_collapse_se)
              end
              # "F" = Color de Flash...asignar variables de color?
              $game_screen.start_flash(Color.new(255,0,0,128), 4)
              $game_temp.gameover = $game_party.all_dead?
      end
    end
  end
end
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#    Game_Player
#                        E = "Número de pasos"
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
class Game_player
  alias increase_steps_regens increase_steps
  def increase_steps
    super
    # If move route is not forcing
    unless @move_route_forcing
      # Increase steps
      $game_party.increase_steps
      # Number of steps are an even number
      if $game_party.steps % "E" == 0
        # "C" : Numero de pasos para hacer daño prog.
        # Slip damage check => (Game_Party)
        $game_party.check_map_slip_damage
      end
    end
  end
end
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#    Game_Battler 3
#          A= "Factor de daño/cura de HP en Batalla"
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
class Game_Battler
  alias slip_damage_effect_regens slip_damage_effect
  def slip_damage_effect
    # Poner daño
    self.damage = [self.maxhp / 50, 1].max
    # Distribucion
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage += rand(amp+1) + rand(amp+1) - amp
      self.damage*= ("A")    # "A" = HP_Factor
      self.hp -= self.damage
    end
  end
end
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#          C= "Factor de daño/cura de SP en Batalla"
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
class Game_Battler
  alias slip_damage_effect_regens slip_damage_effect
  def slip_damage_effect
    # Poner daño
    self.damage = [self.maxsp / 50, 1].max
    # Distribucion
    if self.damage.abs > 0
      amp = [self.damage.abs * 15 / 100, 1].max
      self.damage += rand(amp+1) + rand(amp+1) - amp
      self.damage*= ("C")    # "C" = SP_Factor
      self.sp -= self.damage
    end
  end
end

Mi unica ignorancia es como asignar los valores de when ID then return [Valor A, Valor B...]
a los valores de las formulas generales.

;)
avatar
Ripher
Novato
Novato

0/3

Créditos 60

Gracias : 2

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por wemento el 2015-12-28, 11:22

Buenas, esta idea está muy interesante. Intentaba hacer un estado de cura paulatina y me ha venido de perlas.

Ahora lo probaré y tal, con tu permiso claro.

Un saludo!
avatar
wemento
Iniciado
Iniciado

0/3

Créditos 61

Gracias : 5

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Lance Amano el 2015-12-29, 11:52

Lo probé tanto en mi projecto como en uno nuevo y me sale este error:



EDIT: Ooops. No me fijé que era un necropost. Mil disculpas.
avatar
Lance Amano
Soñador
Soñador

0/3

Créditos 221

Gracias : 24

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por wemento el 2015-12-31, 02:25

Soy yo el que lo revivió antes xD

Mil perdones.
avatar
wemento
Iniciado
Iniciado

0/3

Créditos 61

Gracias : 5

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Script de Estados Veneno/Cura

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


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