Advertisement
roninator2

Teleport with button press - Check Landing Position Only

Dec 10th, 2024
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 8.54 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Teleport with button press             ║  Version: 1.03S    ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║                                               ╠════════════════════╣
  7. # ║   Perform map movement                        ║    20 Oct 2023     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: nil                                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║       Allow instant travel with a button                           ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║                                                                    ║
  20. # ║  Do whatever you need to in order to call the command              ║
  21. # ║  an event in parallel process on the map                           ║
  22. # ║  a script that maps a button press, etc.                           ║
  23. # ║                                                                    ║
  24. # ║  Use script command to cause teleport                              ║
  25. # ║  teleport(X)   or   teleport($game_variables[X])                   ║
  26. # ║    will make the player move instantly the number given            ║
  27. # ║    but only if safe to move on the space                           ║
  28. # ║                                                                    ║
  29. # ║  Use comment on event to prevent jumping over event                ║
  30. # ║  Set the text below to what you will use in the event              ║
  31. # ║                                                                    ║
  32. # ║  Position option                                                   ║
  33. # ║  This version will only check landing position.                    ║
  34. # ╚════════════════════════════════════════════════════════════════════╝
  35. # ╔════════════════════════════════════════════════════════════════════╗
  36. # ║ Updates:                                                           ║
  37. # ║ 1.00 - 20 Oct 2023 - Script finished                               ║
  38. # ║                                                                    ║
  39. # ╚════════════════════════════════════════════════════════════════════╝
  40. # ╔════════════════════════════════════════════════════════════════════╗
  41. # ║ Credits and Thanks:                                                ║
  42. # ║   Roninator2                                                       ║
  43. # ║                                                                    ║
  44. # ╚════════════════════════════════════════════════════════════════════╝
  45. # ╔════════════════════════════════════════════════════════════════════╗
  46. # ║ Terms of use:                                                      ║
  47. # ║  Follow the original Authors terms of use where applicable         ║
  48. # ║    - When not made by me (Roninator2)                              ║
  49. # ║  Free for all uses in RPG Maker except nudity                      ║
  50. # ║  Anyone using this script in their project before these terms      ║
  51. # ║  were changed are allowed to use this script even if it conflicts  ║
  52. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  53. # ║  No part of this code can be used with AI programs or tools        ║
  54. # ║  Credit must be given                                              ║
  55. # ╚════════════════════════════════════════════════════════════════════╝
  56.  
  57. module R2_Teleport_Actor_Fixed
  58.   Switch = 1
  59.   Terrain_Tag = 1
  60.   Text = "Block Jump"
  61. end
  62.  
  63. # ╔════════════════════════════════════════════════════════════════════╗
  64. # ║                      End of editable region                        ║
  65. # ╚════════════════════════════════════════════════════════════════════╝
  66.  
  67. class Game_Interpreter
  68.   #--------------------------------------------------------------------------
  69.   # * Check Teleport and move
  70.   #--------------------------------------------------------------------------
  71.   def teleport(value = 0)
  72.     return if $game_switches[R2_Teleport_Actor_Fixed::Switch] == false
  73.     xj = 0
  74.     yj = 0
  75.     dir = $game_player.direction
  76.     case dir
  77.     when 2; yj = value
  78.     when 4; xj = -value
  79.     when 6; xj = value
  80.     when 8; yj = -value
  81.     end
  82.     x = $game_player.x + xj
  83.     y = $game_player.y + yj
  84.     clean = $game_map.passable?(x, y, dir)
  85.     safe = !$game_player.collide_with_events?(x, y)
  86.     ceiling = $game_map.terrain_tag(x, y) != R2_Teleport_Actor_Fixed::Terrain_Tag
  87.     block = !check_jump_block(xj, yj)
  88.     if clean && safe && ceiling && block
  89.       $game_player.transparent = true
  90.       $game_player.reserve_transfer($game_map.map_id, x, y, dir)
  91.       $game_player.perform_transfer
  92.       $game_player.transparent = false
  93.     end
  94.   end
  95.   def check_jump_block(xj, yj)
  96.     evb = false
  97.     if (xj < 0) || (yj < 0)
  98.         x = xj < 0 ? $game_player.x + xj : $game_player.x
  99.         y = yj < 0 ? $game_player.y + yj : $game_player.y
  100.         evb = true if check_event_block(x, y)
  101.     else
  102.         x = xj > 0 ? $game_player.x + xj : $game_player.x
  103.         y = yj > 0 ? $game_player.y + yj : $game_player.y
  104.         evb = true if check_event_block(x, y)
  105.     end
  106.     return evb
  107.   end
  108.   def check_event_block(x, y)
  109.     clear = false
  110.     event = $game_map.events_xy(x, y)
  111.     return if event == []
  112.     event[0].list.each do |comm|
  113.       if comm.code == 108 && comm.parameters == [R2_Teleport_Actor_Fixed::Text]
  114.         return true
  115.       end
  116.     end
  117.     return false
  118.   end
  119. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement