Author Topic: [RMXP Add-on Script]Some original CT weapon's functions for your project!  (Read 1115 times)

Magusmage

  • Porrean (+50)
  • *
  • Posts: 59
  • "I didn't create Lavos, just called him...I think"
    • View Profile
Hello guys! I think that it's here that I should post it, if isn't, can a MOD move it to the right place?

Very important note:
Default Battle System Version: Just paste it above the script "Main"
ACBS Version:To use it, you'll need the Atoa's Custom Battle System. You can download it here.
Give credits to me and Atoa!

Well, now, here are the script's function:
Quote
This script changes each customized weapon's damage mode with some functions like:
  • Special Critical Hit Rate for the customized. If not defined, uses the deafault Crt. Hit Rate;
  • Multiply damage when Crt. Hit (like Crono's Shiva Blade (DS Name:Suzaku);
  • Random multiply damage (like Lucca's Wondershot gun);
  • Fix damage when Critical Hit (like Ayla's Bronze Fist);
  • Fix common damage;
  • Fix common damage (but occurs just sometime. % of this effect be successfull is defined by you).
For all the above information, the desired function is defined for the weapons you want and can use more than one function in a single weapon. If not defined the function, the default is used.

How to use?
Default Battle System Version: Explained Above.
ACBS Version: First, download the Atoa Custom Battle System. Copy the scripts from ACBS that are above the script "Main". Than, Copy the "Batalha Chrono Trigger" and "Atoa ATB" script to above the script Main.
Script

Default Battle System Version:
Code: [Select]
################################################################################
# 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
ACBS Version
Code: [Select]
################################################################################
# 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
« Last Edit: February 28, 2011, 06:20:14 pm by Magusmage »

Lance VII

  • Black Wind Agent (+600)
  • *
  • Posts: 659
  • Power to the fans!
    • View Profile
Re: [RMXP Add-on Script]Some original CT weapon's functions for your project!
« Reply #1 on: February 24, 2011, 09:29:14 pm »
YES.

THANK YOU SOOOOOOOOOOOO MUCH!

Magusmage

  • Porrean (+50)
  • *
  • Posts: 59
  • "I didn't create Lavos, just called him...I think"
    • View Profile
Re: [RMXP Add-on Script]Some original CT weapon's functions for your project!
« Reply #2 on: February 26, 2011, 03:44:38 pm »
Oh, you're wellcome, Lance^^
Well, later I'll post this same add-on, but to the default battle system. Well, I'll do it now :P

Will VIIII

  • Iokan (+1)
  • *
  • Posts: 4
    • View Profile
Re: [RMXP Add-on Script]Some original CT weapon's functions for your project!
« Reply #3 on: February 27, 2011, 09:39:32 pm »
This will be useful for me as well once I get to that step

TheMage

  • Artist of Termina
  • Time Traveler (+800)
  • *
  • Posts: 877
  • Dreaming through time.
    • View Profile
Re: [RMXP Add-on Script]Some original CT weapon's functions for your project!
« Reply #4 on: February 27, 2011, 11:14:53 pm »
OH DEAR GOD YES :D

Magusmage

  • Porrean (+50)
  • *
  • Posts: 59
  • "I didn't create Lavos, just called him...I think"
    • View Profile
Re: [RMXP Add-on Script]Some original CT weapon's functions for your project!
« Reply #5 on: February 28, 2011, 06:16:26 pm »
Thank you both for your comments, thanks^^

Hayden

  • Guardian (+100)
  • *
  • Posts: 161
  • Shadow, Sonic and Tails are FTW
    • View Profile
Hello guys! I think that it's here that I should post it, if isn't, can a MOD move it to the right place?

Very important note:
Default Battle System Version: Just paste it above the script "Main"
ACBS Version:To use it, you'll need the Atoa's Custom Battle System. You can download it here.
Give credits to me and Atoa!

Well, now, here are the script's function:
Quote
This script changes each customized weapon's damage mode with some functions like:
  • Special Critical Hit Rate for the customized. If not defined, uses the deafault Crt. Hit Rate;
  • Multiply damage when Crt. Hit (like Crono's Shiva Blade (DS Name:Suzaku);
  • Random multiply damage (like Lucca's Wondershot gun);
  • Fix damage when Critical Hit (like Ayla's Bronze Fist);
  • Fix common damage;
  • Fix common damage (but occurs just sometime. % of this effect be successfull is defined by you).
For all the above information, the desired function is defined for the weapons you want and can use more than one function in a single weapon. If not defined the function, the default is used.

How to use?
Default Battle System Version: Explained Above.
ACBS Version: First, download the Atoa Custom Battle System. Copy the scripts from ACBS that are above the script "Main". Than, Copy the "Batalha Chrono Trigger" and "Atoa ATB" script to above the script Main.
Script

Default Battle System Version:
Code: [Select]
################################################################################
# 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
ACBS Version
Code: [Select]
################################################################################
# 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


I am very new on my project. VERY VERY new. I actually wanna know how to do this. for my another planned project called "Radical Trigger"

Magusmage

  • Porrean (+50)
  • *
  • Posts: 59
  • "I didn't create Lavos, just called him...I think"
    • View Profile
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:
Code: [Select]
################################################################################
# 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:
Code: [Select]
###############################################################################
# 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.
« Last Edit: March 12, 2011, 03:47:22 pm by Magusmage »