Archeia

Yanfly Engine Ace - Convert Damage v1.02

Mar 30th, 2014
267
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #==============================================================================
  2. #
  3. # ▼ Yanfly Engine Ace - Convert Damage v1.02
  4. # -- Last Updated: 2012.01.23
  5. # -- Level: Normal
  6. # -- Requires: n/a
  7. #
  8. #==============================================================================
  9.  
  10. $imported = {} if $imported.nil?
  11. $imported["YEA-ConvertDamage"] = true
  12.  
  13. #==============================================================================
  14. # ▼ Updates
  15. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  16. # 2013.02.17 - Bug fixes.
  17. # 2012.01.23 - Compatibility Update: Doppelganger
  18. # 2011.12.21 - Started Script and Finished.
  19. #
  20. #==============================================================================
  21. # ▼ Introduction
  22. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  23. # This script gives actors, classes, equipment, enemies, and states passive
  24. # convert damage HP/MP traits. By dealing physical or magical damage (dependant
  25. # on the type of attack), attackers may recover HP or MP depending on what
  26. # kinds of convert damage types they have.
  27. #
  28. #==============================================================================
  29. # ▼ Instructions
  30. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  31. # To install this script, open up your script editor and copy/paste this script
  32. # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
  33. #
  34. # -----------------------------------------------------------------------------
  35. # Actor Notetags - These notetags go in the actors notebox in the database.
  36. # -----------------------------------------------------------------------------
  37. # <convert hp physical: +x%>
  38. # <convert hp physical: -x%>
  39. # Converts any physical damage dealt to recover HP by x% of the damage dealt.
  40. # Bonus converted damage rates are additive. There will be no effects if HP
  41. # to be healed is 0 or below.
  42. #
  43. # <convert hp magical: +x%>
  44. # <convert hp magical: -x%>
  45. # Converts any magical damage dealt to recover HP by x% of the damage dealt.
  46. # Bonus converted damage rates are additive. There will be no effects if HP
  47. # to be healed is 0 or below.
  48. #
  49. # <convert mp physical: +x%>
  50. # <convert mp physical: -x%>
  51. # Converts any physical damage dealt to recover MP by x% of the damage dealt.
  52. # Bonus converted damage rates are additive. There will be no effects if MP
  53. # to be healed is 0 or below.
  54. #
  55. # <convert mp magical: +x%>
  56. # <convert mp magical: -x%>
  57. # Converts any magical damage dealt to recover MP by x% of the damage dealt.
  58. # Bonus converted damage rates are additive. There will be no effects if MP
  59. # to be healed is 0 or below.
  60. #
  61. # <anticonvert hp physical>
  62. # <anticonvert hp magical>
  63. # <anticonvert mp physical>
  64. # <anticonvert mp magical>
  65. # Prevents attackers from converting damage of those particular types. All
  66. # converted recovery effects of that type will be reduced to 0.
  67. #
  68. # -----------------------------------------------------------------------------
  69. # Class Notetags - These notetags go in the class notebox in the database.
  70. # -----------------------------------------------------------------------------
  71. # <convert hp physical: +x%>
  72. # <convert hp physical: -x%>
  73. # Converts any physical damage dealt to recover HP by x% of the damage dealt.
  74. # Bonus converted damage rates are additive. There will be no effects if HP
  75. # to be healed is 0 or below.
  76. #
  77. # <convert hp magical: +x%>
  78. # <convert hp magical: -x%>
  79. # Converts any magical damage dealt to recover HP by x% of the damage dealt.
  80. # Bonus converted damage rates are additive. There will be no effects if HP
  81. # to be healed is 0 or below.
  82. #
  83. # <convert mp physical: +x%>
  84. # <convert mp physical: -x%>
  85. # Converts any physical damage dealt to recover MP by x% of the damage dealt.
  86. # Bonus converted damage rates are additive. There will be no effects if MP
  87. # to be healed is 0 or below.
  88. #
  89. # <convert mp magical: +x%>
  90. # <convert mp magical: -x%>
  91. # Converts any magical damage dealt to recover MP by x% of the damage dealt.
  92. # Bonus converted damage rates are additive. There will be no effects if MP
  93. # to be healed is 0 or below.
  94. #
  95. # <anticonvert hp physical>
  96. # <anticonvert hp magical>
  97. # <anticonvert mp physical>
  98. # <anticonvert mp magical>
  99. # Prevents attackers from converting damage of those particular types. All
  100. # converted recovery effects of that type will be reduced to 0.
  101. #
  102. # -----------------------------------------------------------------------------
  103. # Skill Notetags - These notetags go in the skills notebox in the database.
  104. # -----------------------------------------------------------------------------
  105. # <no convert>
  106. # Prevents any kind of converted damage effects from being applied when this
  107. # skill is used.
  108. #
  109. # -----------------------------------------------------------------------------
  110. # Item Notetags - These notetags go in the items notebox in the database.
  111. # -----------------------------------------------------------------------------
  112. # <no convert>
  113. # Prevents any kind of converted damage effects from being applied when this
  114. # item is used.
  115. #
  116. # -----------------------------------------------------------------------------
  117. # Weapon Notetags - These notetags go in the weapons notebox in the database.
  118. # -----------------------------------------------------------------------------
  119. # <convert hp physical: +x%>
  120. # <convert hp physical: -x%>
  121. # Converts any physical damage dealt to recover HP by x% of the damage dealt.
  122. # Bonus converted damage rates are additive. There will be no effects if HP
  123. # to be healed is 0 or below.
  124. #
  125. # <convert hp magical: +x%>
  126. # <convert hp magical: -x%>
  127. # Converts any magical damage dealt to recover HP by x% of the damage dealt.
  128. # Bonus converted damage rates are additive. There will be no effects if HP
  129. # to be healed is 0 or below.
  130. #
  131. # <convert mp physical: +x%>
  132. # <convert mp physical: -x%>
  133. # Converts any physical damage dealt to recover MP by x% of the damage dealt.
  134. # Bonus converted damage rates are additive. There will be no effects if MP
  135. # to be healed is 0 or below.
  136. #
  137. # <convert mp magical: +x%>
  138. # <convert mp magical: -x%>
  139. # Converts any magical damage dealt to recover MP by x% of the damage dealt.
  140. # Bonus converted damage rates are additive. There will be no effects if MP
  141. # to be healed is 0 or below.
  142. #
  143. # <anticonvert hp physical>
  144. # <anticonvert hp magical>
  145. # <anticonvert mp physical>
  146. # <anticonvert mp magical>
  147. # Prevents attackers from converting damage of those particular types. All
  148. # converted recovery effects of that type will be reduced to 0.
  149. #
  150. # -----------------------------------------------------------------------------
  151. # Armour Notetags - These notetags go in the armours notebox in the database.
  152. # -----------------------------------------------------------------------------
  153. # <convert hp physical: +x%>
  154. # <convert hp physical: -x%>
  155. # Converts any physical damage dealt to recover HP by x% of the damage dealt.
  156. # Bonus converted damage rates are additive. There will be no effects if HP
  157. # to be healed is 0 or below.
  158. #
  159. # <convert hp magical: +x%>
  160. # <convert hp magical: -x%>
  161. # Converts any magical damage dealt to recover HP by x% of the damage dealt.
  162. # Bonus converted damage rates are additive. There will be no effects if HP
  163. # to be healed is 0 or below.
  164. #
  165. # <convert mp physical: +x%>
  166. # <convert mp physical: -x%>
  167. # Converts any physical damage dealt to recover MP by x% of the damage dealt.
  168. # Bonus converted damage rates are additive. There will be no effects if MP
  169. # to be healed is 0 or below.
  170. #
  171. # <convert mp magical: +x%>
  172. # <convert mp magical: -x%>
  173. # Converts any magical damage dealt to recover MP by x% of the damage dealt.
  174. # Bonus converted damage rates are additive. There will be no effects if MP
  175. # to be healed is 0 or below.
  176. #
  177. # <anticonvert hp physical>
  178. # <anticonvert hp magical>
  179. # <anticonvert mp physical>
  180. # <anticonvert mp magical>
  181. # Prevents attackers from converting damage of those particular types. All
  182. # converted recovery effects of that type will be reduced to 0.
  183. #
  184. # -----------------------------------------------------------------------------
  185. # Enemy Notetags - These notetags go in the enemies notebox in the database.
  186. # -----------------------------------------------------------------------------
  187. # <convert hp physical: +x%>
  188. # <convert hp physical: -x%>
  189. # Converts any physical damage dealt to recover HP by x% of the damage dealt.
  190. # Bonus converted damage rates are additive. There will be no effects if HP
  191. # to be healed is 0 or below.
  192. #
  193. # <convert hp magical: +x%>
  194. # <convert hp magical: -x%>
  195. # Converts any magical damage dealt to recover HP by x% of the damage dealt.
  196. # Bonus converted damage rates are additive. There will be no effects if HP
  197. # to be healed is 0 or below.
  198. #
  199. # <convert mp physical: +x%>
  200. # <convert mp physical: -x%>
  201. # Converts any physical damage dealt to recover MP by x% of the damage dealt.
  202. # Bonus converted damage rates are additive. There will be no effects if MP
  203. # to be healed is 0 or below.
  204. #
  205. # <convert mp magical: +x%>
  206. # <convert mp magical: -x%>
  207. # Converts any magical damage dealt to recover MP by x% of the damage dealt.
  208. # Bonus converted damage rates are additive. There will be no effects if MP
  209. # to be healed is 0 or below.
  210. #
  211. # <anticonvert hp physical>
  212. # <anticonvert hp magical>
  213. # <anticonvert mp physical>
  214. # <anticonvert mp magical>
  215. # Prevents attackers from converting damage of those particular types. All
  216. # converted recovery effects of that type will be reduced to 0.
  217. #
  218. # -----------------------------------------------------------------------------
  219. # State Notetags - These notetags go in the states notebox in the database.
  220. # -----------------------------------------------------------------------------
  221. # <convert hp physical: +x%>
  222. # <convert hp physical: -x%>
  223. # Converts any physical damage dealt to recover HP by x% of the damage dealt.
  224. # Bonus converted damage rates are additive. There will be no effects if HP
  225. # to be healed is 0 or below.
  226. #
  227. # <convert hp magical: +x%>
  228. # <convert hp magical: -x%>
  229. # Converts any magical damage dealt to recover HP by x% of the damage dealt.
  230. # Bonus converted damage rates are additive. There will be no effects if HP
  231. # to be healed is 0 or below.
  232. #
  233. # <convert mp physical: +x%>
  234. # <convert mp physical: -x%>
  235. # Converts any physical damage dealt to recover MP by x% of the damage dealt.
  236. # Bonus converted damage rates are additive. There will be no effects if MP
  237. # to be healed is 0 or below.
  238. #
  239. # <convert mp magical: +x%>
  240. # <convert mp magical: -x%>
  241. # Converts any magical damage dealt to recover MP by x% of the damage dealt.
  242. # Bonus converted damage rates are additive. There will be no effects if MP
  243. # to be healed is 0 or below.
  244. #
  245. # <anticonvert hp physical>
  246. # <anticonvert hp magical>
  247. # <anticonvert mp physical>
  248. # <anticonvert mp magical>
  249. # Prevents attackers from converting damage of those particular types. All
  250. # converted recovery effects of that type will be reduced to 0.
  251. #
  252. #==============================================================================
  253. # ▼ Compatibility
  254. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  255. # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
  256. # it will run with RPG Maker VX without adjusting.
  257. #
  258. # For maximum compatibility with Yanfly Engine Ace - Ace Battle Engine, place
  259. # this script under Ace Battle Engine.
  260. #
  261. #==============================================================================
  262.  
  263. module YEA
  264.   module CONVERT_DAMAGE
  265.    
  266.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  267.     # - Limit Settings -
  268.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  269.     # Adjust the maximum converted damage rate for dealing damage (so that an
  270.     # attacker cannot gain huge amounts of recovery).
  271.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  272.     MAXIMUM_RATE = 1.0   # Maximum gain from dealing damage.
  273.    
  274.   end # CONVERT_DAMAGE
  275. end # YEA
  276.  
  277. #==============================================================================
  278. # ▼ Editting anything past this point may potentially result in causing
  279. # computer damage, incontinence, explosion of user's head, coma, death, and/or
  280. # halitosis so edit at your own risk.
  281. #==============================================================================
  282.  
  283. module YEA
  284.   module REGEXP
  285.   module BASEITEM
  286.    
  287.     CONVERT_DMG = /<(?:CONVERT|convert)[ ](.*)[ ](.*):[ ]([\+\-]\d+)([%])>/i
  288.     ANTICONVERT = /<(?:ANTI_CONVERT|anti convert|anticonvert)[ ](.*)[ ](.*)>/i
  289.    
  290.   end # BASEITEM
  291.   module USABLEITEM
  292.    
  293.     NO_CONVERT = /<(?:NO_CONVERT|no convert)>/i
  294.    
  295.   end # USABLEITEM
  296.   end # REGEXP
  297. end # YEA
  298.  
  299. #==============================================================================
  300. # ■ DataManager
  301. #==============================================================================
  302.  
  303. module DataManager
  304.  
  305.   #--------------------------------------------------------------------------
  306.   # alias method: load_database
  307.   #--------------------------------------------------------------------------
  308.   class <<self; alias load_database_convertdmg load_database; end
  309.   def self.load_database
  310.     load_database_convertdmg
  311.     load_notetags_convertdmg
  312.   end
  313.  
  314.   #--------------------------------------------------------------------------
  315.   # new method: load_notetags_convertdmg
  316.   #--------------------------------------------------------------------------
  317.   def self.load_notetags_convertdmg
  318.     groups = [$data_actors, $data_classes, $data_weapons, $data_armors,
  319.       $data_enemies, $data_states, $data_skills, $data_items]
  320.     for group in groups
  321.       for obj in group
  322.         next if obj.nil?
  323.         obj.load_notetags_convertdmg
  324.       end
  325.     end
  326.   end
  327.  
  328. end # DataManager
  329.  
  330. #==============================================================================
  331. # ■ RPG::BaseItem
  332. #==============================================================================
  333.  
  334. class RPG::BaseItem
  335.  
  336.   #--------------------------------------------------------------------------
  337.   # public instance variables
  338.   #--------------------------------------------------------------------------
  339.   attr_accessor :convert_dmg
  340.   attr_accessor :anticonvert
  341.  
  342.   #--------------------------------------------------------------------------
  343.   # common cache: load_notetags_convertdmg
  344.   #--------------------------------------------------------------------------
  345.   def load_notetags_convertdmg
  346.     @convert_dmg ={
  347.       :hp_physical => 0.0,
  348.       :hp_magical  => 0.0,
  349.       :mp_physical => 0.0,
  350.       :mp_magical  => 0.0,
  351.     } # Do not remove this.
  352.     @anticonvert = []
  353.     #---
  354.     self.note.split(/[\r\n]+/).each { |line|
  355.       case line
  356.       #---
  357.       when YEA::REGEXP::BASEITEM::CONVERT_DMG
  358.         case $1.upcase
  359.         when "HP"
  360.           case $2.upcase
  361.           when "PHYSICAL"; type = :hp_physical
  362.           when "MAGICAL";  type = :hp_magical
  363.           else; next
  364.           end
  365.         when "MP"
  366.           case $2.upcase
  367.           when "PHYSICAL"; type = :mp_physical
  368.           when "MAGICAL";  type = :mp_magical
  369.           else; next
  370.           end
  371.         else; next
  372.         end
  373.         @convert_dmg[type] = $3.to_i * 0.01
  374.       #---
  375.       when YEA::REGEXP::BASEITEM::ANTICONVERT
  376.         case $1.upcase
  377.         when "HP"
  378.           case $2.upcase
  379.           when "PHYSICAL"; type = :hp_physical
  380.           when "MAGICAL";  type = :hp_magical
  381.           else; next
  382.           end
  383.         when "MP"
  384.           case $2.upcase
  385.           when "PHYSICAL"; type = :mp_physical
  386.           when "MAGICAL";  type = :mp_magical
  387.           else; next
  388.           end
  389.         else; next
  390.         end
  391.         @anticonvert.push(type)
  392.       #---
  393.       end
  394.     } # self.note.split
  395.     #---
  396.   end
  397.  
  398. end # RPG::BaseItem
  399.  
  400. #==============================================================================
  401. # ■ RPG::UsableItem
  402. #==============================================================================
  403.  
  404. class RPG::UsableItem < RPG::BaseItem
  405.  
  406.   #--------------------------------------------------------------------------
  407.   # public instance variables
  408.   #--------------------------------------------------------------------------
  409.   attr_accessor :no_convert
  410.  
  411.   #--------------------------------------------------------------------------
  412.   # common cache: load_notetags_convertdmg
  413.   #--------------------------------------------------------------------------
  414.   def load_notetags_convertdmg
  415.     #---
  416.     self.note.split(/[\r\n]+/).each { |line|
  417.       case line
  418.       #---
  419.       when YEA::REGEXP::USABLEITEM::NO_CONVERT
  420.         @no_convert = true
  421.       #---
  422.       end
  423.     } # self.note.split
  424.     #---
  425.   end
  426.  
  427. end # RPG::UsableItem
  428.  
  429. #==============================================================================
  430. # ■ Game_BattlerBase
  431. #==============================================================================
  432.  
  433. class Game_BattlerBase
  434.  
  435.   #--------------------------------------------------------------------------
  436.   # new method: convert_dmg_rate
  437.   #--------------------------------------------------------------------------
  438.   def convert_dmg_rate(type)
  439.     n = 0.0
  440.     if actor?
  441.       n += self.actor.convert_dmg[type]
  442.       n += self.class.convert_dmg[type]
  443.       for equip in equips
  444.         next if equip.nil?
  445.         n += equip.convert_dmg[type]
  446.       end
  447.     else
  448.       n += self.enemy.convert_dmg[type]
  449.       if $imported["YEA-Doppelganger"] && !self.class.nil?
  450.         n += self.class.convert_dmg[type]
  451.       end
  452.     end
  453.     for state in states
  454.       next if state.nil?
  455.       n += state.convert_dmg[type]
  456.     end
  457.     max_rate = YEA::CONVERT_DAMAGE::MAXIMUM_RATE
  458.     return [[n, max_rate].min, -max_rate].max
  459.   end
  460.  
  461.   #--------------------------------------------------------------------------
  462.   # new method: anti_convert?
  463.   #--------------------------------------------------------------------------
  464.   def anti_convert?(type)
  465.     if actor?
  466.       return true if self.actor.anticonvert.include?(type)
  467.       return true if self.class.anticonvert.include?(type)
  468.       for equip in equips
  469.         next if equip.nil?
  470.         return true if equip.anticonvert.include?(type)
  471.       end
  472.     else
  473.       return true if self.enemy.anticonvert.include?(type)
  474.     end
  475.     for state in states
  476.       next if state.nil?
  477.       return true if state.anticonvert.include?(type)
  478.     end
  479.     return false
  480.   end
  481.  
  482. end # Game_BattlerBase
  483.  
  484. #==============================================================================
  485. # ■ Game_Battler
  486. #==============================================================================
  487.  
  488. class Game_Battler < Game_BattlerBase
  489.  
  490.   #--------------------------------------------------------------------------
  491.   # alias method: execute_damage
  492.   #--------------------------------------------------------------------------
  493.   alias game_battler_execute_damage_convertdmg execute_damage
  494.   def execute_damage(user)
  495.     apply_vampire_effects(user)
  496.     game_battler_execute_damage_convertdmg(user)
  497.   end
  498.  
  499.   #--------------------------------------------------------------------------
  500.   # new method: apply_vampire_effect
  501.   #--------------------------------------------------------------------------
  502.   def apply_vampire_effects(user)
  503.     return unless $game_party.in_battle
  504.     return unless @result.hp_damage > 0 || @result.mp_damage > 0
  505.     return if user.current_action.nil?
  506.     action = user.current_action.item
  507.     return if action.no_convert
  508.     apply_convert_physical_effect(user) if action.physical?
  509.     apply_convert_magical_effect(user) if action.magical?
  510.   end
  511.  
  512.   #--------------------------------------------------------------------------
  513.   # new method: apply_convert_physical_effect
  514.   #--------------------------------------------------------------------------
  515.   def apply_convert_physical_effect(user)
  516.     hp_rate = user.convert_dmg_rate(:hp_physical)
  517.     hp_rate = 0 if anti_convert?(:hp_physical)
  518.     hp_healed = (@result.hp_damage * hp_rate).to_i
  519.     mp_rate = user.convert_dmg_rate(:mp_physical)
  520.     mp_rate = 0 if anti_convert?(:mp_physical)
  521.     mp_healed = (@result.mp_damage * mp_rate).to_i
  522.     if hp_healed != 0
  523.       user.hp += hp_healed
  524.       make_ace_battle_engine_convert_hp_popup(user, hp_healed)
  525.     end
  526.     if mp_healed != 0
  527.       user.mp += mp_healed
  528.       make_ace_battle_engine_convert_mp_popup(user, mp_healed)
  529.     end
  530.   end
  531.  
  532.   #--------------------------------------------------------------------------
  533.   # new method: apply_convert_magical_effect
  534.   #--------------------------------------------------------------------------
  535.   def apply_convert_magical_effect(user)
  536.     hp_rate = user.convert_dmg_rate(:hp_magical)
  537.     hp_rate = 0 if anti_convert?(:hp_magical)
  538.     hp_healed = (@result.hp_damage * hp_rate).to_i
  539.     mp_rate = user.convert_dmg_rate(:mp_magical)
  540.     mp_rate = 0 if anti_convert?(:mp_magical)
  541.     mp_healed = (@result.mp_damage * mp_rate).to_i
  542.     if hp_healed != 0
  543.       user.hp += hp_healed
  544.       make_ace_battle_engine_convert_hp_popup(user, hp_healed)
  545.     end
  546.     if mp_healed != 0
  547.       user.mp += mp_healed
  548.       make_ace_battle_engine_convert_mp_popup(user, mp_healed)
  549.     end
  550.   end
  551.  
  552.   #--------------------------------------------------------------------------
  553.   # new method: make_ace_battle_engine_convert_hp_popup
  554.   #--------------------------------------------------------------------------
  555.   def make_ace_battle_engine_convert_hp_popup(user, hp_healed)
  556.     return unless $imported["YEA-BattleEngine"]
  557.     setting = hp_healed > 0 ? :hp_heal : :hp_dmg
  558.     rules = hp_healed > 0 ? "HP_HEAL" : "HP_DMG"
  559.     value = hp_healed.abs
  560.     text = sprintf(YEA::BATTLE::POPUP_SETTINGS[setting], value.group)
  561.     user.create_popup(text, rules)
  562.   end
  563.  
  564.   #--------------------------------------------------------------------------
  565.   # new method: make_ace_battle_engine_convert_mp_popup
  566.   #--------------------------------------------------------------------------
  567.   def make_ace_battle_engine_convert_mp_popup(user, mp_healed)
  568.     return unless $imported["YEA-BattleEngine"]
  569.     setting = mp_healed > 0 ? :mp_heal : :mp_dmg
  570.     rules = mp_healed > 0 ? "MP_HEAL" : "MP_DMG"
  571.     value = mp_healed.abs
  572.     text = sprintf(YEA::BATTLE::POPUP_SETTINGS[setting], value.group)
  573.     user.create_popup(text, rules)
  574.   end
  575.  
  576. end # Game_Battler
  577.  
  578. #==============================================================================
  579. #
  580. # ▼ End of File
  581. #
  582. #==============================================================================
RAW Paste Data