vindaca510

V's Prefixes & Suffixes v0.3

Jan 29th, 2014
393
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 15.27 KB | None | 0 0
  1. #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>#
  2. #                                                                              #
  3. #                           V's  Prefixes & Suffixes                           #
  4. #                                 Version  0.3                                 #
  5. #                                                                              #
  6. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
  7. #                                Written By:  V                                #
  8. #                         Last Edited: January 30, 2014                        #
  9. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
  10. #                                                                              #
  11. #<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>#
  12. #==============================================================================#
  13. #------------------------------------------------------------------------------#
  14. # ** Disclaimer                                                                #
  15. #------------------------------------------------------------------------------#
  16. #                                                                              #
  17. # This script was intended for Non-Commercial use only, if you wish to use     #
  18. # this script in a commercial game please PM me at which ever site you found   #
  19. # this script. Either way please give me credit in your game script as the     #
  20. # writer of this script, and send me a PM abuot the release of the game/demo.  #
  21. #                                                                              #
  22. #------------------------------------------------------------------------------#
  23. # ** How To Use                                                                #
  24. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
  25. #                                                                              #
  26. #  * Check out weapons numbers 1, 64, 65, 67, 68 in the demo for examples of   #
  27. #  how to set-up weapons, prefixes, and suffixes.                              #
  28. #                                                                              #
  29. #  * All prefixes, and suffixes are created the same way as weapons an must    #
  30. #  ALL be created as a weapon.                                                 #
  31. #                                                                              #
  32. #  * Armor is set-up with the same tag as weapon 1.                            #
  33. #                                                                              #
  34. #  * Place these tags in your Weapon or Armor Noteboxes, the # should be       #
  35. #  replaced by the weapon ids that you would like to use                       #
  36. #                                                                              #
  37. #       <Prefix: #, #, #>                                                      #
  38. #       <Suffix: #, #, #>                                                      #
  39. #                                                                              #
  40. #  * Use these commands in a script call to create a specific weapon or armor. #
  41. #                                                                              #
  42. #       create_weapon(base_weapon_id, prefix_id, suffix_id)                    #
  43. #       create_armor(base_armor_id, prefix_id, suffix_id)                      #
  44. #                                                                              #
  45. #  * The prefix_id and suffix_id are both false by default. A false id will    #
  46. #  result in a random prefix and suffex set-up via weapon and armor notetags.  #
  47. #  Here are a few more example script calls.                                   #
  48. #                                                                              #
  49. #       create_weapon(base_weapon_id, false, suffix_id)                        #
  50. #       create_weapon(base_weapon_id, prefix_id, false)                        #
  51. #       create_weapon(base_weapon_id, false, false)                            #
  52. #       create_weapon(base_weapon_id)                                          #
  53. #                                                                              #
  54. #       create_armor(base_armor_id, false, suffix_id)                          #
  55. #       create_armor(base_armor_id, prefix_id, false)                          #
  56. #       create_armor(base_armor_id, false, false)                              #
  57. #       create_armor(base_armor_id)                                            #
  58. #                                                                              #
  59. #  * You can also use 0 as an id to ensure no perfix or suffix is used. Here   #
  60. #  are a few example of how to use 0.                                          #
  61. #                                                                              #
  62. #       create_weapon(base_weapon_id, 0, false)                                #
  63. #       create_weapon(base_weapon_id, false, 0)                                #
  64. #       create_weapon(base_weapon_id, prefix_id, 0)                            #
  65. #       create_weapon(base_weapon_id, 0, suffix_id)                            #
  66. #       create_weapon(base_weapon_id, 0, 0) This will result in a base weapon. #
  67. #                                                                              #
  68. #       create_armor(base_armor_id, false, 0)                                  #
  69. #       create_armor(base_armor_id, 0, false)                                  #
  70. #       create_armor(base_armor_id, prefix_id, 0)                              #
  71. #       create_armor(base_armor_id, 0, suffix_id)                              #
  72. #       create_armor(base_armor_id, 0, 0)                                      #
  73. #                                                                              #
  74. #                                                                              #
  75. #                       See the demo for more examples                         #
  76. #                                                                              #
  77. #------------------------------------------------------------------------------#
  78. # ** Description                                                               #
  79. #------------------------------------------------------------------------------#
  80. #                                                                              #
  81. #  v0.1                                                                        #
  82. # ~=~=~=~                                                                      #
  83. #                                                                              #
  84. # In v0.1, this script allows you to create instance item with prefixes and    #
  85. # suffixes, completly random, or very specific.                                #
  86. #                                                                              #  
  87. #  v0.2                                                                        #
  88. # ~=~=~=~                                                                      #
  89. #                                                                              #
  90. # A few bug fixes were added and now all prices will be merged as well as the  #
  91. # parameters and features.                                                     #
  92. #                                                                              #  
  93. #  v0.3                                                                        #
  94. # ~=~=~=~                                                                      #
  95. #                                                                              #
  96. # A bug was found and fixed by Selchar. All armors and weapon are now saved.   #
  97. #                                                                              #  
  98. #------------------------------------------------------------------------------#
  99. #==============================================================================#
  100.  
  101. #==============================================================================
  102. # ** DataManager
  103. #------------------------------------------------------------------------------
  104. #  This module manages the database and game objects. Almost all of the
  105. # global variables used by the game are initialized by this module.
  106. #==============================================================================
  107.  
  108. module DataManager
  109.  
  110.   #--------------------------------------------------------------------------
  111.   # * Aliasing Method: Extract Save Contents & Create Game Objects
  112.   #--------------------------------------------------------------------------
  113.   class << self
  114.     alias :vindaca_affixes_esc :extract_save_contents
  115.     alias :vindaca_affixes_cgo :create_game_objects
  116.   end
  117.  
  118.   #--------------------------------------------------------------------------
  119.   # * Extract Save Contents
  120.   #--------------------------------------------------------------------------
  121.   def self.extract_save_contents(contents)
  122.     vindaca_affixes_esc(contents)
  123.     $data_armors.concat($game_system.affixed_armors)
  124.     $data_weapons.concat($game_system.affixed_weapons)
  125.   end
  126.  
  127.   #--------------------------------------------------------------------------
  128.   # * Create Game Objects
  129.   #--------------------------------------------------------------------------
  130.   def self.create_game_objects
  131.     vindaca_affixes_cgo
  132.     load_database
  133.   end
  134. end
  135.  
  136.  
  137. #==============================================================================
  138. # ** Game_System
  139. #------------------------------------------------------------------------------
  140. #  This class handles system data. It saves the disable state of saving and
  141. # menus. Instances of this class are referenced by $game_system.
  142. #==============================================================================
  143.  
  144. class Game_System
  145.  
  146.   #--------------------------------------------------------------------------
  147.   # * Public Instance Variables
  148.   #--------------------------------------------------------------------------
  149.   attr_accessor :affixed_armors, :affixed_weapons
  150.  
  151.   #--------------------------------------------------------------------------
  152.   # * Aliasing Method: Make Command List
  153.   #--------------------------------------------------------------------------
  154.   alias :vindaca_affixes_gs_init :initialize
  155.  
  156.   #--------------------------------------------------------------------------
  157.   # * Initializing Processing
  158.   #--------------------------------------------------------------------------
  159.   def initialize
  160.     vindaca_affixes_gs_init
  161.     @affixed_armors = @affixed_weapons = []
  162.   end
  163.  
  164. end
  165.  
  166.  
  167. #==============================================================================
  168. # ** Game_Interpreter
  169. #------------------------------------------------------------------------------
  170. #  An interpreter for executing event commands. This class is used within the
  171. # Game_Map, Game_Troop, and Game_Event classes.
  172. #==============================================================================
  173.  
  174. class Game_Interpreter
  175.  
  176.   #-----------------------------------------------------------------------------
  177.   # * Create Prefix
  178.   #-----------------------------------------------------------------------------
  179.   def create_prefix(base)
  180.     p_note = /<Prefix\S*\s*(\d+(?:\S*\s*\d+)*)+>/im
  181.     pre = base.note.match(p_note) {  $1.scan(/\d+/).collect { |i| i.to_i } }
  182.     unless pre == nil
  183.       prefix = pre[rand(pre.size)]
  184.       return prefix
  185.     else
  186.       return 0
  187.     end
  188.   end
  189.  
  190.   #-----------------------------------------------------------------------------
  191.   # * Create Suffix
  192.   #-----------------------------------------------------------------------------
  193.   def create_suffix(base)
  194.     s_note = /<Suffix\S*\s*(\d+(?:\S*\s*\d+)*)+>/im
  195.     suf = base.note.match(s_note) {  $1.scan(/\d+/).collect { |i| i.to_i } }
  196.     unless suf == nil
  197.       suffix = suf[rand(suf.size)]
  198.       return suffix
  199.     else
  200.       return 0
  201.     end
  202.   end
  203.  
  204.   #-----------------------------------------------------------------------------
  205.   # * Create Name
  206.   #-----------------------------------------------------------------------------
  207.   def create_name(base, prefix, suffix)
  208.     name = base.name
  209.     pre = $data_weapons[prefix].dup unless prefix == 0
  210.     suf = $data_weapons[suffix].dup unless suffix == 0
  211.     unless prefix == 0
  212.       name = pre.name + " " + name
  213.     end
  214.     unless suffix == 0
  215.       name = name + " " + suf.name
  216.     end
  217.     return name
  218.   end
  219.  
  220.   #-----------------------------------------------------------------------------
  221.   # * Create Params
  222.   #-----------------------------------------------------------------------------
  223.   def create_params(base, prefix, suffix)
  224.     params = base.params
  225.     8.times {  |i| params[i] += $data_weapons[prefix].params[i] } unless prefix == 0
  226.     8.times {  |i| params[i] += $data_weapons[suffix].params[i] } unless suffix == 0
  227.     return params
  228.   end
  229.  
  230.   #-----------------------------------------------------------------------------
  231.   # * Create Price
  232.   #-----------------------------------------------------------------------------
  233.   def create_price(base, prefix, suffix)
  234.     price = base.price
  235.     price += $data_weapons[prefix].price unless prefix == 0
  236.     price += $data_weapons[suffix].price unless suffix == 0
  237.     return price
  238.   end
  239.  
  240.   #-----------------------------------------------------------------------------
  241.   # * Create Features
  242.   #-----------------------------------------------------------------------------
  243.   def create_feats(base, prefix, suffix)
  244.     feats = base.features
  245.     pre = $data_weapons[prefix] unless prefix == 0
  246.     suf = $data_weapons[suffix] unless suffix == 0
  247.     pre.features.each { |pf| feats.push pf } unless prefix == 0
  248.     suf.features.each { |sf| feats.push sf } unless suffix == 0
  249.     return feats
  250.   end
  251.  
  252.   #-----------------------------------------------------------------------------
  253.   # * Create Weapon
  254.   #-----------------------------------------------------------------------------
  255.   def create_weapon(id, prefix = false, suffix = false)
  256.     base = Marshal.load(Marshal.dump($data_weapons[id]))
  257.     prefix = create_prefix(base) if prefix == false
  258.     suffix = create_suffix(base) if suffix == false
  259.     base.id = $data_weapons.size
  260.     base.name = create_name(base, prefix, suffix)
  261.     base.params = create_params(base, prefix, suffix)
  262.     base.features = create_feats(base, prefix, suffix)
  263.     base.price = create_price(base, prefix, suffix)
  264.     $data_weapons.push base
  265.     $game_system.affixed_weapons.push base
  266.     $game_party.gain_item($data_weapons[$data_weapons.size - 1], 1, true)
  267.   end
  268.  
  269.   #-----------------------------------------------------------------------------
  270.   # * Create Weapon
  271.   #-----------------------------------------------------------------------------
  272.   def create_armor(id, prefix = false, suffix = false)
  273.     base = Marshal.load(Marshal.dump($data_armors[id]))
  274.     prefix = create_prefix(base) if prefix == false
  275.     suffix = create_suffix(base) if suffix == false
  276.     base.id = $data_armors.size
  277.     base.name = create_name(base, prefix, suffix)
  278.     base.params = create_params(base, prefix, suffix)
  279.     base.features = create_feats(base, prefix, suffix)
  280.     $data_armors.push base
  281.     $game_system.affixed_armors.push base
  282.     $game_party.gain_item($data_armors[$data_armors.size - 1], 1, true)
  283.   end
  284.  
  285. end
Advertisement
Add Comment
Please, Sign In to add comment