TheoAllen

Theo - Enemy Class and Level

Jun 5th, 2013
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.63 KB | None | 0 0
  1. # =============================================================================
  2. # TheoAllen - Enemy Class and Level
  3. # Version : 1.0
  4. # Contact : www.rpgmakerid.com (or) http://theolized.blogspot.com
  5. # (This script documentation is written in informal indonesian language)
  6. # =============================================================================
  7. ($imported ||= {})[:Theo_EnemyClass] = true
  8. # =============================================================================
  9. # CHANGE LOGS:
  10. # -----------------------------------------------------------------------------
  11. # 2013.05.23 - Started and Finished script
  12. # =============================================================================
  13. =begin
  14.  
  15.   Perkenalan :
  16.   Script ini ngebikin enemy punya class ama level sama kek actor. Parameter
  17.   enemy juga ngikut class dan level yg dimilikinya.
  18.  
  19.   Cara penggunaan :
  20.   Pasang dibawah material namun diatas main.
  21.  
  22.   Notetag untuk enemy
  23.   - <class: id> --> id adalah angka id class
  24.   - <level: n>  --> n adalah level
  25.   Secara default, enemy class adalah 0.
  26.  
  27.   Terms of use :
  28.   Credit gw, TheoAllen. Kalo semisal u bisa ngedit2 script gw trus jadi lebih
  29.   keren, terserah. Ane bebasin. Asal ngga ngeklaim aja. Kalo semisal mau
  30.   dipake buat komersil, jangan lupa, gw dibagi gratisannya.
  31.  
  32. =end
  33. # =============================================================================
  34. # Konfigurasi :
  35. # =============================================================================
  36. module THEO
  37.   module ENEMY
  38.    
  39.     MERGE_FEATURE = true
  40.     # semisal true, feature dari class akan dimerge ama feature dari enemy
  41.    
  42.     MERGE_PARAMS = true
  43.     # semisal true, maka parameter dari class akan dimerge ama enemy
  44.    
  45.   end
  46. end
  47. # =============================================================================
  48. # Akhir dari konfigurasi
  49. # =============================================================================
  50. module THEO
  51.   module ENEMY
  52.   module REGEXP
  53.    
  54.     CLASS_ID  = /<(?:CLASS|class):[ ]*(\d+)>/i
  55.     LEVEL     = /<(?:LEVEL|level):[ ]*(\d+)>/i
  56.    
  57.   end
  58.   end
  59. end
  60.  
  61. class RPG::Enemy < RPG::BaseItem
  62.   attr_accessor :class_id
  63.   attr_accessor :level
  64.  
  65.   include THEO::ENEMY
  66.  
  67.   def load_class_and_level
  68.     @class_id = 0
  69.     @level = 1
  70.     self.note.split(/[\r\n]+/).each do |line|
  71.       case line
  72.       when REGEXP::CLASS_ID
  73.         @class_id = $1.to_i
  74.       when REGEXP::LEVEL
  75.         @level = $1.to_i
  76.       end
  77.     end
  78.   end
  79.  
  80. end
  81.  
  82. module DataManager
  83.  
  84.   class << self
  85.     alias pre_enemy_class_db load_database
  86.   end
  87.  
  88.   def self.load_database
  89.     pre_enemy_class_db
  90.     load_enemy_class
  91.   end
  92.  
  93.   def self.load_enemy_class
  94.     $data_enemies.compact.each do |enemy|
  95.       enemy.load_class_and_level
  96.     end
  97.   end
  98.  
  99. end
  100.  
  101. class Game_Enemy < Game_Battler
  102.   attr_reader :class_id
  103.   attr_reader :level
  104.  
  105.   include THEO::ENEMY
  106.  
  107.   alias pre_enemy_class_init initialize
  108.   def initialize(index, enemy_id)
  109.     setup_class_and_level(enemy_id)
  110.     pre_enemy_class_init(index, enemy_id)
  111.   end
  112.  
  113.   def setup_class_and_level(enemy_id)
  114.     @class_id = $data_enemies[enemy_id].class_id
  115.     @level = $data_enemies[enemy_id].level
  116.   end
  117.  
  118.   def class
  119.     $data_classes[@class_id]
  120.   end
  121.  
  122.   alias original_param_base param_base
  123.   def param_base(param_id)
  124.     result = original_param_base(param_id)
  125.     return result unless MERGE_PARAMS
  126.     result += @class_id > 0 ? self.class.params[param_id, @level] : 0
  127.     return result
  128.   end
  129.  
  130.   alias original_feature_object feature_objects
  131.   def feature_objects
  132.     original_feature_object + (MERGE_FEATURE ? [self.class] : []).compact
  133.   end
  134.  
  135. end
Advertisement
Add Comment
Please, Sign In to add comment