RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
[RMVX]Help making a quick edit

0 Members and 1 Guest are viewing this topic.

***
Rep:
Level 71
RMRK Junior
Had someone make a script for me a while back that essentially creates a state to Parry. it's setup in a way that it's essentially 2 stats, Parry Chance, and Parry Amount. the problem I am having is that it lets you parry heals, resulting in being healed for a lesser amount. Was just curious if anyone could make a quick fix for this issue?

This is the script itself:


Code: [Select]
#==============================================================================
# Dodginess
# by ???nOBodY???
# Requested By: Zerothedarklord
#==============================================================================

USE_DODGINESS = true

module Vocab
  # Dodged
  ActorDodged = "%s avoided a direct hit!!"
  EnemyDodged = "%s shrugged it off!!"
end

DEBUG_DODGINESS = false

#=================================================================================
$imported = {} if $imported == nil
$imported["Dodginess"] = true
class Game_Battler
  #===============================================================================
  # Below you can create a dodginess skill growth for each actor. The array should
  # be set up as:
  # DODGINGCHANCE_GROWTH = [[Actor ID, level 1 skill, level 100 skill]]
  # DODGINGAMOUNT_GROWTH = [[Actor ID, level 1 skill, level 100 skill]]
  # Be sure to put commas between each individual array, marked by brackets [].
  # Armors, States, and Weapons can all alter this stat by putting in the note
  # <dodgeChc X> or <dodgeVal X> or <bothDodge> where X will be the value you want
  # to increase/decrease the dodginess skill. Use <bothDodge> to boost both
  # chance and amount of dodginess at once.
  # Two script calls can be used to modify each dodginess skill and rating.
  # After calculating the bonuses from equipment and stats, dodginess can
  # have further boosts based off of script calls for that actor.
  # change_dodgeChc(actor, amount, type)  amount is any integer that will be
  #                            added/subtracted from the type. Type is if you're
  #                            changing the skill or dodginess rating itself.
  #                            For skill, type should be set to 0, and for rate
  #                            it should be 1.
  #
  # set_dodgeChc(actor, amount, type)   This functions the same as change_dodgeChc
  #                            except instead of adding/subtracting it will set
  #                            the bonus to an actor's dodginess to the amount.
  # change_dodgeVal(actor, amount, type)  amount is any integer that will be
  #                            added/subtracted from the type. Type is if you're
  #                            changing the skill or dodginess rating itself.
  #                            For skill, type should be set to 0, and for rate
  #                            it should be 1.
  #
  # set_dodgeVal(actor, amount, type)   This functions the same as change_dodgeVal
  #                            except instead of adding/subtracting it will set
  #                            the bonus to an actor's dodginess to the amount.
  #===============================================================================
  DODGINGCHANCE_GROWTH = [[1, 10, 10], [2, 10, 10], [3, 10, 10],
                             [4, 10, 10], [5, 10, 10], [6, 10, 10],
                             [7, 10, 10], [8, 10, 10]]
  DODGINGAMOUNT_GROWTH = [[1, 60, 60], [2, 60, 60], [3, 60, 60],
                             [4, 60, 60], [5, 60, 60], [6, 60, 60],
                             [7, 60, 60], [8, 60, 60]]
  #===============================================================================
  # Below you can set up the pen modifiers. The pen modifiers are level
  # dependent and change the amount of pen skill that is needed for 1% of
  # pen. It should be set up as:
  # class_id => [[level, modifier], [level, modifier]],
  #===============================================================================
  CUSTOM_DODGINGCHANCE = {
    0 => [[1, 2], [2, 2], [3, 2], [4, 2], [5, 2], [6, 2], [7, 2], [8, 2],
  [9, 2], [10, 2], [11, 2], [12, 2], [13, 2], [14, 2], [15, 2], [16, 2],
  [17, 2], [18, 2], [19, 2], [20, 2], [21, 2], [22, 2], [23, 2], [24, 2],
  [25, 2], [26, 2], [27, 2], [28, 2], [29, 2], [30, 2], [31, 2], [32, 2],
  [33, 2], [34, 2], [35, 2], [36, 2], [37, 2], [38, 2], [39, 2], [40, 2],
  [41, 2], [42, 2], [43, 2], [44, 2], [45, 2], [46, 2], [47, 2], [48, 2],
  [49, 2], [50, 2], [51, 2], [52, 2], [53, 2], [54, 2], [55, 2], [56, 2],
  [57, 2], [58, 2], [59, 2], [60, 2], [61, 2], [62, 2], [63, 2], [64, 2],
  [65, 2], [66, 2], [67, 2], [68, 2], [69, 2], [70, 2], [71, 2], [72, 2],
  [73, 2], [74, 2], [75, 2], [76, 2], [77, 2], [78, 2], [79, 2], [80, 2],
  [81, 2], [82, 2], [83, 2], [84, 2], [85, 2], [86, 2], [87, 2], [88, 2],
  [89, 2], [90, 2], [91, 2], [92, 2], [93, 2], [94, 2], [95, 2], [96, 2],
  [97, 2], [98, 2], [99, 2], [100, 2]],
  }
  CUSTOM_DODGINGAMOUNT = {
    0 => [[1, 2], [2, 2], [3, 2], [4, 2], [5, 2], [6, 2], [7, 2], [8, 2],
  [9, 2], [10, 2], [11, 2], [12, 2], [13, 2], [14, 2], [15, 2], [16, 2],
  [17, 2], [18, 2], [19, 2], [20, 2], [21, 2], [22, 2], [23, 2], [24, 2],
  [25, 2], [26, 2], [27, 2], [28, 2], [29, 2], [30, 2], [31, 2], [32, 2],
  [33, 2], [34, 2], [35, 2], [36, 2], [37, 2], [38, 2], [39, 2], [40, 2],
  [41, 2], [42, 2], [43, 2], [44, 2], [45, 2], [46, 2], [47, 2], [48, 2],
  [49, 2], [50, 2], [51, 2], [52, 2], [53, 2], [54, 2], [55, 2], [56, 2],
  [57, 2], [58, 2], [59, 2], [60, 2], [61, 2], [62, 2], [63, 2], [64, 2],
  [65, 2], [66, 2], [67, 2], [68, 2], [69, 2], [70, 2], [71, 2], [72, 2],
  [73, 2], [74, 2], [75, 2], [76, 2], [77, 2], [78, 2], [79, 2], [80, 2],
  [81, 2], [82, 2], [83, 2], [84, 2], [85, 2], [86, 2], [87, 2], [88, 2],
  [89, 2], [90, 2], [91, 2], [92, 2], [93, 2], [94, 2], [95, 2], [96, 2],
  [97, 2], [98, 2], [99, 2], [100, 2]],
  }
  #===============================================================================
  # The four values below set a default armor/spell pen skill amount
  # and default modifier for if an actor/level has none defined.
  #===============================================================================
  DEFAULT_DODGINGCHANCE_SKILL = 10
  DEFAULT_DODGINGCHANCE_MODIFIER = 2
  DEFAULT_DODGINGAMOUNT_SKILL = 60
  DEFAULT_DODGINGAMOUNT_MODIFIER = 2
 
  attr_accessor :dodgingChance_points_bonus
  attr_accessor :dodgingChance_rate_bonus
  attr_accessor :dodgingAmount_points_bonus
  attr_accessor :dodgingAmount_rate_bonus
  attr_reader   :dodged
  alias dodginessChanceAndAmount_initializer initialize
  def initialize#(actor_id)
    dodginessChanceAndAmount_initializer#(actor_id)
    @dodgingChance_points_bonus = 0
    @dodgingChance_rate_bonus = 0
    @dodgingAmount_points_bonus = 0
    @dodgingAmount_rate_bonus = 0
    @dodged = false
  end
  def dodgingChance_growth
    for item in DODGINGCHANCE_GROWTH
      if self.id == item[0]
        dc_skill = 0
        dc_actor = item[0]
        dc_level = self.level
        base_dc = item[1] * 100
        final_dc = item[2] * 100
        dc_grow = (final_dc - base_dc) / 100
        dc_skill = (dc_grow*dc_level) + base_dc
        dc_skill /= 100
        temp = 0
        for item in self.weapons
          if item != nil
            item.note[/<dodgeChc ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp+0 : temp+$1.to_i
            item.note[/<bothDodge ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp+0 : temp+$1.to_i
          end
        end
        dc_skill += temp
        temp = 0
        for item in self.states
          if item != nil
            item.note[/<dodgeChc ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp+0 : temp+$1.to_i
            item.note[/<bothDodge ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp+0 : temp+$1.to_i
          end
        end
        dc_skill += temp
        temp = 0
        for item in self.armors
          if item != nil
            item.note[/<dodgeChc ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp : temp+$1.to_i
            item.note[/<bothDodge ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp+0 : temp+$1.to_i
          end
        end
        dc_skill += temp
        dc_skill += @dodgingChance_points_bonus
        return dc_skill
      else
        dc_skill = DEFAULT_DODGINGCHANCE_SKILL
        dc_skill += @dodgingChance_points_bonus
        return dc_skill
      end
    end
  end
  def dodgingChance
    return 0 if USE_DODGINESS == false
    if self.is_a?(Game_Actor)
      if CUSTOM_DODGINGCHANCE.include?(@class_id)
        for item in CUSTOM_DODGINGCHANCE[@class_id]
          if item[0] == @level
            n = dodgingChance_growth / item[1]
            n += @dodgingChance_rate_bonus
            return n
          end
        end
        n = dodgingChance_growth / DEFAULT_DODGINGCHANCE_MODIFIER
        n += @dodgingChance_rate_bonus
        return n
      else
        for item in CUSTOM_DODGINGCHANCE[0]
          if item[0] == @level
            n = dodgingChance_growth / item[1]
            n += @dodgingChance_rate_bonus
            return n
          end
        end
        n = dodgingChance_growth / DEFAULT_DODGINGCHANCE_MODIFIER
        n += @dodgingChance_rate_bonus
        return n
      end
    else #self.is_a?(Game_Enemy)
      return 0
    end
  end
  def dodgingAmount_growth
    for item in DODGINGAMOUNT_GROWTH
      if self.id == item[0]
        da_skill = 0
        da_actor = item[0]
        da_level = self.level
        base_da = item[1] * 100
        final_da = item[2] * 100
        da_grow = (final_da - base_da) / 100
        da_skill = (da_grow*da_level) + base_da
        da_skill /= 100
        temp = 0
        for item in self.weapons
          if item != nil
            item.note[/<dodgeVal ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp+0 : temp+$1.to_i
            item.note[/<bothDodge ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp+0 : temp+$1.to_i
          end
        end
        da_skill += temp
        temp = 0
        for item in self.states
          if item != nil
            item.note[/<dodgeVal ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp+0 : temp+$1.to_i
            item.note[/<bothDodge ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp+0 : temp+$1.to_i
          end
        end
        da_skill += temp
        temp = 0
        for item in self.armors
          if item != nil
            item.note[/<dodgeVal ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp : temp+$1.to_i
            item.note[/<bothDodge ([0-9]+)>/] != nil ? $1.to_i : 0
            temp = $1 == nil ? temp+0 : temp+$1.to_i
          end
        end
        da_skill += temp
        da_skill += @dodgingAmount_points_bonus
        return da_skill
      else
        da_skill = DEFAULT_DODGINGAMOUNT_SKILL
        da_skill += @dodgingAmount_points_bonus
        return da_skill
      end
    end
  end
  def dodgingAmount
    return 0 if USE_DODGINESS == false
    if self.is_a?(Game_Actor)
      if CUSTOM_DODGINGAMOUNT.include?(@class_id)
        for item in CUSTOM_DODGINGAMOUNT[@class_id]
          if item[0] == @level
            n = dodgingAmount_growth / item[1]
            n += @dodgingAmount_rate_bonus
            return n
          end
        end
        n = dodgingAmount_growth / DEFAULT_DODGINGAMOUNT_MODIFIER
        n += @dodgingAmount_rate_bonus
        return n
      else
        for item in CUSTOM_DODGINGAMOUNT[0]
          if item[0] == @level
            n = dodgingAmount_growth / item[1]
            n += @dodgingAmount_rate_bonus
            return n
          end
        end
        n = dodgingAmount_growth / DEFAULT_DODGINGAMOUNT_MODIFIER
        n += @dodgingAmount_rate_bonus
        return n
      end
    else #self.is_a?(Game_Enemy)
      return 0
    end
  end
  #--------------------------------------------------------------------------
  # * Calculation of Damage From Normal Attack
  #     attacker : Attacker
  #    The results are substituted for @hp_damage
  #--------------------------------------------------------------------------
  alias dodginess_make_attack_damage_value make_attack_damage_value
  def make_attack_damage_value(attacker)
    if USE_DODGINESS
      @dodged = (rand(100) < self.dodgingChance)
      #return if @dodged
    end
    dodginess_make_attack_damage_value(attacker)
    if USE_DODGINESS
      if @dodged
        p self.dodgingAmount
        temp = self.dodgingAmount > 100 ? 100 : self.dodgingAmount
        @hp_damage = @hp_damage * temp / 100
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Calculation of Damage Caused by Skills or Items
  #     user : User of skill or item
  #     obj  : Skill or item (for normal attacks, this is nil)
  #    The results are substituted for @hp_damage or @mp_damage.
  #--------------------------------------------------------------------------
  alias dodginess_make_obj_damage_value make_obj_damage_value
  def make_obj_damage_value(user, obj)
    if USE_DODGINESS
      @dodged = (rand(100) < self.dodgingChance)
      #return if @dodged
    end
    dodginess_make_obj_damage_value(user, obj)
    if USE_DODGINESS
      if @dodged
        temp = self.dodgingAmount > 100 ? 100 : self.dodgingAmount
        if obj.damage_to_mp 
          @mp_damage = @hp_damage * temp / 100
        else
          @hp_damage = @hp_damage * temp / 100
        end
      end
    end
  end
 
  def dodgingChance_points_bonus_shift(amount)
    @dodgingChance_points_bonus += amount
  end
  def dodgingChance_rate_bonus_shift(amount)
    @dodgingChance_rate_bonus += amount
  end
  def dodgingChance_points_bonus_set(amount)
    @dodgingChance_points_bonus = amount
  end
  def dodgingChance_rate_bonus_set(amount)
    @dodgingChance_rate_bonus = amount
  end
  def dodgingAmount_points_bonus_shift(amount)
    @dodgingAmount_points_bonus += amount
  end
  def dodgingAmount_rate_bonus_shift(amount)
    @dodgingAmount_rate_bonus += amount
  end
  def dodgingAmount_points_bonus_set(amount)
    @dodgingAmount_points_bonus = amount
  end
  def dodgingAmount_rate_bonus_set(amount)
    @dodgingAmount_rate_bonus = amount
  end
end

#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#  This class performs battle screen processing.
#==============================================================================
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # * Show Action Results
  #     target : Target
  #     obj    : Skill or item
  #--------------------------------------------------------------------------
  def display_action_effects(target, obj = nil)
    unless target.skipped
      line_number = @message_window.line_number
      wait(5)
      display_dodged(target, obj)
      display_critical(target, obj)
      display_damage(target, obj)
      display_state_changes(target, obj)
      if line_number == @message_window.line_number
        display_failure(target, obj) unless target.states_active?
      end
      if line_number != @message_window.line_number
        wait(30)
      end
      @message_window.back_to(line_number)
    end
  end
  #--------------------------------------------------------------------------
  # * Show Dodginess
  #     target : Target
  #     obj    : Skill or item
  #--------------------------------------------------------------------------
  def display_dodged(target, obj = nil)
    if target.dodged
      if target.actor?
        text = sprintf(Vocab::ActorDodged, target.name)
      else
        text = sprintf(Vocab::EnemyDodged, target.name)
      end
      @message_window.add_instant_text(text)
      wait(20)
    end
  end
end

class Game_Interpreter
  def change_dodgeChc(id, amount, type)
    case type
    when 0
      $game_actors[id].dodgingChance_points_bonus_shift(amount)
    when 1
      $game_actors[id].dodgingChance_rate_bonus_shift(amount)
    end
  end
  def set_dodgeChc(id, amount, type)
    case type
    when 0
      $game_actors[id].dodgingChance_points_bonus_set(amount)
    when 1
      $game_actors[id].dodgingChance_rate_bonus_set(amount)
    end
  end
  def change_dodgeVal(id, amount, type)
    case type
    when 0
      $game_actors[id].dodgingAmount_points_bonus_shift(amount)
    when 1
      $game_actors[id].dodgingAmount_rate_bonus_shift(amount)
    end
  end
  def set_dodgeVal(id, amount, type)
    case type
    when 0
      $game_actors[id].dodgingAmount_points_bonus_set(amount)
    when 1
      $game_actors[id].dodgingAmount_rate_bonus_set(amount)
    end
  end
end