Folloy the instructions at "How to Use". If you use ACBS, at the "Very Important Note", click in "here" to download the ACBS. Copy the scripts that I said to copy to your project, than, copy this script too:
################################################################################
# Chrono Trigger's Advanced Damage (also called just "Advanced Damage") - ACBS Version
#-------------------------------------------------------------------------------
# By Alucard_2
#===============================================================================
# This add-on allows you add some new damage functions for you guns like in Chrono Trigger.
#===============================================================================
################################################################################
################################################################################
############################### Checklist #####################################
################################################################################
#
# 'CRTRATE/**' - OK
# 'CRTMULT/**' - OK
# 'DMGRANDMULT/[**]' - OK
# 'CRTAUTODMG/**' - OK[1]
# 'AUTODAMAGE/**' - OK[1]
# 'AUTODAMAGECHANCE/[**, Y]' - OK
# 'LETALDAMAGECHANCE/**' - Out -DW-. Can be done in Database
#
#-------------------------------------------------------------------------------
# Notes:
#-------------------------------------------------------------------------------
# OK > Works
# DW > Doesn't work
# [1] > Enemy's Defense isn't ignored. Randomized damage isn't ignored.
#
################################################################################
module Atoa
# Dont modify or change these lines
Weapon_NewSettings = []
# Dont modify or change these lines
# Base Critical Hit damage multiplier
Multiply_CrtDamage_Base = 2
#=============================================================================
# Weapon's Cofigurations
#=============================================================================
# To add a new damage configuration for a weapon, just add the following command:
#
# Weapon_NewSettings[ID] = [X]
# where:
#
# ID = Weapon ID to configure
# X = Configuration effect. The effect can be:
#
# 'CRTRATE/**' To change the weapon's critical hit rate. Change ** by the critical hit rate.
#
# 'CRTMULT/**' to change the weapon's multiply damage when Critical Hit
# to the value set at **.
# Note: if the weapon have this configuration, the Multiply_CrtDamage_Base will
# ignored for it.
#
# 'DMGRANDMULT/[**]' to make the weapon have a randomized damage (like Lucca's Wondershot).
# So, if you put:
# Weapon_NewSettings[4] = ['DMGRANDMULT/[0.1, 0.5, 1, 2, 3]']
# The Weapon with ID 4 will have it's commond damage randomized between:
# 0.1x, 0.5x, 1x, 2x and 3x.
#
# 'CRTAUTODMG/**' to change the Critical Hit damage to a fix value (like Ayla's Bronze Fist).
# Change ** by the fixed damage.
#
# 'AUTODAMAGE/**' to change the weapon's common damage to a fix value.
# Change ** by the fixed damage.
#
# 'AUTODAMAGECHANCE/[**, Y]' to change the weapon's common damage to a fix value.
# Similar to 'AUTODAMAGE/**', but, this
# this fixed damage will happen just in a Y% rate.
#
#=============================================================================
Weapon_NewSettings[1] = ['CRTMULT/4', 'CRTRATE/100']
Weapon_NewSettings[2] = ['AUTODAMAGE/220']
Weapon_NewSettings[3] = ['AUTODAMAGECHANCE/[9999, 14]']
Weapon_NewSettings[43] = ['CRTRATE/40','DMGRANDMULT/[0.1, 0.5, 1, 2, 3]']
Weapon_NewSettings[70] = ['CRTAUTODMG/2000', 'CRTRATE/100']
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
# Novo modo de checar
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
# Sem alterações na taxa crítica
def noaltcrt(target)
atk_crt = Damage_Algorithm_Type > 1 ? self.agi : self.dex
critical = self.critical_hit = rand(100) < 5 * atk_crt / target.agi
end
# Ataque é crítico?
def set_attack_critical(target, attacker = nil)
# É um Game_Actor agindo?
if self.is_a?(Game_Actor)
# Chance crítica personalizada
ext = check_extensions(self.weapon_id, 'CRTRATE/')
if ext != nil
ext.slice!('CRTRATE/')
type = eval(ext)
critical = self.critical_hit = rand(100) < type if attacker != nil
# Não é personalizada?
else
noaltcrt(target)
end
# Não é um Game_Actor agindo?
else
noaltcrt(target)
end
target.critical = critical
self.critical_hit |= critical
return self.critical_hit
end
# Valor do dano Crítico
def set_critical_damage(attacker)
ext = check_extensions(attacker.weapon_id, 'CRTMULT/')
if ext != nil
ext.slice!('CRTMULT/')
type = eval(ext)
self.damage *= type
else
self.damage *= Atoa::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)
self.damage = type
end
end
# Valor do dano Comum
def set_attack_damage_value(attacker)
# cálculo de dano (Damage_Algorithm_Type)
case Damage_Algorithm_Type
when 0
atk = weapon_attack(attacker) - (battler_defense(attacker) / 2)
str = 20 + battler_strength(attacker)
when 1
atk = weapon_attack(attacker) - ((weapon_attack(attacker) *
battler_defense(attacker)) / 1000)
str = 20 + battler_strength(attacker)
when 2
atk = 20
str = [(battler_strength(attacker) * 4) - (self.dex * 2) , 0].max
when 3
atk = (10 + weapon_attack(attacker)) - (battler_defense(attacker) / 2)
str = (20 + battler_strength(attacker)) - (self.dex / 2)
when 4
atk = 20
value = Custom_Attack_Algorithm.dup
value.gsub!(/{atk}/i) {"weapon_attack(attacker)"}
value.gsub!(/{str}/i) {"battler_strength(attacker)"}
value.gsub!(/{def}/i) {"battler_defense(attacker)"}
str = eval(value)
end
# Base do dano
self.damage = atk + str
self.damage = 1 if self.damage == 0 and (rand(100) > 40)
self.damage *= elements_correct(attacker.element_set)
self.damage /= 100
# É 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]
damage = self.damage*tipo
self.damage += damage.to_i#-self.damage
end
# Dano fixo para ataques comuns
ext = check_extensions(attacker.weapon_id, 'AUTODAMAGE/')
if ext != nil
ext.slice!('AUTODAMAGE/')
type = eval(ext)
self.damage = type
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]
self.damage = damage.to_i
end
end
end
end
end
class Scene_Battle
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
end
Than, configure from the line 31 to "Game_Battler" lines (do not configure the Game_Battler script, just what's above it).
Then test and see. In the script have some examples.
If you don`t use ACBS, just copy this script:
###############################################################################
# Chrono Trigger's Advanced Damage (also called just "Advanced Damage")
#-------------------------------------------------------------------------------
# By Alucard_2
#===============================================================================
# This add-on allows you add some new damage functions for you guns like in Chrono Trigger.
#===============================================================================
################################################################################
################################################################################
############################### Checklist #####################################
################################################################################
#
# 'CRTRATE/**' - OK
# 'CRTMULT/**' - OK
# 'DMGRANDMULT/[**]' - OK
# 'CRTAUTODMG/**' - OK
# 'AUTODAMAGE/**' - OK
# 'AUTODAMAGECHANCE/[**, Y]' - OK
# 'LETALDAMAGECHANCE/**' - Out -DW-. Can be done in Database
#
#-------------------------------------------------------------------------------
# Notes:
#-------------------------------------------------------------------------------
# OK > Works
# DW > Doesn't work
#
################################################################################
module Alucard_2
# Dont modify or change these lines
Weapon_NewSettings = []
# Dont modify or change these lines
# Base Critical Hit damage multiplier
Multiply_CrtDamage_Base = 2
#=============================================================================
# Weapon's Cofigurations
#=============================================================================
# To add a new damage configuration for a weapon, just add the following command:
#
# Weapon_NewSettings[ID] = [X]
# where:
#
# ID = Weapon ID to configure
# X = Configuration effect. The effect can be:
#
# 'CRTRATE/**' To change the weapon's critical hit rate. Change ** by the critical hit rate.
#
# 'CRTMULT/**' to change the weapon's multiply damage when Critical Hit
# to the value set at **.
# Note: if the weapon have this configuration, the Multiply_CrtDamage_Base will
# ignored for it.
#
# 'DMGRANDMULT/[**]' to make the weapon have a randomized damage (like Lucca's Wondershot).
# So, if you put:
# Weapon_NewSettings[4] = ['DMGRANDMULT/[0.1, 0.5, 1, 2, 3]']
# The Weapon with ID 4 will have it's commond damage randomized between:
# 0.1x, 0.5x, 1x, 2x and 3x.
#
# 'CRTAUTODMG/**' to change the Critical Hit damage to a fix value (like Ayla's Bronze Fist).
# Change ** by the fixed damage.
#
# 'AUTODAMAGE/**' to change the weapon's common damage to a fix value.
# Change ** by the fixed damage.
#
# 'AUTODAMAGECHANCE/[**, Y]' to change the weapon's common damage to a fix value.
# Similar to 'AUTODAMAGE/**', but, this
# this fixed damage will happen just in a Y% rate.
#
#=============================================================================
Weapon_NewSettings[1] = ['CRTMULT/4', 'CRTRATE/100']
Weapon_NewSettings[2] = ['AUTODAMAGE/220']
Weapon_NewSettings[3] = ['AUTODAMAGECHANCE/[9999, 14]']
Weapon_NewSettings[43] = ['CRTRATE/40','DMGRANDMULT/[0.1, 0.5, 1, 2, 3]']
Weapon_NewSettings[70] = ['CRTAUTODMG/2000', 'CRTRATE/100']
end
#-------------------------------=End of Configurations!=------------------------#
#==============================================================================
# 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)
ext = check_extensions(attacker.weapon_id, 'CRTMULT/')
if ext != nil
ext.slice!('CRTMULT/')
type = eval(ext)
self.damage *= type
else
self.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)
self.damage = type
end
end
# Checar dano
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]
damage = self.damage*tipo
self.damage = damage.to_i#-self.damage
end
# Dano fixo para ataques comuns
ext = check_extensions(attacker.weapon_id, 'AUTODAMAGE/')
if ext != nil
ext.slice!('AUTODAMAGE/')
type = eval(ext)
self.damage = type
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]
self.damage = damage.to_i
end
end
end
end
#--------------------------------------------------------------------------
# ● 通常攻撃の効果適用
# attacker : 攻撃者 (バトラー)
#--------------------------------------------------------------------------
def attack_effect(attacker)
# クリティカルフラグをクリア
self.critical = false
# 第一命中判定
hit_result = (rand(100) < attacker.hit)
# 命中の場合
if hit_result == true
# 基本ダメージを計算
atk = [attacker.atk - self.pdef / 2, 0].max
self.damage = atk * (20 + attacker.str) / 20
# 属性修正
self.damage *= elements_correct(attacker.element_set)
self.damage /= 100
# ダメージの符号が正の場合
if self.damage > 0 # cacnabucho
# クリティカル修正
# Checar Se tem 'CRTRATE/**'
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)
self.critical = true
end
# Não é personalizada?
else
if rand(100) < 4 * attacker.dex / self.agi
set_critical_mult(attacker)
self.critical = true
end
end
# 防御修正
if self.guarding?
self.damage /= 2
end
end
# 分散
if self.damage.abs > 0
amp = [self.damage.abs * 15 / 100, 1].max
self.damage += rand(amp+1) + rand(amp+1) - amp
end
# 第二命中判定
eva = 8 * self.agi / attacker.dex + self.eva
hit = self.damage < 0 ? 100 : 100 - eva
hit = self.cant_evade? ? 100 : hit
hit_result = (rand(100) < hit)
end
attack_alucard(attacker)
# 命中の場合
if hit_result == true
# ステート衝撃解除
remove_states_shock
# HP からダメージを減算
self.hp -= self.damage
# ステート変化
@state_changed = false
states_plus(attacker.plus_state_set)
states_minus(attacker.minus_state_set)
# ミスの場合
else
# ダメージに "Miss" を設定
self.damage = "Errou"
# クリティカルフラグをクリア
self.critical = false
end
# メソッド終了
return true
end
end
Than configure exatily like with ACBS.
Note: To access the script editor of your game, just press F11 while editing it.