Guest User

YEA - Slippery Floor [Masked Edit]

a guest
Jan 13th, 2016
83
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #==============================================================================
  2. #
  3. # ▼ Yanfly Engine Ace - Slippery Tiles v1.00
  4. # -- Last Updated: 2011.12.03
  5. # -- Level: Normal
  6. # -- Requires: n/a
  7. #
  8. #==============================================================================
  9.  
  10. #==============================================================================
  11. # ▼ Masked Edit:
  12. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  13. # Faz o personagem ficar parado até que um novo comando de movimento seja dado
  14. # uma vez que tenha atingido um obstáculo
  15. #==============================================================================
  16.  
  17. $imported = {} if $imported.nil?
  18. $imported["YEA-SlipperyTiles"] = true
  19. $imported["YEA-SlipperyTilesM"] = true
  20. #==============================================================================
  21. # ▼ Updates
  22. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  23. # 2011.12.03 - Started Script and Finished.
  24. #
  25. #==============================================================================
  26. # ▼ Introduction
  27. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  28. # Want slippery tiles without needing to make hundreds of events? Now you can!
  29. # This script binds slippery tile properties to individual tiles through usage
  30. # of notetags and terrain tags.
  31. #
  32. #==============================================================================
  33. # ▼ Instructions
  34. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  35. # To install this script, open up your script editor and copy/paste this script
  36. # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
  37. #
  38. # -----------------------------------------------------------------------------
  39. # Tileset Notetags - These notetags go in the tileset notebox in the database.
  40. # -----------------------------------------------------------------------------
  41. # <slippery: x>
  42. # <slippery: x, x>
  43. # Sets the tiles marked with terrain tag x to be slippery for that particular
  44. # tileset. When the player walks over a slippery terrain, the player will keep
  45. # moving forward until stopped by an object or until the player lands on ground
  46. # without slippery properties.
  47. #
  48. #==============================================================================
  49. # ▼ Compatibility
  50. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  51. # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
  52. # it will run with RPG Maker VX without adjusting.
  53. #
  54. #==============================================================================
  55. module YEA
  56. module SLIPPERY_TILES
  57. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  58. # - Sliding Animation -
  59. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  60. # Set what sliding frame you want characters to use when they're on
  61. # slippery tiles. Standing frame is 1.
  62. #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  63. SLIDE_FRAME = 1
  64. end # SLIPPERY_TILES
  65. end # YEA
  66. #==============================================================================
  67. # ▼ Editting anything past this point may potentially result in causing
  68. # computer damage, incontinence, explosion of user's head, coma, death, and/or
  69. # halitosis so edit at your own risk.
  70. #==============================================================================
  71. module YEA
  72. module REGEXP
  73. module TILESET
  74. SLIPPERY = /<(?:SLIPPERY|slippery tile):[ ]*(\d+(?:\s*,\s*\d+)*)>/i
  75. end # TILESET
  76. end # REGEXP
  77. end # YEA
  78. #==============================================================================
  79. # ■ DataManager
  80. #==============================================================================
  81. module DataManager
  82. #--------------------------------------------------------------------------
  83. # alias method: load_database
  84. #--------------------------------------------------------------------------
  85. class <<self; alias load_database_st load_database; end
  86. def self.load_database
  87. load_database_st
  88. load_notetags_st
  89. end
  90. #--------------------------------------------------------------------------
  91. # new method: load_notetags_st
  92. #--------------------------------------------------------------------------
  93. def self.load_notetags_st
  94. groups = [$data_tilesets]
  95. for group in groups
  96. for obj in group
  97. next if obj.nil?
  98. obj.load_notetags_st
  99. end
  100. end
  101. end
  102. end # DataManager
  103. #==============================================================================
  104. # ■ RPG::Tileset
  105. #==============================================================================
  106. class RPG::Tileset
  107. #--------------------------------------------------------------------------
  108. # public instance variables
  109. #--------------------------------------------------------------------------
  110. attr_accessor :slippery
  111. #--------------------------------------------------------------------------
  112. # common cache: load_notetags_st
  113. #--------------------------------------------------------------------------
  114. def load_notetags_st
  115. @slippery = []
  116. #---
  117. self.note.split(/[\r\n]+/).each { |line|
  118. case line
  119. #---
  120. when YEA::REGEXP::TILESET::SLIPPERY
  121. $1.scan(/\d+/).each { |num|
  122. @slippery.push(num.to_i) if num.to_i > 0 }
  123. #---
  124. end
  125. } # self.note.split
  126. #---
  127. end
  128. end # RPG::Tileset
  129. #==============================================================================
  130. # ■ Game_Map
  131. #==============================================================================
  132. class Game_Map
  133. #--------------------------------------------------------------------------
  134. # new method: slippery_floor?
  135. #--------------------------------------------------------------------------
  136. def slippery_floor?(dx, dy)
  137. return (valid?(dx, dy) && slippery_tag?(dx, dy))
  138. end
  139. #--------------------------------------------------------------------------
  140. # new method: slippery_tag?
  141. #--------------------------------------------------------------------------
  142. def slippery_tag?(dx, dy)
  143. return tileset.slippery.include?(terrain_tag(dx, dy))
  144. end
  145. end # Game_Map
  146. #==============================================================================
  147. # ■ Game_CharacterBase
  148. #==============================================================================
  149. class Game_CharacterBase
  150. #--------------------------------------------------------------------------
  151. # new method: on_slippery_floor?
  152. #--------------------------------------------------------------------------
  153. def on_slippery_floor?; $game_map.slippery_floor?(@x, @y); end
  154. #--------------------------------------------------------------------------
  155. # new method: slippery_pose?
  156. #--------------------------------------------------------------------------
  157. def slippery_pose?
  158. return false unless on_slippery_floor?
  159. return false if @step_anime
  160. return true
  161. end
  162. end # Game_CharacterBase
  163. #==============================================================================
  164. # ■ Game_Player
  165. #==============================================================================
  166. class Game_Player < Game_Character
  167. #--------------------------------------------------------------------------
  168. # alias method: dash?
  169. #--------------------------------------------------------------------------
  170. alias game_player_dash_st dash?
  171. def dash?
  172. return false if on_slippery_floor?
  173. return game_player_dash_st
  174. end
  175. #--------------------------------------------------------------------------
  176. # alias method: update
  177. #--------------------------------------------------------------------------
  178. alias game_player_update_st update
  179. def update
  180. game_player_update_st
  181. start_slide if slide?
  182. update_slippery
  183. end_slide unless slide?
  184. end
  185. #--------------------------------------------------------------------------
  186. # new method: slide?
  187. #--------------------------------------------------------------------------
  188. def slide?
  189. return moving? && on_slippery_floor?
  190. end
  191. #--------------------------------------------------------------------------
  192. # new method: start_slide
  193. #--------------------------------------------------------------------------
  194. def start_slide
  195. @slippery = true
  196. end
  197. #--------------------------------------------------------------------------
  198. # new method: end_slide
  199. #--------------------------------------------------------------------------
  200. def end_slide
  201. @slippery = false
  202. end
  203. #--------------------------------------------------------------------------
  204. # new method: update_slippery
  205. #--------------------------------------------------------------------------
  206. def update_slippery
  207. return unless @slippery
  208. return if $game_map.interpreter.running?
  209. return if moving?
  210. move_straight(@direction)
  211. end
  212. #--------------------------------------------------------------------------
  213. # new method: pattern
  214. #--------------------------------------------------------------------------
  215. def pattern
  216. return YEA::SLIPPERY_TILES::SLIDE_FRAME if slippery_pose?
  217. return @pattern
  218. end
  219. end # Game_Player
  220. #==============================================================================
  221. # ■ Game_Follower
  222. #==============================================================================
  223. class Game_Follower < Game_Character
  224. #--------------------------------------------------------------------------
  225. # new method: pattern
  226. #--------------------------------------------------------------------------
  227. def pattern
  228. return YEA::SLIPPERY_TILES::SLIDE_FRAME if slippery_pose?
  229. return @pattern
  230. end
  231. end # Game_Follower
  232. #==============================================================================
  233. #
RAW Paste Data