Advertisement
roninator2

Actor HP on map

Dec 18th, 2024
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 8.48 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Actor HP on Map                        ║  Version: 1.02     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║ Trimmed down version                          ╠════════════════════╣
  7. # ║ Show actor hp on the map                      ║    10 Oct 2021     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: nil                                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║ Allows to display actor hp on screen when damaged                  ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║   Adjust the settings to your preference                           ║
  20. # ║   Not compatible with Vlue Sleek gauges                            ║
  21. # ╚════════════════════════════════════════════════════════════════════╝
  22. # ╔════════════════════════════════════════════════════════════════════╗
  23. # ║ Credits and Thanks:                                                ║
  24. # ║   Roninator2                                                       ║
  25. # ║                                                                    ║
  26. # ╚════════════════════════════════════════════════════════════════════╝
  27. # ╔════════════════════════════════════════════════════════════════════╗
  28. # ║ Terms of use:                                                      ║
  29. # ║  Follow the original Authors terms of use where applicable         ║
  30. # ║    - When not made by me (Roninator2)                              ║
  31. # ║  Free for all uses in RPG Maker except nudity                      ║
  32. # ║  Anyone using this script in their project before these terms      ║
  33. # ║  were changed are allowed to use this script even if it conflicts  ║
  34. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  35. # ║  No part of this code can be used with AI programs or tools        ║
  36. # ║  Credit must be given                                              ║
  37. # ╚════════════════════════════════════════════════════════════════════╝
  38.  
  39. module R2_MAP_HUD
  40.   # Configure options
  41.   Hud_Width     = 120     # Hud Width
  42.   Hud_Height    = 40     # Hud Height
  43.  
  44.   HP_Width      = 95     # HP bar width , # must be 25 less than hud window
  45.   HP_Height     = 10      # HP bar heigth
  46.  
  47.   HP_Color1     = 22      # Set the HP color
  48.   HP_Color2     = 26      # Set the HP color
  49.  
  50.   Window_Opacity      = 0         # window visibility, does not affect contents
  51.   Window_Back_Opacity = 0         # Window background opacity
  52.   Window_Graphic      = "Window"  # Window Graphic file to use
  53.  
  54.   Toggle        = :ALT  # Button to call the HP bar
  55.    
  56.   Time_Held     = 60 # length of time (in frames) to show the HP bar
  57. end
  58. # ╔══════════════════════════════════════════════════════════╗
  59. # ║ End of Configuration                                     ║
  60. # ╚══════════════════════════════════════════════════════════╝
  61.  
  62. class Actor_Hud_Window < Window_Base
  63.   def initialize(id)
  64.     x = $game_player.screen_x - (R2_MAP_HUD::Hud_Width / 2)
  65.     y = $game_player.screen_y - (R2_MAP_HUD::Hud_Height * 2)
  66.     w = R2_MAP_HUD::Hud_Width
  67.     h = R2_MAP_HUD::Hud_Height
  68.     super(x,y,w,h)
  69.     self.windowskin = Cache.system(R2_MAP_HUD::Window_Graphic)
  70.     self.opacity = R2_MAP_HUD::Window_Opacity
  71.     self.back_opacity = R2_MAP_HUD::Window_Back_Opacity
  72.     self.contents_opacity = 255
  73.     @current_actor = id
  74.     refresh
  75.   end
  76.  
  77.   def actor_data
  78.     @actor = $game_actors[@current_actor]
  79.     width = R2_MAP_HUD::HP_Width
  80.     height = R2_MAP_HUD::HP_Height
  81.     draw_actor_hud_hp(@actor, 0, 0, width, height)
  82.     @current_hp = @actor.hp
  83.   end
  84.  
  85.   def draw_actor_hud_hp(actor, x, y, width, height)
  86.     color1 = text_color(R2_MAP_HUD::HP_Color1)
  87.     color2 = text_color(R2_MAP_HUD::HP_Color2)
  88.     draw_gauge(x, y, width, actor.hp_rate, color1, color2)
  89.   end
  90.  
  91.   def draw_gauge(x, y, width, rate, color1, color2)
  92.     fill_w = (width * rate).to_i
  93.     gauge_y = y + line_height - 28
  94.     height = R2_MAP_HUD::HP_Height
  95.     contents.fill_rect(x, gauge_y, width, height, gauge_back_color)
  96.     contents.gradient_fill_rect(x, gauge_y, fill_w, height, color1, color2)
  97.   end
  98.  
  99.   def refresh
  100.     self.contents.clear
  101.     actor_data
  102.   end
  103.  
  104.   def hud_data_changed
  105.     return true if @current_hp != @actor.hp
  106.     return false
  107.   end
  108.  
  109.   alias r2_hud_update_vlue    update
  110.   def update
  111.     refresh if hud_data_changed
  112.     r2_hud_update_vlue
  113.   end
  114.  
  115. end
  116.  
  117. class Scene_Map < Scene_Base
  118.   alias r2_map_hud_start  start
  119.   def start
  120.     @map_hud_seen = false
  121.     r2_map_hud_start
  122.     start_hud
  123.   end
  124.   def start_hud
  125.     @actor_shown = $game_party.leader
  126.     @map_hud = Actor_Hud_Window.new(@actor_shown.id)
  127.     @map_hud.close
  128.   end
  129.   alias r2_map_update_switch_actor    update
  130.   def update
  131.     r2_map_update_switch_actor
  132.     if @map_hud.open?
  133.       @map_hud.x = $game_player.screen_x - (R2_MAP_HUD::Hud_Width / 2)
  134.       @map_hud.y = $game_player.screen_y - (R2_MAP_HUD::Hud_Height * 2)
  135.     end
  136.     if Input.trigger?(R2_MAP_HUD::Toggle)
  137.       @map_hud_seen = !@map_hud_seen
  138.       set_timer
  139.     end
  140.     if @map_hud.hud_data_changed
  141.       hud_update
  142.       @map_hud_seen = true
  143.       set_timer
  144.     end
  145.     if @timer == Graphics.frame_count
  146.       @map_hud_seen = false
  147.     end
  148.     if @map_hud_seen == false
  149.       @map_hud.close if @map_hud.open?
  150.     else
  151.       @map_hud.open if @map_hud.close?
  152.     end
  153.   end
  154.   def set_timer
  155.     @map_hud.x = $game_player.screen_x - (R2_MAP_HUD::Hud_Width / 2)
  156.     @map_hud.y = $game_player.screen_y - (R2_MAP_HUD::Hud_Height * 2)
  157.     @timer = Graphics.frame_count
  158.     @timer += R2_MAP_HUD::Time_Held
  159.   end
  160.   def hud_update
  161.     return if @actor_shown.nil?
  162.     @map_hud.refresh
  163.   end
  164. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement