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 84768 mensajes en 12064 argumentos.

[RMXP] Pain Damage v0.2; aumentar el daño causado a medida que se pierde HP

Ver el tema anterior Ver el tema siguiente Ir abajo

RPG Maker XP [RMXP] Pain Damage v0.2; aumentar el daño causado a medida que se pierde HP

Mensaje por silvanash el 2017-01-18, 15:57

Basado en la idea de Wecocio del post de aportar ideas. Las malditas ideas de Wecocio requieren reescribir métodos originales, así que podéis asumir que esto será incompatible con todo.

Pain Damage aumenta el daño causado a medida que el atacante pierde HPs. Se puede configurar para que se aplique a cada actor por separado, a una clase, a un enemigo, a una skill y un arma. No afecta a las skills curativas, aunque se puede modificar para eso. Como me da pereza, dejaré que se encargue Wecocio otro de hacerlo.

Código:
# Pain Damage v0.2
# silvanash

# Increases damage as HP is lost
# Can be used by actors, actor classes, enemies, skills and weapons

module SLV_Config
  
  # IDs of the ACTORS that can benefit from pain damage
  PAIN_ACTORS = {
    1 => {:factor => 3,},
  }
  
  # IDs of the CLASSES that can benefit from pain damage
  PAIN_CLASSES = {
    1 => {:factor => 1,},
  }
  
  # IDs of the ENEMIES that can benefit drom pain damage
  PAIN_ENEMIES = {
    1 => {:factor => 0.2,},
  }
  
  # IDs of the SKILLS that can benefit from pain damage
  PAIN_SKILLS = {
    1 => {:factor => 1,},
  }
  
  # IDs of the WEAPONS that can benefit from pain damage
  PAIN_WEAPONS = {
    1 => {:factor => 0.5,},
  }
  
end

class Game_Battler
  
  alias slv_pain_attack attack_effect unless $@
  
  def attack_effect(attacker)
    slv_pain_attack(attacker)
    # Builds the hash to call the pain damage proc
    hash = {}
    hash[:attacker] = attacker
    hash[:weapon] = attacker.weapon_id if attacker.is_a?(Game_Actor)
    slv_add_pain_damage(hash)
  end
  
  alias slv_pain_skill_effect skill_effect unless $@
  
  def skill_effect(user, skill)
    slv_pain_skill_effect(user, skill)
    slv_add_pain_damage({:attacker => user, :skill => skill.id})
  end
  
  def slv_add_pain_damage(hash)
    # The attack/skill dealt damage
    if self.damage.to_i > 0
      # Get basic damage factor (0)
      f = 0
      # Gets the attacker
      a = hash[:attacker]
      # Modify damage factor if attacker exists
      if !a.nil?
        if a.is_a?(Game_Actor)
          if SLV_Config::PAIN_ACTORS.has_key?(a.id)
            f = [SLV_Config::PAIN_ACTORS[a.id][:factor], f].max
          end
          if SLV_Config::PAIN_CLASSES.has_key?(a.class_id)
            f = [SLV_Config::PAIN_CLASSES[a.class_id][:factor], f].max
          end
        elsif SLV_Config::PAIN_ENEMIES.has_key?(a.id)
          f = [SLV_Config::PAIN_ENEMIES[a.id][:factor], f].max
        end
      end
      # Gets the skill
      a = hash[:skill]
      # Modify damage factor if skill exists
      if !a.nil?
        # Skill can deal pain damage
        if SLV_Config::PAIN_SKILLS.has_key?(a)
          f = [SLV_Config::PAIN_SKILLS[a][:factor], f].max
        end
      end
      # Gets the weapon
      a = hash[:weapon]
      if !a.nil?
        # Weapon can deal pain damage
        f = [SLV_Config::PAIN_WEAPONS[a][:factor], f].max
      end
      # Add pain damage if damage factor is higher than 0
      if f > 0
        a = hash[:attacker]
        bonus = (1 - (a.hp * 1.0 / a.maxhp)) * f
        self.damage += (bonus * self.damage).truncate
      end
    end
  end
  
end

Instrucciones:

Copypastear encima de Main. El script viene con el típico module para configurar al principio.

Dentro de PAIN_ACTORS van las IDs de los ACTORES que pueden aplicar más daño.
Dentro de PAIN_CLASSES van las IDs de las CLASES que pueden aplicar más daño.
Dentro de PAIN_ENEMIES van las IDs de los ENEMIGOS que pueden aplicar más daño.
Dentro de PAIN_SKILLS van las IDs de las SKILLS que pueden aplicar más daño.
Dentro de PAIN_WEAPONS van las IDs de las armas que pueden aplicar más daño.

Dentro de cada hash (los PAIN_etc) se usa la sintaxis de:
Código:
ID => {:factor => v1,},
[ID] es la ID del actor/clase/enemigo/skill/arma.
[:factor] es cuánto daño adicional aplica por % de HP perdido. Para Ledai, que tiene problemas con las matemáticas, :factor => 0.2 añadirá un 0.2% de daño por cada 1% de HP perdido; un personaje que haya perdido todos sus HPs añadirá un 20% de daño (asumiendo que ese personaje pueda atacar).

Un Battler que pueda aplicar Pain Damage de varias fuentes distintas (por ejemplo, que el sistema esté configurado para reconocer a un personaje por su ID de actor, de clase y del arma que lleva) usará el factor más alto que tenga disponible.

Compatible con Lightning Burst y toda su suite. Si vas a usarlos juntos, por Pain Damage debajo de Bloodprice y encima de Ligthning Burst.

Incompatible con casi cualquier otro script que modifique attack_effect y skill_effect, aunque debería ser razonablemente fácil modificar otros scripts para que sean compatibles.

Edito:
Sería mejor construir un sistema de batalla desde cero, diseñado específicamente para permitir estas cosas, que intentar añadir add-ons y hacerlos compatibles. Si quiero añadir algo al sistema de MonsterSimulator, lo hago y punto, no me tengo que preocupar de que sean compatibles con otras cosas porque tengo acceso a todo el sistema. Estos scripts, en cambio, tienen una utilidad mucho más limitada, porque aportan poco a la batalla pero requieren reescribir demasiados métodos, métodos que también podrían ser reescritos por otros scripts. Para alguien que sepa de scripts, editarlos no es difícil, pero para el público general, que no sabe editar scripts y por eso no se hace sus propios add-ons, eso es una molestia en sumo grado.

Re-edito: actualizado a versión 0.2, para que funcione también con skills y armas. Limpiado el código para no sobre-escribir los métodos originales. Sin embargo, me reafirmo en mi anterior comentario sobre la escasa eficacia de este tipo de scripts.


Última edición por silvanash el 2017-01-18, 21:35, editado 3 veces
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1605

Gracias : 225

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Pain Damage v0.2; aumentar el daño causado a medida que se pierde HP

Mensaje por PKTrainer el 2017-01-18, 16:14

oye,es interesante,sobre todo para una skill,pero ¿sabrias como hacerlo?
osea hacer una skill pero que haga esto,me explico fatal.
avatar
PKTrainer
Iniciado
Iniciado

0/3

Créditos 0

Gracias : 4

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Pain Damage v0.2; aumentar el daño causado a medida que se pierde HP

Mensaje por Producciones The Golden el 2017-01-18, 18:48

¿Hacer que una skill aplique el Estado?
Creo que si pones un Evento común en Proceso paralelo con la condición de que si estás con tal estado (Debilidad por ejemplo) llame a este mismo script.

Si no funciona, cosa que no sé porque no sé de scripts, soy solo enginer... te dejo el link de una recopilación de scripts de @Wecoc de este estilo:
Tips and Tricks
avatar
Producciones The Golden
Veterano
Veterano

0/3

Créditos 639

Gracias : 60

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Pain Damage v0.2; aumentar el daño causado a medida que se pierde HP

Mensaje por silvanash el 2017-01-18, 21:38

Actualizado para que funcione también por skills y armas. No lo he hecho para armaduras ni estado, pero cualquiera con algo de experiencia haciendo scripts debería poder añadirlos si quiere.
avatar
silvanash
Aventurero
Aventurero

0/3

Créditos 1605

Gracias : 225

Volver arriba Ir abajo

RPG Maker XP Re: [RMXP] Pain Damage v0.2; aumentar el daño causado a medida que se pierde HP

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.