Advertisement
Zetu

Actor Stored Variables

Aug 11th, 2011
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.76 KB | None | 0 0
  1. # ==============================================================================
  2. #   Z26 : Actor Stored Variables                                   Zetu Engine X
  3. # ------------------------------------------------------------------------------
  4. #   This scripts allows variables to be stored in local to each actor.  Each
  5. #   variable type is, by default, 0.  You may change the data type of the
  6. #   variable to anything, such as a string, but if you do, you CANNOT have that
  7. #   variable inside LEVEL_FORMULAS!
  8. # ==============================================================================
  9.  
  10.    # =========================================================================
  11.    # Syntax: <Game_Actor>.vars.(stat).
  12.    # -------------------------------------------------------------------------
  13.    # <Game_Actor>   => $game_actors[ID] or $game_party.members[INDEX]
  14.    # (stat)         => Any stat from STATS
  15.    #==========================================================================
  16.  
  17.  
  18. module Z26
  19.   STATS = ['char', 'dex'] #All Lowercase.  No Symbols or Spaces
  20.  
  21.   LEVEL_FORMULAS = {
  22.     'char' => 'level**1.5 + 4'
  23.   }
  24.   #=============================================================================
  25.   SYMBOLS = []
  26.   for stat in STATS
  27.     SYMBOLS.push(eval(':'+stat))
  28.   end
  29.   VARS = Struct.new(*SYMBOLS)
  30. end
  31.  
  32. class Game_Actor < Game_Battler
  33.   attr_accessor :vars
  34.  
  35.   alias z26_s setup unless $@
  36.   def setup(actor_id)
  37.     z26_s(actor_id)
  38.     @vars = Z26::VARS.new(*([0]*Z26::STATS.size))
  39.     for item in equips.compact
  40.       z26variate_equip(item)
  41.     end
  42.     for stat in Z26::STATS
  43.       z26variate_stats(stat, @level)
  44.     end
  45.   end
  46.  
  47.   alias z26_change_equip change_equip
  48.   def change_equip(equip_type, item, test = false)
  49.     last_item = equips[equip_type]
  50.     z26_change_equip(equip_type, item, test)
  51.     z26variate_equip(item)
  52.     z26variate_equip(last_item, false)
  53.   end
  54.  
  55.   def z26variate_equip(item, adding = true)
  56.     return if item.nil?
  57.     for line in item.note.split(//)
  58.       if line =~ /<weapon[ ]var:[ ](.*) (\d)>/i
  59.         if Z26::STATS.include?($1)
  60.           if adding
  61.             eval("@vars.#{$1} += #{$2}")
  62.           else
  63.             eval("@vars.#{$1} -= #{$2}")
  64.           end
  65.         end
  66.       end
  67.     end
  68.   end
  69.  
  70.   def z26variate_stats(stat, level, adding = true)
  71.     return if Z26::LEVEL_FORMULAS[stat].nil?
  72.     amount = eval(Z26::LEVEL_FORMULAS[stat]).to_i
  73.     if adding
  74.       eval("@vars.#{stat} += #{amount}")
  75.     else
  76.       eval("@vars.#{stat} -= #{amount}")
  77.     end
  78.   end
  79.  
  80.   alias z26level_up level_up unless $@
  81.   def level_up
  82.     for stat in Z26::STATS
  83.       z26variate_stats(stat, @level, false)
  84.     end
  85.     z26level_up
  86.     for stat in Z26::STATS
  87.       z26variate_stats(stat, @level)
  88.     end
  89.   end
  90.  
  91. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement