Mundo Maker
¡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 4133 miembros registrados.
El último usuario registrado es Neysersitoh.

Nuestros miembros han publicado un total de 84769 mensajes en 12064 argumentos.

[XP] Estado Auto-revivir y Estado Dead-Furious

Ver el tema anterior Ver el tema siguiente Ir abajo

[XP] Estado Auto-revivir y Estado Dead-Furious

Mensaje por Wecoc el 2016-02-09, 23:57

Hoy paso dos scripts compatibles entre ellos que añaden nuevos tipos de estado un poco especiales.

Estado Auto-revivir


Éste script hace que si un actor o enemigo tiene cierto estado, éste no pueda morir, o sea que al morir reviva de nuevo.
Es un script muy sencillo de usar y también de modificar.

Para definir los estados Auto-revivir id a la línea siguiente:

AUTOREVIVE_STATES = [17]

Y ponéis ahí todos los estados que tengan esa propiedad, por ejemplo [10, 11, 12, 13]

Para definir los estados Auto-revivir que se quitan solos tras revivir al héroe buscad la línea siguiente:

REMOVE_AFTER_REVIVE = [17]

Se puede definir en la base de datos que el estado se quite tras cierto número de turnos o por probabilidad tras ser atacado, como cualquier otro estado.

El script es para RPG maker XP pero estoy bastante convencido de que se puede usar en VX y Ace tal cual.
Como es muy simple no pido créditos.

Código:
#==============================================================================
# ** Estado Auto-revivir
#==============================================================================

class Game_Battler
  
  AUTOREVIVE_STATES = [17]
  REMOVE_AFTER_REVIVE = [17]
  
  def hp=(hp)
    @hp = [[hp, maxhp].min, 0].max
    for i in 1...$data_states.size
      if $data_states[i].zero_hp
        if self.dead?
          dead = true
          for state in @states
            if AUTOREVIVE_STATES.include?(state)
              dead = false
              if REMOVE_AFTER_REVIVE.include?(state)
                remove_state(state)
              end
            end
          end
          if dead == true
            add_state(i)
          else
            @hp = maxhp
          end
        else
          remove_state(i)
        end
      end
    end
  end
end

Estado Dead-Furious


Éste script hace que si muere un actor ésto añada un estado alterado a los aliados.
Hay otros scripts por el estilo pero éste tiene alguna propiedad más en la configuración.

Se configura en el hash DEAD_FURIOUS_STATES, y tiene la forma siguiente:
Estado => [actores que mueren, actores a los que les afecta]

Ejemplos:

17 => [1, 2] # Ésto significa que si muere el actor 1 el actor 2 tiene el estado 17
10 => [[1, 2], [1, 2]] # Ésto significa que si mueren el actor 1 o el actor 2, el otro de los dos que no esté muerto tiene el estado 10
12 => [nil, nil] # (nil = 'all') Ésto significa que si muere cualquier actor, todos los demás tendrán el estado alterado 12

El script es para RPG maker XP pero es probable de que se pueda usar en VX y Ace con alguna modificación mínima.
Como es bastante simple no pido créditos.

El único inconveniente que tiene es que no sirve para enemigos, solo modifica Game_Actor.
Tengo pensado mejorarlo pronto para añadir la misma opción en Game_Enemy, pero no sé cuando será eso.

Código:
#==============================================================================
# ** Estado Dead-Furious
#------------------------------------------------------------------------------
# La muerte de alguien del grupo provoca un Estado Alterado en los otros Aliados
#==============================================================================

class Game_Actor < Game_Battler
  
      # state ID => dead actors, furious actors
  DEAD_FURIOUS_STATES = {13 => ['all',    'all'],
                         14 => [    1,   [2, 7]]}
  
  def hp=(hp)
    super(hp)
    if self.dead?
      for i in 0...DEAD_FURIOUS_STATES.keys.size
        state = DEAD_FURIOUS_STATES.keys[i]
        dead_actors = DEAD_FURIOUS_STATES[state][0]
        furious_actors = DEAD_FURIOUS_STATES[state][1]
        if dead_actors == 'all' or dead_actors.nil?
          dead_actors = []
          for actor in 1...$data_actors.size
            dead_actors.push(actor)
          end
        end
        dead_actors = dead_actors.to_a
        if furious_actors == 'all' or furious_actors.nil?
          furious_actors = []
          for actor in 1...$data_actors.size
            furious_actors.push(actor)
          end
        end
        furious_actors = furious_actors.to_a
        if dead_actors.include?(self.id)
          for actor in $game_party.actors
            unless actor.dead?
              if furious_actors.include?(actor.id)
                actor.remove_state(state)
                actor.add_state(state)
              end
            end
          end
        end
      end
    end
  end
end
avatar
Wecoc
Administrador
Administrador



Créditos 9217

Gracias : 493

Volver arriba Ir abajo

Re: [XP] Estado Auto-revivir y Estado Dead-Furious

Mensaje por AsFzKakarotto el 2016-08-15, 03:55

Pido disculpas por abrir un tema de hace más de 3 meses pero tiene mucho que ver con ésto...

Bueno... aquí está el script:

Estado Dead-Furious para enemigos



Código:
#==============================================================================
# ** Estado Dead-Furious - [Solo para Tropas Enemigas]
#------------------------------------------------------------------------------
# La muerte de alguien de la tropa enemiga provocará un Estado Alterado en
# los otros Enemigos.
#==============================================================================

class Game_Enemy < Game_Battler
  
      # state ID => dead enemies, furious enemies
      
  DEAD_FURIOUS_STATES = {13 => [ 1,       1],
                         14 => [ 3,   'all'],
                         15 => [ 5,   [6, 7]]}
                        
      # Nota: La sección dead enemies no dispone del
      #       comando 'all'(todos) por que aparecerán
      #       mensajes de error.
  
  def hp=(hp)
    super(hp)
    if self.dead?
      for i in 0...DEAD_FURIOUS_STATES.keys.size
        state = DEAD_FURIOUS_STATES.keys[i]
        dead_enemies = DEAD_FURIOUS_STATES[state][0]
        furious_enemies = DEAD_FURIOUS_STATES[state][1]
        dead_enemies = dead_enemies.to_a
        if furious_enemies == 'all' or furious_enemies.nil?
          furious_enemies = []
          for enemy in 1...$data_enemies.size
            furious_enemies.push(enemy)
          end
        end
        furious_enemies = furious_enemies.to_a
        if dead_enemies.include?(self.id)
          for enemy in $game_troop.enemies
            unless enemy.dead?
              if furious_enemies.include?(enemy.id)
                enemy.remove_state(state)
                enemy.add_state(state)
              end
            end
          end
        end
      end
    end
  end
end

no fue para nada difícil editarlo... (de actors a enemies y de party a troop).... jejeje
wecoc lo a hecho casi todo, así que agradecimientos a él.
avatar
AsFzKakarotto
Novato
Novato

0/3

Créditos 97

Gracias : 19

Volver arriba Ir abajo

Re: [XP] Estado Auto-revivir y Estado Dead-Furious

Mensaje por Wecoc el 2016-10-04, 16:08

Primero de todo siento no haber respondido en éste tema. Tu script está bien; funciona con IDs de enemigo, es compatible con el mío y no veo que tenga ningún fallo, así que muchas gracias por subirlo.

Me hicieron una propuesta para mejorar el script, que de momento no realizaré (luego digo por qué), pero me lo anoto porque es interesante.

La propuesta fue no usar una global sino una variable para el Game_Actor, de modo que cada uno tendría en una array los actores con los que se enfurece si se mueren. De ese modo se puede cambiar a medio juego (es factible pensar que se pondrá furioso si matan a un compañero si éste lleva mucho tiempo en el grupo, y eso se podría controlar con esa variable)

Eso es un gran incremento de posibilidades pero a la vez una reducción, puesto que significa que solo hay un estado de furioso (hacer varios significa hacer una variable para cada uno y es factible, pero el script estaría montado para soportar solo uno). En definitiva lo que me pidieron es un script totalmente distinto xD Así que en algún momento lo haré pero éste lo dejaré tal y como está.

Lo comento aquí porque también está la versión para enemigos de Super_SaiyanDios. En ese caso esa nueva 'versión' sería un único script tanto para actores como para enemigos. Para enemigos quizá se pudiera tener la ID de tropa en cuenta también... Aunque eso lo complica mucho.
avatar
Wecoc
Administrador
Administrador



Créditos 9217

Gracias : 493

Volver arriba Ir abajo

Re: [XP] Estado Auto-revivir y Estado Dead-Furious

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.