# ============================================================================= # TheoAllen - Elemental Attack Modifier # Version : 1.0 # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com # (This script documentation is written in informal indonesian language) # ============================================================================= ($imported ||= {})[:Theo_ElementAttack] = true # ============================================================================= # CHANGE LOGS: # ----------------------------------------------------------------------------- # 2013.05.08 - Started and Finished script # ============================================================================= =begin PERKENALAN : Script ini memberikan fitur untuk memberikan modifikasi damage berdasar element. Semisal, saat actor A memegang fire rod, maka semua serangan yang memiliki elemen api akan bertambah jadi 150% CARA PENGGUNAAN : Tulis dalam notetag mana aja (kecuali skill / item) - Dimana : - id >> nomor urut element - rate >> persenan pengubahnya (100% = ga ada perubahan) Contoh : TERMS OF USE : Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau dipake buat komersil, jangan lupa, gw dibagi gratisannya. NOTE: Kalau mau nambahin ide untuk management element, langsung aja bisa komen ke blog gw di http://theolized.blogspot.com =end # ============================================================================= # Tidak ada konfigurasi khusus # Lewat line ini, kalo ga ngerti script ga usah sok2an ngedit :v # ============================================================================= module THEO module ELEMENTS module REGEXP RATE = /<(?:ELEM_RATE|elem rate):[ ]*[ ]*(\d+\s*,\s*\d*)([%%])>/i end end end module DataManager class << self alias pre_load_elem_rate load_database end def self.load_database pre_load_elem_rate load_elements_rate end def self.load_elements_rate [$data_actors,$data_classes,$data_weapons,$data_armors,$data_states, $data_enemies].each do |databases| databases.compact.each do |obj| obj.load_elements_rate end end end end class RPG::BaseItem attr_accessor :elem_rate def load_elements_rate @elem_rate = {} for i in -1..$data_system.elements.size @elem_rate[i] = 1.0 end self.note.split(/[\r\n]+/).each do |line| case line when THEO::ELEMENTS::REGEXP::RATE puts "loaded" rate = $1.scan(/\d+/) @elem_rate[rate[0].to_i] = (rate[1].to_f)*0.01 end end end end class Game_Battler < Game_BattlerBase alias pre_elem_attack_rate item_element_rate def item_element_rate(user, item) rate = pre_elem_attack_rate(user,item) rate = apply_battler_elem_rate(user, item, rate) rate = apply_equips_elem_rate(user, item, rate) rate = apply_states_elem_rate(user, item, rate) rate end def apply_battler_elem_rate(user, item, value) if $imported[:Theo_MultiElements] item.elements_array.each do |elem| value *= user.elem_rate[elem] end else value *= user.elem_rate[item.damage.element_id] end return value end def apply_equips_elem_rate(user, item, value) return value if user.is_a?(Game_Enemy) if $imported[:Theo_MultiElements] item.elements_array.each do |elem| user.equips.compact.each do |eq| value *= eq.elem_rate[item.damage.element_id] end end else user.equips.compact.each do |eq| value *= eq.elem_rate[item.damage.element_id] end end return value end def apply_states_elem_rate(user, item, value) if $imported[:Theo_MultiElements] item.elements_array.each do |elem| user.states.each do |state| value *= state.elem_rate[elem] end end else user.states.each do |state| value *= state.elem_rate[item.damage.element_id] end end return value end end class Game_Actor < Game_Battler def elem_rate $data_actors[id].elem_rate end end class Game_Enemy < Game_Battler def elem_rate $data_enemies[enemy_id].elem_rate end end