Advertisement
WCouillard

RGSS3: Land Vehicle v1.07 [RMVXA]

Dec 5th, 2012 (edited)
5,014
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 23.12 KB | None | 0 0
  1. # ╔════════════════════════════════════════════════════╤═══════╤══════════════╗
  2. # ║ Land Vehicle                                       │ v1.07 │ (09/29/2021) ║
  3. # ╠════════════════════════════════════════════════════╧═══════╧══════════════╣
  4. # ║ Author:  William Couillard                                                ║
  5. # ║ Thanks:  Galv (http://galveraxe.wordpress.com/)                           ║
  6. # ║          Mr. Trivel                                                       ║
  7. # ║          Chigoo                                                           ║
  8. # ║ E-Mail:  cooliebk18@yahoo.com                                             ║
  9. # ╠═══════════════════════════════════════════════════════════════════════════╣
  10. # ║ ABOUT                                                                     ║
  11. # ╠═══════════════════════════════════════════════════════════════════════════╣
  12. # ║ This script changes how the "Boat" vehicle functions. By default, the     ║
  13. # ║ boat can travel on water, the same as the ship. Why isn't there a land    ║
  14. # ║ vehicle? This script changes the boat to function as a land vehicle, able ║
  15. # ║ to travel over any terrain that the player can (at a faster speed and     ║
  16. # ║ without encounters), and blocks it from traveling over water or           ║
  17. # ║ activating touch and confirm event processes.                             ║
  18. # ║                                                                           ║
  19. # ║ Anyone familiar with how Chocobos functioned in the SNES-era Final        ║
  20. # ║ Fantasy titles should notice similarities here.                           ║
  21. # ╠═══════════════════════════════════════════════════════════════════════════╣
  22. # ║ TERMS OF USE                                                              ║
  23. # ╠═══════════════════════════════════════════════════════════════════════════╣
  24. # ║ ► Do not edit the script's header or comments.                            ║
  25. # ║ ► Free to use in commercial projects as long as proper credit is given to ║
  26. # ║   ALL the names in the above header.                                      ║
  27. # ╠═══════════════════════════════════════════════════════════════════════════╣
  28. # ║ CHANGE LOG                                                                ║
  29. # ╠═════════════════════════════════════════════════════════════════╤═════════╣
  30. # ║ ■ September 29, 2021 : Encounter support for ship/airship added.│ (v1.07) ║
  31. # ║                        Altitude support for airship added.      │         ║
  32. # ║                        Walk animation/step animation setting    │         ║
  33. # ║                        removed (redundant)                      │         ║
  34. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  35. # ║ ■ September 28, 2021 : Walk animation support added.            │ (v1.06) ║
  36. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  37. # ║ ■ September 01, 2015 : Added aliases to improve compatibility.  │ (v1.05) ║
  38. # ║                        Patch for Galv On/Off integrated         │         ║
  39. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  40. # ║ ■ October 31, 2014   : Option to disable stepping animation.    │ (v1.04) ║
  41. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  42. # ║ ■ July 21, 2014      : Option to disable action button events.  │ (v1.03) ║
  43. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  44. # ║ ■ January  30, 2013  : Bug fixed.                               │ (v1.02) ║
  45. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  46. # ║ ■ December 01, 2012  : Added option to keep encounters & touch  │ (v1.01) ║
  47. # ║                        events.                                  │         ║
  48. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  49. # ║ ■ November 27, 2012  : Initial release.                         │ (v1.00) ║
  50. # ╠═════════════════════════════════════════════════════════════════╧═════════╣
  51. # ║ NEXT VERSION                                                              ║
  52. # ╠═══════════════════════════════════════════════════════════════════════════╣
  53. # ║ ■ Script completed!                                                       ║
  54. # ╠═══════════════════════════════════════════════════════════════════════════╣
  55. # ║ ALIASED/OVERWRITTEN METHODS                                               ║
  56. # ╠═══════════════════════════════════════════════════════════════════════════╣
  57. # ║   This script overwrites or aliases a few methods in various default      ║
  58. # ║   scripts.                                                                ║
  59. # ╟───────────────────────────────────────────────────────────────────────────╢
  60. # ║ ■ class Game_Map                                                          ║
  61. # ║    ► def boat_passable?                                                   ║
  62. # ╟───────────────────────────────────────────────────────────────────────────╢
  63. # ║ ■ class Game_Player < Game_Character                                      ║
  64. # ║    ► def map_passable?                                                    ║
  65. # ║    ► ALIAS def update_encounter                                           ║
  66. # ║    ► ALIAS def check_touch_event                                          ║
  67. # ║    ► ALIAS def check_action_event                                         ║
  68. # ╟───────────────────────────────────────────────────────────────────────────╢
  69. # ║ ■ class Game_Vehicle > Game_Character                                     ║
  70. # ║    ► ALIAS def init_move_speed                                            ║
  71. # ║    ► ALIAS def sync_with_player                                           ║
  72. # ║    ► ALIAS def max_altitude                                               ║
  73. # ╠═══════════════════════════════════════════════════════════════════════════╣
  74. # ║ INSTRUCTIONS                                                              ║
  75. # ╠═══════════════════════════════════════════════════════════════════════════╣
  76. # ║   Paste this script ABOVE Main and BELOW Game_Vehicle.                    ║
  77. # ╠═══════════════════════════════════════════════════════════════════════════╣
  78. # ║ IMPORT SETTING                                                            ║
  79. # ╚═══════════════════════════════════════════════════════════════════════════╝
  80. $imported = {} if $imported.nil?
  81. $imported[:wc_land_vehicle] = true
  82. # ╔═══════════════════════════════════════════════════════════════════════════╗
  83. # ║ CUSTOMIZATION MODULE                                                      ║
  84. # ╚═══════════════════════════════════════════════════════════════════════════╝
  85. module COOLIE
  86.   module VEHICLE
  87. # ╔═══════════════════════════════════════════════════════════════════════════╗
  88. # ║ VEHICLE SPEED: Set from 1-6 [Higher no. = higher speed]                   ║
  89. # ╚═══════════════════════════════════════════════════════════════════════════╝
  90.     VEHICLE_SPEED      = 5 # For Land Vehicle
  91. # ╔═══════════════════════════════════════════════════════════════════════════╗
  92. # ║ VEHICLE ENCOUNTERS: Set to true to allow enemy encounters while piloting. ║
  93. # ╚═══════════════════════════════════════════════════════════════════════════╝
  94.     VEHICLE_ENCOUNTERS_LV      = false # For Land Vehicle
  95.     VEHICLE_ENCOUNTERS_SHIP    = false # For Ship
  96.     VEHICLE_ENCOUNTERS_AIRSHIP = false # For Airship
  97. # ╔═══════════════════════════════════════════════════════════════════════════╗
  98. # ║ VEHICLE TOUCH: Set to true to allow touch event processing.               ║
  99. # ╚═══════════════════════════════════════════════════════════════════════════╝
  100.     VEHICLE_TOUCH      = false # For Land Vehicle
  101. # ╔═══════════════════════════════════════════════════════════════════════════╗
  102. # ║ VEHICLE PRESS: Set to true to allow action button event processing.       ║
  103. # ╚═══════════════════════════════════════════════════════════════════════════╝
  104.     VEHICLE_PRESS      = false # For Land Vehicle
  105. # ╔═══════════════════════════════════════════════════════════════════════════╗
  106. # ║ MAX ALTTITUDE: Height, in pixels, that the airship will rise to.          ║
  107. # ╚═══════════════════════════════════════════════════════════════════════════╝
  108.     MAX_ALTITUDE       = 32 # For Airship
  109.   end
  110. end
  111. #-------------------------------------------------------------------------------
  112. class Game_Map
  113. # ╔═══════════════════════════════════════════════════════════════════════════╗
  114. # ║ Determine if Passable by Land Vehicle                  [OVERWRITE METHOD] ║
  115. # ╟───────────────────────────────────────────────────────────────────────────╢
  116. # ║ Changes the Boat vehicle to have the same passability as the player.      ║
  117. # ║ I.E. Can travel on land, not water. Cannot pass through same level tiles. ║
  118. # ╚═══════════════════════════════════════════════════════════════════════════╝
  119.   def boat_passable?(x, y, d)
  120.     check_passage(x, y, (1 << (d / 2 - 1)) & 0x0f)
  121.   end
  122. end
  123.  
  124. class Game_Player < Game_Character
  125. # ╔═══════════════════════════════════════════════════════════════════════════╗
  126. # ║ Map Passable?                                          [OVERWRITE METHOD] ║
  127. # ╟───────────────────────────────────────────────────────────────────────────╢
  128. # ║ Determines passability.                                                   ║
  129. # ╚═══════════════════════════════════════════════════════════════════════════╝
  130.   def map_passable?(x, y, d)
  131.     case @vehicle_type
  132.     when :boat
  133.       $game_map.boat_passable?(x, y, d)
  134.     when :ship
  135.       $game_map.ship_passable?(x, y, d) if $imported["Galv_Vehicle_On_Off"]
  136.       $game_map.ship_passable?(x, y) if !$imported["Galv_Vehicle_On_Off"]
  137.     when :airship
  138.       true
  139.     else
  140.       super
  141.     end
  142.   end
  143. # ╔═══════════════════════════════════════════════════════════════════════════╗
  144. # ║ Update Encounters                                      [OVERWRITE METHOD] ║
  145. # ╟───────────────────────────────────────────────────────────────────────────╢
  146. # ║ Turns off encounters if piloting the Land Vehicle.                        ║
  147. # ╚═══════════════════════════════════════════════════════════════════════════╝
  148.   def update_encounter
  149.     return if $TEST && Input.press?(:CTRL)
  150.     return if $game_party.encounter_none?
  151.     return if in_airship?
  152.     unless COOLIE::VEHICLE::VEHICLE_ENCOUNTERS_LV
  153.       return if in_boat?
  154.     end
  155.     unless COOLIE::VEHICLE::VEHICLE_ENCOUNTERS_SHIP
  156.       return if in_ship?
  157.     end
  158.     unless COOLIE::VEHICLE::VEHICLE_ENCOUNTERS_AIRSHIP
  159.       return if in_airship?
  160.     end
  161.     return if @move_route_forcing
  162.     @encounter_count -= encounter_progress_value
  163.   end
  164. # ╔═══════════════════════════════════════════════════════════════════════════╗
  165. # ║ Determine if Event Start Caused by Touch (Overlap)         [ALIAS METHOD] ║
  166. # ╟───────────────────────────────────────────────────────────────────────────╢
  167. # ║ Disables touch events when driving the Land Vehicle, including teleports. ║
  168. # ╚═══════════════════════════════════════════════════════════════════════════╝
  169.   alias :wc_land_vehicle_check_touch_event :check_touch_event
  170.     def check_touch_event
  171.     unless COOLIE::VEHICLE::VEHICLE_TOUCH
  172.       return false if in_boat?
  173.     end
  174.     wc_land_vehicle_check_touch_event
  175.   end
  176.  
  177. # ╔═══════════════════════════════════════════════════════════════════════════╗
  178. # ║ Determine if Event Start Caused by OK Button (Action)      [ALIAS METHOD] ║
  179. # ╟───────────────────────────────────────────────────────────────────────────╢
  180. # ║ Disables "action button" events when driving the Land Vehicle.            ║
  181. # ╚═══════════════════════════════════════════════════════════════════════════╝
  182.   alias :wc_land_vehicle_check_action_event :check_action_event
  183.   def check_action_event
  184.     unless COOLIE::VEHICLE::VEHICLE_PRESS
  185.       return false if in_boat?
  186.     end
  187.     wc_land_vehicle_check_action_event
  188.   end
  189. end # class Game_Player
  190.  
  191. class Game_Vehicle < Game_Character
  192. # ╔═══════════════════════════════════════════════════════════════════════════╗
  193. # ║ Initialize Move Speed                                      [ALIAS METHOD] ║
  194. # ╟───────────────────────────────────────────────────────────────────────────╢
  195. # ║ Changes the player's movement speed when piloting the Land Vehicle.       ║
  196. # ╚═══════════════════════════════════════════════════════════════════════════╝
  197.   alias :wc_land_vehicle_init_move_speed :init_move_speed
  198.   def init_move_speed
  199.     wc_land_vehicle_init_move_speed
  200.     @move_speed = COOLIE::VEHICLE::VEHICLE_SPEED if @type == :boat
  201.   end
  202.  
  203. # ╔═══════════════════════════════════════════════════════════════════════════╗
  204. # ║ Synchronize With Player                                    [ALIAS METHOD] ║
  205. # ╟───────────────────────────────────────────────────────────────────────────╢
  206. # ║ Handles movement type of vehicle                                          ║
  207. # ╚═══════════════════════════════════════════════════════════════════════════╝
  208.   alias :wc_land_vehicle_sync_with_player :sync_with_player
  209.   def sync_with_player
  210.     wc_land_vehicle_sync_with_player
  211.     @step_anime = moving?
  212.     @step_anime = true if @type == :ship || @type == :airship
  213.   end
  214.  
  215. # ╔═══════════════════════════════════════════════════════════════════════════╗
  216. # ║ Max Altitude                                           [OVERWRITE METHOD] ║
  217. # ╟───────────────────────────────────────────────────────────────────────────╢
  218. # ║ Sets the maximum altitude of the airship.                                 ║
  219. # ╚═══════════════════════════════════════════════════════════════════════════╝
  220.   def max_altitude
  221.     return COOLIE::VEHICLE::MAX_ALTITUDE
  222.   end
  223. end # class Game_Vehicle
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement