Dano Avançado para Armas v1.0-VX

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Dano Avançado para Armas v1.0-VX

Mensagem por Convidad em Dom 20 Fev - 9:55

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:

* Taxa Crítica especial para as armas desejadas. Caso não seja definido, o padrão é utilizado;
* Multiplicação do dano quando é um Dano Crítico;
* Multiplicação variada do dano comum;
* Dano Fixo para Dano Crítico;
* Dano Fixo para golpes comuns;
* 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: [Selecionar]
################################################################################
############################ 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: [Selecionar]
################################################################################
# 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.

Convidad
Convidado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum