RPG Maker Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
Alucard_2
Alucard_2
Administrador
Administrador
Masculino Mensagens : 823
Reputação : 57
http://www.não tenho site ainda.com.nada

[Batalha]Dano Avançado Para Armas - Versão VX Empty [Batalha]Dano Avançado Para Armas - Versão VX

Sex Jan 14, 2011 11:54 am
Dano Avançado para Armas v1.0-VX
por:Alucard_2

Introdução:
Comecei a fazer este script como um add-on para o ACBS (e deu certo). Depois, decidi colocá-lo para as batalhas padrões do XP, e agora está para o VX também!.

Características:
Este script muda a forma do dano para cada arma, com várias funções, tais quais:

  1. Taxa Crítica especial para as armas desejadas. Caso não seja definido, o padrão é utilizado;
  2. Multiplicação do dano quando é um Dano Crítico;
  3. Multiplicação variada do dano comum;
  4. Dano Fixo para Dano Crítico;
  5. Dano Fixo para golpes comuns;
  6. Dano Fixo para golpes comuns, porém só acontece em uma certa porcentagem (definida por você).

Para todas as informações acima, é definido a função desejada para as armas desejadas, podendo utilizar mais de uma função em uma arma só. Caso não seja definido a função, o padrão é utilizado.

Eis uma lista de Funcionamento:
Código:
################################################################################
############################ Lista de funcionamento ############################
################################################################################
#
# 'CRTRATE/**'                - OK
# 'CRTMULT/**'                - OK
# 'DMGRANDMULT/[**]'          - OK
# 'CRTAUTODMG/**'            - OK
# 'AUTODAMAGE/**'            - OK
# 'AUTODAMAGECHANCE/[**, Y]'  - OK
#
#-------------------------------------------------------------------------------
# Legenda:
#-------------------------------------------------------------------------------
# OK  > Funciona
#
################################################################################


Screenshots:
Efeito não perceptível por SS.

Como Usar
Cole o script na área de Scripts Adicionais. Configure da linha 32 até a 78.

Script:

Código:
################################################################################
# Dano Avançado V.1.0
#-------------------------------------------------------------------------------
# Por Alucard_2
#===============================================================================
# Este add-on permite adicionar novas funções de dano para as armas.
#===============================================================================
################################################################################

################################################################################
############################ Lista de funcionamento ############################
################################################################################
#
# 'CRTRATE/**'                - OK
# 'CRTMULT/**'                - OK
# 'DMGRANDMULT/[**]'          - OK
# 'CRTAUTODMG/**'            - OK
# 'AUTODAMAGE/**'            - OK
# 'AUTODAMAGECHANCE/[**, Y]'  - OK
#
#-------------------------------------------------------------------------------
# Legenda:
#-------------------------------------------------------------------------------
# OK  > Funciona
# NF  > Não Funciona
#
################################################################################
module Alucard_2
  # Não altere ou apague estas linhas
  Weapon_NewSettings = []
  # Não altere ou apague estas linhas
 
  # Multiplicação padrão do dano caso seja um ataque crítico
  Multiply_CrtDamage_Base = 2
 
  #=============================================================================
  # Configurações das armas
  #=============================================================================
  # Para adicionar uma nova configuração de dano para uma arma, basta adicionar
  # o seguinte comando:
  #
  # Weapon_NewSettings[ID] = [X]
  # onde:
  #
  # ID = ID da arma com a nova configuração
  # X = Efeito da configuração. Este efeito pode ser:
  #
  # 'CRTRATE/**' para alterar a taxa crítica da arma. Troque ** pela porcentagem
  #              de chances que a arma fará um golpe crítico.
  #
  # 'CRTMULT/**' para alterar a multiplição de dano ao causar um dano crítico
  #              para o valor definido em **.
  #              Caso a arma possua este efeito, o Multiply_CrtDamage_Base será
  #              ignorado para ela.
  #
  # 'DMGRANDMULT/[**]' para que a arma tenha um dano variado. Por exemplo, se
  #              for colocado:
  #              Weapon_NewSettings[4] = ['DMGRANDMULT/[0.1, 0.5, 1, 2, 3]']
  #              Significa que a arma de ID 4 terá seu dano comum variado entre
  #              0.1x, 0.5x, 1x, 2x e 3x.
  #
  # 'CRTAUTODMG/**' para alterar o dano causado em ataques críticos para um
  #              valor fixo. Troque ** pelo dano fixo para ataques críticos.
  #
  # 'AUTODAMAGE/**' para alterar o dano causado em ataques comuns para um valor
  #              fixo. Troque ** pelo dano fixo para ataques comuns.
  #
  # 'AUTODAMAGECHANCE/[**, Y]' para alterar o dano causado em ataques comuns
  #              para um valor fixo. Similar ao 'AUTODAMAGE/**', porém, este
  #              dano fixo só acontecerá com Y% de chances.
  #
  #=============================================================================
  Weapon_NewSettings[1] = ['CRTMULT/4', 'CRTRATE/100']
  Weapon_NewSettings[2] = ['AUTODAMAGE/220']
  Weapon_NewSettings[3] = ['AUTODAMAGECHANCE/[9999, 100]']
  Weapon_NewSettings[4] = ['DMGRANDMULT/[0.1, 0.5, 1, 2, 3]']
  Weapon_NewSettings[5] = ['CRTAUTODMG/2000', 'CRTRATE/100']
 
end
#-------------------------------=Fim das Configurações=------------------------#
#==============================================================================
# Game_Battler (4)
#------------------------------------------------------------------------------
# Esta classe contém os dados dos lutadores. Esta classe modifica o dano das
# armas.
#==============================================================================

class Game_Battler
  include Alucard_2
  # Checar Extensão
  def check_extensions(target, extension)
    return nil if target.nil?
    id = target
    settings = eval("Weapon_NewSettings[#{id}]")
    if settings != nil
      for ext in settings
        return ext.dup if ext.include?(extension)
      end
    end
    return nil
  end
  # Colocar Multiplicador de Dano
  def set_critical_mult(attacker)
    # Multiplicador Personalizado
    ext = check_extensions(attacker.weapon_id, 'CRTMULT/')
    if ext != nil
      ext.slice!('CRTMULT/')
      type = eval(ext)
      @cri_damage = type
    else
      # Multiplicador Padrão
      @cri_damage = Multiply_CrtDamage_Base
    end
    # Dano automático (Crítico)
    ext = check_extensions(attacker.weapon_id, 'CRTAUTODMG/')
    if ext != nil
      ext.slice!('CRTAUTODMG/')
      type = eval(ext)
      @cri_auto_damage = type
      @autocri = true
    end
  end
  # Checar se é Dano Crítico
  def check_critical(attacker)
    if attacker.is_a?(Game_Actor)
      ext = check_extensions(attacker.weapon_id, 'CRTRATE/')
      if ext != nil
        ext.slice!('CRTRATE/')
        type = eval(ext)
        if rand(100) <= type and attacker != nil
          set_critical_mult(attacker)
          @critical = true
        end
        # Não é personalizada?
      else
        @critical = (rand(100) < attacker.cri)        # Dano crítico
      end
    end
  end
  def attack_alucard(attacker)
    # É um Game_Actor agindo?
    if attacker.is_a?(Game_Actor)
      # Multiplicado de Dano aleatório?
      ext = check_extensions(attacker.weapon_id, 'DMGRANDMULT/')
      if ext != nil
        ext.slice!('DMGRANDMULT/')
        type = eval(ext)
        multiply = rand(type.size)
        @tipo = type[multiply]
        @randdmgmult = true
      end
      # Dano fixo para ataques comuns
      ext = check_extensions(attacker.weapon_id, 'AUTODAMAGE/')
      if ext != nil
        ext.slice!('AUTODAMAGE/')
        type = eval(ext)
        @damage = type
        @scarlet = true
      end
      # Dano fixo nem sempre acontece?
      ext = check_extensions(attacker.weapon_id, 'AUTODAMAGECHANCE/')
      if ext != nil
        ext.slice!('AUTODAMAGECHANCE/')
        type = eval(ext)
        naigo = type[1]
        chances = rand(100)
        damage = type[0]
        if chances <= type[1]
          @scarlet = true
          @damage = damage.to_i
        end
      end
    end
  end
  def set_sadc_as(tfs = false, ns = 0)
    @scarlet = tfs
    @autocri = tfs
    @damage = ns
    @cri_damage = ns
  end
  #--------------------------------------------------------------------------
  # Cálculo de dano de um ataque normal
  #    attacker : unidade que está atacando
  #    Substituímos o resultado de @hp_damage.
  #--------------------------------------------------------------------------
  def make_attack_damage_value(attacker)
    damage = attacker.atk * 4 - self.def * 2        # Cálculo básico
    damage = 0 if damage < 0                        # Se 0 em 0
    damage *= elements_max_rate(attacker.element_set)  # Correção de atributo
    damage /= 100
    if damage == 0                                  # Dano 0
      damage = rand(2)                    # Com 1/2 probabilidade, 1 de dano
    elsif damage > 0                                # Número correto de dano
      check_critical(attacker)
      @critical = false if prevent_critical        # Prevenir crítico?
      damage *= @cri_damage if @critical            # Correção de crítico
      damage = @cri_auto_damage if @autocri == true
      attack_alucard(attacker)
      damage = @damage if @scarlet == true
      if @randdmgmult == true
        dartvader = damage*@tipo
        damage = dartvader.to_i
      end
    end
    damage = apply_variance(damage, 20)            # Dispersão
    damage = apply_guard(damage)                    # Correção de defesa
    @hp_damage = damage                            # Dano em HP
    set_sadc_as(false, 0)
  end
end

Créditos

Alucard_2 - Criação, queima de neurônios excessiva e disponibilização.
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos