Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # =============================================================================
- # TheoAllen - Enemy Class and Level
- # Version : 1.0
- # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
- # (This script documentation is written in informal indonesian language)
- # =============================================================================
- ($imported ||= {})[:Theo_EnemyClass] = true
- # =============================================================================
- # CHANGE LOGS:
- # -----------------------------------------------------------------------------
- # 2013.05.23 - Started and Finished script
- # =============================================================================
- =begin
- Perkenalan :
- Script ini ngebikin enemy punya class ama level sama kek actor. Parameter
- enemy juga ngikut class dan level yg dimilikinya.
- Cara penggunaan :
- Pasang dibawah material namun diatas main.
- Notetag untuk enemy
- - <class: id> --> id adalah angka id class
- - <level: n> --> n adalah level
- Secara default, enemy class adalah 0.
- 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
- MERGE_FEATURE = true
- # semisal true, feature dari class akan dimerge ama feature dari enemy
- MERGE_PARAMS = true
- # semisal true, maka parameter dari class akan dimerge ama enemy
- end
- end
- # =============================================================================
- # Akhir dari konfigurasi
- # =============================================================================
- module THEO
- module ENEMY
- module REGEXP
- CLASS_ID = /<(?:CLASS|class):[ ]*(\d+)>/i
- LEVEL = /<(?:LEVEL|level):[ ]*(\d+)>/i
- end
- end
- end
- class RPG::Enemy < RPG::BaseItem
- attr_accessor :class_id
- attr_accessor :level
- include THEO::ENEMY
- def load_class_and_level
- @class_id = 0
- @level = 1
- self.note.split(/[\r\n]+/).each do |line|
- case line
- when REGEXP::CLASS_ID
- @class_id = $1.to_i
- when REGEXP::LEVEL
- @level = $1.to_i
- end
- end
- end
- end
- module DataManager
- class << self
- alias pre_enemy_class_db load_database
- end
- def self.load_database
- pre_enemy_class_db
- load_enemy_class
- end
- def self.load_enemy_class
- $data_enemies.compact.each do |enemy|
- enemy.load_class_and_level
- end
- end
- end
- class Game_Enemy < Game_Battler
- attr_reader :class_id
- attr_reader :level
- include THEO::ENEMY
- alias pre_enemy_class_init initialize
- def initialize(index, enemy_id)
- setup_class_and_level(enemy_id)
- pre_enemy_class_init(index, enemy_id)
- end
- def setup_class_and_level(enemy_id)
- @class_id = $data_enemies[enemy_id].class_id
- @level = $data_enemies[enemy_id].level
- end
- def class
- $data_classes[@class_id]
- end
- alias original_param_base param_base
- def param_base(param_id)
- result = original_param_base(param_id)
- return result unless MERGE_PARAMS
- result += @class_id > 0 ? self.class.params[param_id, @level] : 0
- return result
- end
- alias original_feature_object feature_objects
- def feature_objects
- original_feature_object + (MERGE_FEATURE ? [self.class] : []).compact
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment