IceDragon200

IFS-001(StatFactory)

Jun 15th, 2011
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 11.77 KB | None | 0 0
  1. #==============================================================================#
  2. # ** CHANGES
  3. #-*--------------------------------------------------------------------------*-#
  4. # Classes
  5. #
  6. #
  7. #------------------------------------------------------------------------------#
  8. #==============================================================================#
  9. # $imported - Is mostly used by Japanese RPG Maker XP/VX scripters.
  10. #             This acts as a flag, or signal to show that "x" script is present.
  11. #             This is used for compatability with other future scripts.
  12. $imported = {} if $imported == nil
  13. $imported["IFS-StatFactory"] = true
  14. #==============================================================================#
  15. # $ifs_script - Works just like the IEO ones
  16. # EG. $ifs_script[[ScriptID, "ScriptName"]]
  17. $ifs_script = {} if $ifs_script == nil
  18. $ifs_script[[1, "StatFactory"]] = 1.0
  19. #-*--------------------------------------------------------------------------*-#
  20. module IFS
  21.  
  22.   ALIAS_FIX   = "ifsa"
  23.   METHOD_FIX  = "ifsm"
  24.  
  25.   ALIAS_SUB   = "%s%s_%s"
  26.   METHOD_SUB  = "%s%s_%s"
  27.  
  28.   module_function
  29.  
  30.   def generate_name(type, genfix, oname = "", parent = nil)
  31.     case type
  32.     when :class
  33.     when :method
  34.       return sprintf(METHOD_SUB, METHOD_FIX, genfix, oname)
  35.     when :alias
  36.       return sprintf(ALIAS_SUB, ALIAS_FIX, genfix, oname)
  37.     else ; raise "Name type not recognized"  
  38.     end
  39.   end
  40.  
  41.   def generate_stat_script(name, attrs=[])
  42.     genfix = rand(999999)
  43.     meth = generate_name(:method, genfix, name)
  44.     init = generate_name(:alias, genfix, "initialize")
  45.     itge = generate_name(:alias, genfix, "item_growth_effect")
  46.     basestat = %Q(  
  47. #==============================================================================#
  48. # $imported - Is mostly used by Japanese RPG Maker XP/VX scripters.
  49. #             This acts as a flag, or signal to show that "x" script is present.
  50. #             This is used for compatability with other future scripts.
  51. $imported = {} if $imported == nil
  52. $imported["IFSGEN-#{name.capitalize}"] = true
  53. #==============================================================================#
  54. # $ifs_genscript - This is used for generated scripts, feel free to remove this
  55. #                  whole section
  56. # EG. $ifs_genscript[[GeneratedID, "ScriptName"]]
  57. $ifs_genscript = {} if $ifs_genscript == nil
  58. $ifs_genscript[[#{genfix}, "#{name.capitalize}"]] = 1.0
  59. #-*--------------------------------------------------------------------------*-#
  60. #==============================================================================#
  61.  
  62. #==============================================================================#
  63. # RPG::BaseItem
  64. #==============================================================================#
  65. class RPG::BaseItem
  66.      
  67.   #--------------------------------------------------------------------------#
  68.   # * Public Instance Variables
  69.   #--------------------------------------------------------------------------#
  70.   attr_accessor :#{name}
  71.   attr_accessor :#{name}_growth
  72.  
  73.   #--------------------------------------------------------------------------#
  74.   # * new method :#{meth}_baseitemcache
  75.   #--------------------------------------------------------------------------#
  76.   def #{meth}_baseitemcache
  77.     @#{meth}_baseitemcache_complete = false
  78.     @#{name}        = 0
  79.     @#{name}_growth = 0
  80.     # ---------------------------------------------------------------------- #
  81.     self.note.split(/[\\r\\n]+/).each { |line|
  82.       case line
  83.     # ---------------------------------------------------------------------- #
  84.       when /<#{name}:[ ]*([\\+\\-]\\d+)>/i
  85.         @#{name} = $1.to_i
  86.       when /<#{name}_growth:[ ]*([\\+\\-]\\d+)>/i
  87.         @#{name}_growth = $1.to_i
  88.       end
  89.     # ---------------------------------------------------------------------- #  
  90.     } # // End self.note.split
  91.     @#{meth}_baseitemcache_complete = true
  92.     # ---------------------------------------------------------------------- #
  93.   end
  94.      
  95. end  
  96.  
  97. #==============================================================================#
  98. # RPG::Enemy
  99. #==============================================================================#
  100. class RPG::Enemy
  101.      
  102.   #--------------------------------------------------------------------------#
  103.   # * Public Instance Variables
  104.   #--------------------------------------------------------------------------#
  105.   attr_accessor :#{name}
  106.      
  107.   #--------------------------------------------------------------------------#
  108.   # * new method :#{meth}_enemycache
  109.   #--------------------------------------------------------------------------#
  110.   def #{meth}_enemycache
  111.     @#{meth}_enemycache_complete = false
  112.     @#{name} = 0
  113.     # ---------------------------------------------------------------------- #
  114.     self.note.split(/[\\r\\n]+/).each { |line|
  115.       case line
  116.     # ---------------------------------------------------------------------- #
  117.       when /<#{name}:[ ]*([\\+\\-]\\d+)>/i
  118.         @#{name} = $1.to_i
  119.       end
  120.     # ---------------------------------------------------------------------- #  
  121.     } # // End self.note.split
  122.     @#{meth}_enemycache_complete = true
  123.     # ---------------------------------------------------------------------- #
  124.   end
  125.      
  126. end
  127.    
  128. #==============================================================================#
  129. # RPG::State
  130. #==============================================================================#
  131. class RPG::State
  132.      
  133.   #--------------------------------------------------------------------------#
  134.   # * Public Instance Variables
  135.   #--------------------------------------------------------------------------#
  136.   attr_accessor :#{name}_set
  137.   attr_accessor :#{name}_rate
  138.      
  139.   #--------------------------------------------------------------------------#
  140.   # * new method :#{meth}_statecache
  141.   #--------------------------------------------------------------------------#
  142.   def #{meth}_statecache
  143.     @#{meth}_statecache_complete = false
  144.     @#{name}_set  = 0
  145.     @#{name}_rate = 0
  146.     # ---------------------------------------------------------------------- #
  147.     self.note.split(/[\\r\\n]+/).each { |line|
  148.       case line
  149.     # ---------------------------------------------------------------------- #
  150.       # // #{name} Set
  151.       when /<#{name}:[ ]*([\\+\\-]\\d+)>/i
  152.         @#{name}_set = $1.to_i
  153.       # // #{name} Rate
  154.       when /<#{name}:[ ]*(\\d+)([%%])>/i
  155.         @#{name}_rate= $1.to_i  
  156.       end
  157.     # ---------------------------------------------------------------------- #  
  158.     } # // End self.note.split
  159.     @#{meth}_statecache_complete = true
  160.     # ---------------------------------------------------------------------- #
  161.   end
  162.      
  163. end
  164.    
  165. #==============================================================================#
  166. # Game_Battler
  167. #==============================================================================#
  168. class Game_Battler
  169.      
  170.   #--------------------------------------------------------------------------#
  171.   # * alias method :initialize
  172.   #--------------------------------------------------------------------------#
  173.   alias #{init} initialize unless $@
  174.   def initialize
  175.     # // #{name} variables
  176.     @#{name}      = 0
  177.     @#{name}_plus = 0
  178.     @#{name}_limit= 0
  179.     # // Default Initialize
  180.     #{init}
  181.   end  
  182.      
  183.   #--------------------------------------------------------------------------#
  184.   # * new method :#{name}_limit
  185.   #--------------------------------------------------------------------------#
  186.   def #{name}_limit ; return @#{name}_limit end      
  187.   #--------------------------------------------------------------------------#
  188.   # * new method :base_#{name} // Dummy method
  189.   #--------------------------------------------------------------------------#
  190.   def base_#{name}
  191.     n = 0
  192.     return Integer(n)  
  193.   end
  194.      
  195.   #--------------------------------------------------------------------------#
  196.   # * new method :#{name}
  197.   #--------------------------------------------------------------------------#
  198.   def #{name}
  199.     n = [[base_#{name} + @#{name}_plus, 1].max, #{name}_limit].min
  200.     for state in states do n *= state.#{name}_rate / 100.0 end
  201.     return Integer(n)
  202.   end  
  203.      
  204.   #--------------------------------------------------------------------------#
  205.   # * new method :#{name}
  206.   #--------------------------------------------------------------------------#
  207.   def #{name}=(n)
  208.     @#{name}_plus += new_#{name} - self.#{name}
  209.     @#{name}_plus = [[@def_plus, -#{name}_limit].max, #{name}_limit].min
  210.   end  
  211.  
  212.   #--------------------------------------------------------------------------#
  213.   # * alias method :item_growth_effect
  214.   #--------------------------------------------------------------------------#
  215.   alias #{itge} item_growth_effect unless $@
  216.   def item_growth_effect
  217.     #{itge}
  218.   end  
  219.  
  220. end  
  221.    
  222. #==============================================================================#
  223. # Game_Actor
  224. #==============================================================================#
  225. class Game_Actor
  226.      
  227.   #--------------------------------------------------------------------------#
  228.   # * redefine method :base_#{name}
  229.   #--------------------------------------------------------------------------#
  230.   def base_#{name}
  231.     n = 0
  232.     for item in equips.compact do n += item.#{name} end
  233.     return Integer(n)  
  234.   end
  235.      
  236. end  
  237.    
  238. #==============================================================================#
  239. # Game_Enemy
  240. #==============================================================================#
  241.   class Game_Enemy
  242.  
  243.   #--------------------------------------------------------------------------#
  244.   # * redefine method :base_#{name}
  245.   #--------------------------------------------------------------------------#
  246.   def base_#{name}
  247.     n = 0
  248.     n = enemy.#{name}
  249.     return Integer(n)  
  250.   end
  251.      
  252. end  
  253.    
  254. #==============================================================================#
  255. # Scene_Title
  256. #==============================================================================#
  257. class Scene_Title < Scene_Base
  258.  
  259.   #--------------------------------------------------------------------------#
  260.   # * alias method :load_database
  261.   #--------------------------------------------------------------------------#
  262.   alias #{meth}_load_database load_database unless $@
  263.   def load_database
  264.     #{meth}_load_database
  265.     load_#{meth}_cache
  266.   end
  267.  
  268.   #--------------------------------------------------------------------------#
  269.   # * alias method :load_bt_database
  270.   #--------------------------------------------------------------------------#
  271.   alias #{meth}_load_bt_database load_database unless $@
  272.   def load_bt_database
  273.     #{meth}_load_bt_database
  274.     load_#{meth}_cache
  275.   end  
  276.  
  277.   #--------------------------------------------------------------------------#
  278.   # * new method :load_#{meth}_cache
  279.   #--------------------------------------------------------------------------#
  280.   def load_#{meth}_cache
  281.     objs = [$data_items, $data_weapons, $data_armors, $data_states, $data_enemies]
  282.     objs.each { |group| group.each { |obj| next if obj.nil?
  283.       obj.#{meth}_baseitemcache if obj.is_a?(RPG::Item)
  284.       obj.#{meth}_baseitemcache if obj.is_a?(RPG::Weapon)
  285.       obj.#{meth}_baseitemcache if obj.is_a?(RPG::Armor)
  286.       obj.#{meth}_statecache    if obj.is_a?(RPG::State)
  287.       obj.#{meth}_enemycache    if obj.is_a?(RPG::Enemy) } }
  288.   end
  289.  
  290. end
  291.  
  292. #=*==========================================================================*=#
  293. # ** END OF FILE
  294. #=*==========================================================================*=#
  295. )    
  296.     File.open("#{genfix}#{name}.txt", "w+") { |file| file.write(basestat) }
  297.   end
  298.  
  299. end
  300.  
  301. # // Start dropping generations here
  302. #IFS.generate_stat_script("sp")
  303. #IFS.generate_stat_script("str")
  304. #IFS.generate_stat_script("rage")
Advertisement
Add Comment
Please, Sign In to add comment