# ============================================================================= # TheoAllen - Random Enemy Parameters # Version : 1.0 # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com # (This script documentation is written in informal indonesian language) # ============================================================================= ($imported ||= {})[:Theo_RandomEParam] = true # ============================================================================= # CHANGE LOGS: # ----------------------------------------------------------------------------- # 2013.05.18 - Started and Finished script # ============================================================================= =begin Perkenalan : Script ini ngebikin parameter musuh bisa berbeda-beda setiap kali battle. Ada kalanya sebuah Slime mempunyai MHP 120. Tapi slime lain dengan nama dan database yang sama, mempunyai MHP 80 dalam satu troop. Cara Penggunaan : Pasang script ini dibawah material namun diatas main. Tulis tag seperti ini pada note enemy jika kamu pengen spesifikasi variansi parameter tiap musuh berbeda-beda. Dimana n adalah angka variansinya. Semisal jika kamu memasukkan MHP 20, dan dalam database enemy 100, maka MHP akan dirandom antara 80 - 120. Tag yang satu ini untuk membikin enemy ngga punya variansi. Bisa digunakan untuk database boss. Tag yang satu ini untuk mengeset semua variansi secara bersamaan. urutannya adalah mhp,mmp,atk,def,mat,mdf,agi,luk 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. =end # ============================================================================= # Konfigurasi : # ============================================================================= module THEO module ENEMY # ======================================================================= VARIANCE = [ 0, 0, 0, 0, 0, 0, 0, 0] # VARIANCE = [mhp,mmp,atk,def,mat,mdf,agi,luk] # ----------------------------------------------------------------------- # Variansi default untuk semua enemy. # ======================================================================= # ======================================================================= DYNAMIC_EXP = true # ----------------------------------------------------------------------- # Jika diset true, maka jumlah exp yang didapat dari enemy juga berubah # tergantung perubahan parameter lainnya # # Rumus exp ratenya adalah rata-rata dari hasil randomisasi dari variansi # ======================================================================= # ======================================================================= INCLUDE_ZERO = true # ----------------------------------------------------------------------- # Untuk perhitungan gain exp (jika dynamic exp = true). Jika pilihan ini # kamu tulis true, maka variansi 0 akan dihitung dalam perhitungan exp. # # Contohnya jika kamu memilih false, dan kamu hanya mengisi variansi HP # 20 (sisanya 0) dengan base MHP 100. Dan EXP bonus momon adalah 100. # Saat dapet enemy dengan MHP 80, maka kamu akan dapet bonus 80 EXP. # # Perhitungannya adalah : # 0.8 / 1 (karena cuman satu aja yang punya variansi lebih dari 0) # # Jika pilihan ini kamu tulis true. Maka jika dapet enemy dengan MHP 80 # perhitungannya adalah : # (0.8+1+1+1+1+1+1+1) / 8 (termasuk yang pnya variansi 0) # ======================================================================= end end # ============================================================================= # Batas dari konfigurasi. Jangan diedit kecuali ente ngerti :v # ============================================================================= module THEO module ENEMY module REGEXP MHP_VAR = /<(?:MHP_VAR|mhp var):[ ]*(\d+)>/i MMP_VAR = /<(?:MMP_VAR|mmp var):[ ]*(\d+)>/i ATK_VAR = /<(?:ATK_VAR|atk var):[ ]*(\d+)>/i DEF_VAR = /<(?:DEF_VAR|def var):[ ]*(\d+)>/i MAT_VAR = /<(?:MAT_VAR|mat var):[ ]*(\d+)>/i MDF_VAR = /<(?:MDF_VAR|mdf var):[ ]*(\d+)>/i AGI_VAR = /<(?:AGI_VAR|agi var):[ ]*(\d+)>/i LUK_VAR = /<(?:LUK_VAR|luk var):[ ]*(\d+)>/i VARIANCE = /<(?:VARIANCE|variance):[ ](.*)>/i end end end class RPG::Enemy < RPG::BaseItem attr_accessor :params_var include THEO::ENEMY def load_params_variance @params_var = VARIANCE.dup self.note.split(/[\r\n]+/).each do |line| case line when REGEXP::MHP_VAR @params_var[0] = $1.to_i when REGEXP::MMP_VAR @params_var[1] = $1.to_i when REGEXP::ATK_VAR @params_var[2] = $1.to_i when REGEXP::DEF_VAR @params_var[3] = $1.to_i when REGEXP::MAT_VAR @params_var[4] = $1.to_i when REGEXP::MDF_VAR @params_var[5] = $1.to_i when REGEXP::AGI_VAR @params_var[6] = $1.to_i when REGEXP::LUK_VAR @params_var[7] = $1.to_i when REGEXP::VARIANCE $1.to_s.split(",").each_with_index do |v,i| break if i > 7 @params_var[i] = eval(x) rescue @params_var[i] = 0 end end # case end # note.split end # def load_param def no_variance? self.note.include?("") end end # class RPG::Enemy module DataManager class << self alias pre_random_e_param_db load_database end def self.load_database pre_random_e_param_db load_e_param_variance end def self.load_e_param_variance $data_enemies.compact.each do |enemy| enemy.load_params_variance end end end class Game_Enemy < Game_Battler alias pre_random_params_init initialize def initialize(index, enemy_id) @variances = Array.new(7) {1} pre_random_params_init(index, enemy_id) make_variances(enemy_id) end alias base_mhp mhp alias base_mmp mmp alias base_atk atk alias base_def def alias base_mat mat alias base_mdf mdf alias base_agi agi alias base_luk luk alias base_exp exp def make_variances(id) enemy = $data_enemies[id] return if enemy.no_variance? enemy.params_var.each_with_index do |var,i| if var.nil? || (var == 0 && !THEO::ENEMY::INCLUDE_ZERO) @variances[i] = nil next end min = -var max = var @variances[i] = (min + (rand *(max-min)))*0.01 + 1 end asign_hp_mp end def asign_hp_mp @hp = mhp @mp = mmp end def rata2_variansi @variances.compact.inject(0){|r,i| r += i} / @variances.compact.size rescue 1 end def mhp; param_var(base_mhp,@variances[0]); end; def mmp; param_var(base_mmp,@variances[1]); end; def atk; param_var(base_atk,@variances[2]); end; def def; param_var(base_def,@variances[3]); end; def mat; param_var(base_mat,@variances[4]); end; def mdf; param_var(base_mdf,@variances[5]); end; def agi; param_var(base_agi,@variances[6]); end; def luk; param_var(base_luk,@variances[7]); end; def exp return base_exp unless THEO::ENEMY::DYNAMIC_EXP param_var(base_exp,rata2_variansi) end; def param_var(base,var) return base unless var return (base * var).round end end