Guest User

Meowface | Auto Equip Slot

a guest
Aug 7th, 2016
64
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #==============================================================================
  2. # ■ Meow Face (Auto) Equip Slots
  3. #------------------------------------------------------------------------------
  4. # Automatically Add/Remove equip slots based on database editor weapon/armor types
  5. # Automatically name slots to be the same as weapon/armor types
  6. #==============================================================================
  7. #
  8. # [How to Use]
  9. #
  10. # [1] Place this script below Material and above Main
  11. #
  12. # [2] Add weapon & armor types to actor/class/weapon/armor under features
  13. #
  14. # [3] To have more than 1 same equip slots(armor only), just add more in features.
  15. #
  16. # NOTE: When using more than 1 types of weapon, the type name will stack,
  17. # separated by / eg. Sword/Claw/Whip
  18. # To disable showing weapon types, goto settings area below and change true to false
  19. #
  20. # [4] To Seal/Fixed a gear slot, add the following to the
  21. # actor/class/weapon/armor/state notebox
  22. # <seal: 1, 3, 4> or <SEAL: 1, 3, 4>
  23. # <fix: 2, 5, 6> or <FIX: 2, 5, 6>
  24. # 0 = weapon, 1~=armor type id (same as those under terms tab)
  25. #
  26. # NOTE: Sealed gear slots are automatically removed from equip scene
  27. #
  28. # [5] To seal off dual wield when using a 2 handed weapon, add below
  29. # to weapon's notebox
  30. # <twohand>
  31. #
  32. # [6] To add starting gears(armors only, use editor for weapon), add
  33. # below to actor's notebox
  34. # <gear: 21, 15, 61> or <GEAR: 21, 15, 61>
  35. # use armor's id here
  36. #
  37. # [!!_IMPORTANT NOTE_!!]
  38. # * Equip types no longer work and are replaced by Armor types
  39. # * Only use the script's seal/fix, the editor's default
  40. # seal/fix no longer works
  41. # * Add starting gears using the script's method for armor only,
  42. # weapons still require editor
  43. #==============================================================================
  44.  
  45. module MEOWFACE_EQUIP_SLOTS #DO NOT REMOVE!!
  46.  
  47. #==============================================================================
  48. # Settings Area
  49. #==============================================================================
  50.  
  51. SHOW_WEAPON_TYPE = true #Show weapon's individual type(true)/default(false)
  52.  
  53. #==============================================================================
  54. # End of Settings Area
  55. # Edit anything past this line at your own risk!
  56. #==============================================================================
  57. end
  58. module Vocab
  59. def self.mfwtype(wtype_id)
  60. $data_system.weapon_types[wtype_id]
  61. end
  62. def self.mfatype(atype_id)
  63. $data_system.armor_types[atype_id]
  64. end
  65. end
  66. class RPG::BaseItem
  67. def meow_start_gear
  68. return @meowgear if @meowgear != nil
  69. @meowgear = []
  70. stmemo = @note.scan(/<(?:GEAR|gear):[ ](\d+(?:\s*,\s*\d+)*)>/i).flatten
  71. stmemo.each do |m|
  72. m.to_s.split(/\s*,\s*/).each {|d| @meowgear.push(d.to_i)} if stmemo != nil && !stmemo.empty?
  73. end
  74. @meowgear
  75. end
  76. def meow_fix_gear
  77. return @meowfixeq if @meowfixeq != nil
  78. @meowfixeq = []
  79. fmemo = @note.scan(/<(?:FIX|fix):[ ](\d+(?:\s*,\s*\d+)*)>/i).flatten
  80. fmemo.each do |m|
  81. m.to_s.split(/\s*,\s*/).each {|d| @meowfixeq.push(d.to_i)} if fmemo != nil && !fmemo.empty?
  82. end
  83. @meowfixeq
  84. end
  85. def meow_seal_gear
  86. return @meowsealeq if @meowsealeq != nil
  87. @meowsealeq = []
  88. smemo = @note.scan(/<(?:SEAL|seal):[ ](\d+(?:\s*,\s*\d+)*)>/i).flatten
  89. smemo.each do |m|
  90. m.to_s.split(/\s*,\s*/).each {|d| @meowsealeq.push(d.to_i)} if smemo != nil && !smemo.empty?
  91. end
  92. @meowsealeq
  93. end
  94. end
  95. class RPG::Armor < RPG::EquipItem
  96. def etype_id #overwrite method
  97. return self.atype_id
  98. end
  99. end
  100. class RPG::Weapon < RPG::EquipItem
  101. def two_hand?
  102. @note.include?("<twohand>")
  103. end
  104. end
  105. class Game_BattlerBase
  106. def equip_type_fixed?(etype_id) #overwrite method
  107. meow_fixed_sum.include?(etype_id)
  108. end
  109. def equip_type_sealed?(etype_id) #overwrite method
  110. meow_sealed_sum.include?(etype_id)
  111. end
  112. def equip_features(code)
  113. features(code).inject([]) {|r, ft| r += [ft.data_id] }
  114. end
  115. def eq_wtype
  116. return [] if meow_sealed_sum.include?(0)
  117. features_set(FEATURE_EQUIP_WTYPE)
  118. end
  119. def eq_atype
  120. equip_features(FEATURE_EQUIP_ATYPE) - meow_sealed_sum
  121. end
  122. end
  123. class Game_Actor < Game_Battler
  124. alias meow_init_equips init_equips
  125. def init_equips(equips)
  126. meow_init_equips(equips)
  127. meow_start_equip
  128. end
  129. def meow_start_equip
  130. for id in actor.meow_start_gear
  131. meowarmor = $data_armors[id]
  132. next if meowarmor.nil?
  133. etype_id = meowarmor.etype_id
  134. next unless equip_slots.include?(etype_id)
  135. slot_id = empty_slot(etype_id)
  136. @equips[slot_id].set_equip(etype_id == 0, meowarmor.id)
  137. end
  138. optimize_equipments
  139. refresh
  140. end
  141. def meow_fixed_sum
  142. @meow_fixed_math = []
  143. @meow_fixed_math += self.class.meow_fix_gear
  144. @meow_fixed_math += actor.meow_fix_gear
  145. for equip in equips
  146. next if equip.nil?
  147. @meow_fixed_math += equip.meow_fix_gear
  148. end
  149. for state in states
  150. next if state.nil?
  151. @meow_fixed_math += state.meow_fix_gear
  152. end
  153. @meow_fixed_math
  154. end
  155. def meow_sealed_sum
  156. @meow_sealed_math = []
  157. @meow_sealed_math += self.class.meow_seal_gear
  158. @meow_sealed_math += actor.meow_seal_gear
  159. for equip in equips
  160. next if equip.nil?
  161. @meow_sealed_math += equip.meow_seal_gear
  162. end
  163. for state in states
  164. next if state.nil?
  165. @meow_sealed_math += state.meow_seal_gear
  166. end
  167. @meow_sealed_math
  168. end
  169. def two_handed?
  170. weapons.any? do |weapon|
  171. return weapon.two_hand? if weapon != nil
  172. end
  173. end
  174. def equip_slots #overwrite method
  175. if eq_wtype == []
  176. return eq_atype
  177. else
  178. return [0]+eq_atype if two_handed?
  179. return [0,0]+eq_atype if dual_wield?
  180. return [0]+eq_atype
  181. end
  182. end
  183. end
  184. class Window_EquipSlot < Window_Selectable
  185. def slot_name(index) #overwrite method
  186. if @actor.equip_slots[index] == 0
  187. if !MEOWFACE_EQUIP_SLOTS::SHOW_WEAPON_TYPE
  188. return @actor ? Vocab::etype(@actor.equip_slots[index]) : ""
  189. end
  190. mfwtype_name = ""
  191. last_id = @actor.eq_wtype[-1]
  192. @actor.eq_wtype.each do |id|
  193. mfwtype_name += Vocab::mfwtype(id)
  194. if id != last_id
  195. mfwtype_name += "/"
  196. end
  197. end
  198. @actor ? mfwtype_name : ""
  199. else
  200. @actor ? Vocab::mfatype(@actor.equip_slots[index]) : ""
  201. end
  202. end
  203. end
  204. class Scene_Equip < Scene_MenuBase
  205. alias meow_csw create_slot_window
  206. def create_slot_window
  207. meow_csw
  208. @slot_window.create_contents
  209. @slot_window.draw_all_items
  210. end
  211. alias meow_oac on_actor_change
  212. def on_actor_change
  213. meow_oac
  214. @slot_window.create_contents
  215. @slot_window.draw_all_items
  216. end
  217. end
RAW Paste Data