Advertisement
MateusAp

yanfly class specifics

Sep 23rd, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.43 KB | None | 0 0
  1.  
  2. github.com
  3. Otimizado agora
  4. Ver original
  5. #==============================================================================
  6. #
  7. # ▼ Yanfly Engine Ace - Class Specifics v1.00
  8. # -- Last Updated: 2011.12.23
  9. # -- Level: Normal
  10. # -- Requires: YEA - Class System v1.03+
  11. #
  12. #==============================================================================
  13. $imported = {} if $imported.nil?
  14. $imported["YEA-ClassSpecifics"] = true
  15. #==============================================================================
  16. # ▼ Updates
  17. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  18. # 2011.12.23 - Started Script and Finished.
  19. #
  20. #==============================================================================
  21. # ▼ Introduction
  22. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  23. # This script allows for certain classes to be primary-only or sublcass-only.
  24. # In addition to that, subclasses can require certain classes to be primary
  25. # classes in order to be applied.
  26. #
  27. #==============================================================================
  28. # ▼ Instructions
  29. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  30. # To install this script, open up your script editor and copy/paste this script
  31. # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
  32. #
  33. # -----------------------------------------------------------------------------
  34. # Class Notetags - These notetags go in the class notebox in the database.
  35. # -----------------------------------------------------------------------------
  36. # <primary only>
  37. # Makes this class equippable only if it's the primary class.
  38. #
  39. # <subclass only>
  40. # Makes this class equippable only if it's the subclass class.
  41. #
  42. # <subclass to: x>
  43. # <subclass to: x, x>
  44. # This makes the class subclass only and only equippable if the primary class
  45. # is one of the listed x classes.
  46. #
  47. #==============================================================================
  48. # ▼ Compatibility
  49. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  50. # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
  51. # it will run with RPG Maker VX without adjusting.
  52. #
  53. # This script requires Yanfly Engine Ace - Class System v1.03+.
  54. #
  55. #==============================================================================
  56. # ▼ Editting anything past this point may potentially result in causing
  57. # computer damage, incontinence, explosion of user's head, coma, death, and/or
  58. # halitosis so edit at your own risk.
  59. #==============================================================================
  60. if $imported["YEA-ClassSystem"]
  61. module YEA
  62. module REGEXP
  63. module CLASS
  64. PRIMARY_ONLY = /<(?:PRIMARY_ONLY|primary only)>/i
  65. SUBCLASS_ONLY = /<(?:SUBCLASS_ONLY|subclass only)>/i
  66. SUBCLASS_TO = /<(?:SUBCLASS_TO|subclass to):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
  67. end # CLASS
  68. end # REGEXP
  69. end # YEA
  70. #==============================================================================
  71. # ■ DataManager
  72. #==============================================================================
  73. module DataManager
  74. #--------------------------------------------------------------------------
  75. # alias method: load_database
  76. #--------------------------------------------------------------------------
  77. class <<self; alias load_database_csp load_database; end
  78. def self.load_database
  79. load_database_csp
  80. load_notetags_csp
  81. end
  82. #--------------------------------------------------------------------------
  83. # new method: load_notetags_csp
  84. #--------------------------------------------------------------------------
  85. def self.load_notetags_csp
  86. for obj in $data_classes
  87. next if obj.nil?
  88. obj.load_notetags_csp
  89. end
  90. end
  91. end # DataManager
  92. #==============================================================================
  93. # ■ RPG::Class
  94. #==============================================================================
  95. class RPG::Class < RPG::BaseItem
  96. #--------------------------------------------------------------------------
  97. # public instance variables
  98. #--------------------------------------------------------------------------
  99. attr_accessor :primary_only
  100. attr_accessor :subclass_only
  101. attr_accessor :subclass_to
  102. #--------------------------------------------------------------------------
  103. # common cache: load_notetags_csp
  104. #--------------------------------------------------------------------------
  105. def load_notetags_csp
  106. @primary_only = false
  107. @subclass_only = false
  108. @subclass_to = []
  109. #---
  110. self.note.split(/[\r\n]+/).each { |line|
  111. case line
  112. #---
  113. when YEA::REGEXP::CLASS::PRIMARY_ONLY
  114. @primary_only = true
  115. @subclass_only = false
  116. @subclass_to = []
  117. when YEA::REGEXP::CLASS::SUBCLASS_ONLY
  118. @primary_only = false
  119. @subclass_only = true
  120. when YEA::REGEXP::CLASS::SUBCLASS_TO
  121. @primary_only = false
  122. @subclass_only = true
  123. $1.scan(/\d+/).each { |num|
  124. @subclass_to.push(num.to_i) if num.to_i > 0 }
  125. end
  126. } # self.note.split
  127. #---
  128. end
  129. end # RPG::Class
  130. #==============================================================================
  131. # ■ Game_Actor
  132. #==============================================================================
  133. class Game_Actor < Game_Battler
  134. #--------------------------------------------------------------------------
  135. # alias method: change_class
  136. #--------------------------------------------------------------------------
  137. alias game_actor_change_class_csp change_class
  138. def change_class(class_id, keep_exp = false)
  139. return if $data_classes[class_id].subclass_only
  140. game_actor_change_class_csp(class_id, keep_exp)
  141. correct_subclass
  142. end
  143. #--------------------------------------------------------------------------
  144. # alias method: change_subclass
  145. #--------------------------------------------------------------------------
  146. alias game_actor_change_subclass_csp change_subclass
  147. def change_subclass(class_id)
  148. return unless subclass_requirements_met?(class_id)
  149. game_actor_change_subclass_csp(class_id)
  150. end
  151. #--------------------------------------------------------------------------
  152. # new method: subclass_requirements_met?
  153. #--------------------------------------------------------------------------
  154. def subclass_requirements_met?(class_id)
  155. subclass = $data_classes[class_id]
  156. return false if subclass.primary_only
  157. return subclass_to?(class_id) if subclass.subclass_to != []
  158. return true
  159. end
  160. #--------------------------------------------------------------------------
  161. # new method: subclass_to?
  162. #--------------------------------------------------------------------------
  163. def subclass_to?(class_id)
  164. return true if class_id == 0
  165. subclass = $data_classes[class_id]
  166. return false if subclass.nil?
  167. for class_id in subclass.subclass_to
  168. return true if class_id == self.class.id
  169. end
  170. return false
  171. end
  172. #--------------------------------------------------------------------------
  173. # new method: correct_subclass
  174. #--------------------------------------------------------------------------
  175. def correct_subclass
  176. return if @subclass_id == 0
  177. subclass = $data_classes[@subclass_id]
  178. return if subclass.nil?
  179. return if subclass.subclass_to == []
  180. @subclass_id = 0 if !subclass_to?(@subclass_id)
  181. end
  182. end # Game_Actor
  183. #==============================================================================
  184. # ■ Window_ClassList
  185. #==============================================================================
  186. class Window_ClassList < Window_Selectable
  187. #--------------------------------------------------------------------------
  188. # alias method: enable?
  189. #--------------------------------------------------------------------------
  190. alias window_classlist_enable_csp enable?
  191. def enable?(item)
  192. case @command_window.current_symbol
  193. when :primary
  194. return false if item.subclass_only
  195. when :subclass
  196. return false if item.primary_only
  197. return @actor.subclass_to?(item.id) if item.subclass_to != []
  198. end
  199. return window_classlist_enable_csp(item)
  200. end
  201. end # Window_ClassList
  202. end # $imported["YEA-ClassSystem"]
  203. #==============================================================================
  204. #
  205. # ▼ End of File
  206. #
  207. #=========================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement