Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $imported = {} if $imported.nil?
- $imported["HBK_SSWE"] = 0.63
- #==============================================================================
- # ■ SIMPLE STUPID WEAPON EFFICIENCY ver0.63
- # by HBK61
- # Requires: N/A
- # Rewrites method: N/A
- # Aliases method:
- # Game_ActionResult.make_damage
- # Game_Battler.make_damage_value
- # Data_Manager.load_database
- # Game_Actor.setup
- #
- #==============================================================================
- # CHANGELOG
- # - ver0.63 2013.01.05 aliasing make_damage_value, compacting script
- # - ver0.62 2012.12.29 give up on aliasing make_damage_value,
- # rewrite method make_damage_value,
- # add class weapon efficiency, add debug mode,
- # add limiter, add damage from item option
- # - ver0.61a 2012.08.26 Trying to fix make_damage method on Game_ActionResult
- # - ver0.61 2012.08.16 Trying to alias make_damage_value method
- # - ver0.60 Initialization
- #==============================================================================
- # INTRODUCTION
- # This simple snippet is intended to amplify your damage based on your current
- # weapon.
- # You have char A (which class is Archer class) and B (Berserker)
- # A can wield Sword and Bow, B only can wield Sword
- # You think there's no way an archer could defeat berserker on swordmanship
- # Then this script can help you set A's weapon efficiency on sword to 0.5 while
- # B's weapon efficiency on 2.0
- #
- #
- # This WE system can be applied to Actor and/or Class. And you can also set
- # the WE calculation for Actor and Class to Sum, Max, Avg, or Mult
- #
- # Here is another example on Avg method:
- # B has personal 2.0 WE (weapon efficiency) on sword
- # B1 has no personal WE set on sword
- # C has personal 1.3 WE on Sword
- # Berserker class have 1.5 WE on sword
- # Cleric class has no WE set on sword
- #
- # Final WE on B will be ( 2.0 + 1.5 ) / 2 = 1.75
- # Final WE for B1 will be 1.5 (only using class WE)
- # Final WE for C will be 1.3 (only using actor WE)
- #
- #==============================================================================
- # INSTRUCTION
- # - Simply write <weapon_efficiency: weapon_id, value> on class and/or actor's
- # note
- #==============================================================================
- module HBK
- # Put this value to true if you want to track your damage before and after
- # WE is applied on RGSS console
- ENABLE_WE_DEBUG = true
- # Change this parameter
- WEAPON_EFFICIENCY_USE_LIMIT = false
- WEAPON_EFFICIENCY_MIN = 0.25
- WEAPON_EFFICIENCY_MAX = 4.0
- # Change the calculation method between actor and class WE
- # to :avg, :sum, :max, or :mult
- WEAPON_EFFICIENCY_METHOD = :sum
- # Change to true if you want WE also calculate damage caused by items
- WEAPON_EFFICIENCY_INCLUDE_ITEMS = true
- # Don't change anything below this line unless you know what to do
- #==============================================================================
- module REGEX
- WEAPON_EFFICIENCY = /<weapon_efficiency\s*:\s*(\d+),\s*(\d+\.?\d*)>/i
- end
- end
- module DataManager
- class <<self
- alias hbk_sswe_load_database load_database
- end
- def self.load_database
- hbk_sswe_load_database
- hbk_sswe_scan_notes
- end
- def self.hbk_sswe_scan_notes
- groups = [$data_classes,$data_actors,]
- for group in groups
- for obj in group
- next if obj.nil?
- obj.hbk_sswe_scan_notes
- end
- end
- end
- end # module DataManager
- class Game_BattlerBase;include HBK;end
- class RPG::Class < RPG::BaseItem
- def hbk_sswe_scan_notes
- @we = []
- self.note.split(/[\r\n]+/).each {|line|
- case line
- when HBK::REGEX::WEAPON_EFFICIENCY
- @we[$1.to_i] = $2.to_f
- end
- }
- end
- attr_accessor :we
- end #RPG::Class
- class RPG::Actor < RPG::BaseItem
- def hbk_sswe_scan_notes
- @we = []
- self.note.split(/[\r\n]+/).each {|line|
- case line
- when HBK::REGEX::WEAPON_EFFICIENCY
- @we[$1.to_i] = $2.to_f
- end
- }
- end
- attr_accessor :we
- end #RPG::Actor
- class Game_Actor < Game_Battler
- alias hbk_sswe_setup setup
- def setup(actor_id)
- hbk_sswe_setup(actor_id)
- @we = actor.we
- end
- attr_accessor :we
- end #Game_Actor
- class Game_ActionResult
- alias hbk_sswe_make_damage make_damage
- def make_damage(value, item)
- hbk_sswe_make_damage(value, item)
- return value
- end
- end
- class Game_Battler < Game_BattlerBase
- alias hbk_sswe_make_damage_value make_damage_value
- def make_damage_value(user, item)
- value = hbk_sswe_make_damage_value(user, item)
- if user.is_a?(Game_Actor)
- user.equips[0].nil? ? wid = 0 : wid = user.equips[0].wtype_id
- puts(user.name) if HBK::ENABLE_WE_DEBUG
- puts("weapon id is " + wid.to_s) if HBK::ENABLE_WE_DEBUG
- puts("value before amplification is " + value.to_s) if HBK::ENABLE_WE_DEBUG
- var1 = user.we[wid]
- var2 = user.class.we[wid]
- if var1.nil? & var2.nil?
- var_total = 1
- elsif var1.nil?
- var_total = var2
- elsif var2.nil?
- var_total = var1
- else
- case HBK::WEAPON_EFFICIENCY_METHOD
- when :avg
- var_total = (var1 + var2)/2
- when :max
- var_total = [var1, var2].max
- when :sum
- var_total = var1 + var2
- when :mult
- var_total = var2 * var2
- end
- if HBK::WEAPON_EFFICIENCY_USE_LIMIT
- mx = HBK::WEAPON_EFFICIENCY_MAX.to_f
- mn = HBK::WEAPON_EFFICIENCY_MIN.to_f
- var_total = [[var_total, mn].max, mx].min
- end
- end
- if !item.is_a?(RPG::Item)
- value *= var_total
- elsif HBK::WEAPON_EFFICIENCY_INCLUDE_ITEMS
- value *= var_total
- end
- end
- puts("amplification is " + var_total.to_s) if HBK::ENABLE_WE_DEBUG
- puts("value after applying WE is " + value.to_s) if HBK::ENABLE_WE_DEBUG
- puts("") if HBK::ENABLE_WE_DEBUG
- @result.make_damage(value, item)
- end
- end #Game_Battler
Advertisement
Add Comment
Please, Sign In to add comment