SSTrihan

HorrorVale - Y offset fix 2

Sep 20th, 2024
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.41 KB | Source Code | 0 0
  1. #-------------------------------------------------------------------------------
  2. # Don't remove this header!
  3. #-------------------------------------------------------------------------------
  4. # Enemy Y Offset
  5. # by Trihan
  6. #
  7. # Version : 1.2
  8. #
  9. # This script is commissioned by Batworks Software.
  10. #-------------------------------------------------------------------------------
  11.  
  12. #-------------------------------------------------------------------------------
  13. # Version History
  14. #-------------------------------------------------------------------------------
  15. # 1.2 - Refactored tag processing and added support for reinforcements script
  16. # 1.1 - Fixed a bug where floating enemies transforming messed up offset
  17. # 1.0 - Initial script.
  18. #-------------------------------------------------------------------------------
  19.  
  20. #-------------------------------------------------------------------------------
  21. # This script provides a notetag to apply a Y offset to the position of an
  22. # enemy's sprite:
  23. #
  24. # <y_offset: value>
  25. #
  26. # The value can be negative.
  27. #-------------------------------------------------------------------------------
  28.  
  29. class Game_Troop < Game_Unit
  30.   alias :tlb_setup :setup
  31.   def setup(troop_id)
  32.     tlb_setup(troop_id)
  33.     @enemies.each do |enemy|
  34.       y_offset = enemy.process_offset_tag
  35.       enemy.screen_y += y_offset
  36.     end
  37.   end
  38.  
  39.   alias :tlb_add_member :add_member
  40.   def add_member(member, troop_id)
  41.     enemy = tlb_add_member(member, troop_id)
  42.     y_offset = enemy.process_offset_tag
  43.     enemy.screen_y += y_offset
  44.     return enemy
  45.   end
  46. end
  47.  
  48. class Game_Enemy < Game_Battler
  49.   alias :tlb_transform :transform
  50.   def transform(enemy_id)
  51.     tlb_transform(enemy_id)
  52.     y_offset = process_offset_tag
  53.     self.screen_y = $game_troop.troop.members[self.index].y + y_offset
  54.     sprite = SceneManager.scene.spriteset.battler_sprites.find {|sprite| sprite.battler == self }
  55.     sprite.setup_motion_stand
  56.     sprite.y = self.screen_y
  57.     refresh
  58.   end
  59.  
  60.   def process_offset_tag
  61.     y_offset = 0
  62.     offset_notetag = self.enemy.note.scan(/<y_offset: ?(-?\d+)/)
  63.     if offset_notetag.size > 0
  64.       y_offset = offset_notetag[0][0].to_i
  65.     end
  66.     return y_offset
  67.   end
  68. end
  69.  
  70. class Sprite_Battler < Sprite_Base
  71.   alias :tlb_update_motion_anim :update_motion_anim
  72.   def update_motion_anim
  73.     tlb_update_motion_anim
  74.     self.y = @battler.screen_y if self.y != @battler.screen_y
  75.   end
  76. end
Advertisement
Add Comment
Please, Sign In to add comment