Advertisement
roninator2

Food Quality

Dec 15th, 2024
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 10.57 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Food Quality                           ║  Version: 1.03     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║                                               ╠════════════════════╣
  7. # ║ Display window with stars                     ║    07 Jun 2022     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: nil                                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║       Add a quality value to food                                  ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║    Add note tag to items that will show the                        ║
  20. # ║    quality window.                                                 ║
  21. # ║       <food quality: x>                                            ║
  22. # ║                                                                    ║
  23. # ║    Current settings are for showing 3 stars                        ║
  24. # ║                                                                    ║
  25. # ║    Change settings below to preference                             ║
  26. # ║                                                                    ║
  27. # ╚════════════════════════════════════════════════════════════════════╝
  28. # ╔════════════════════════════════════════════════════════════════════╗
  29. # ║ Updates:                                                           ║
  30. # ║ 1.00 - 07 Jun 2022 - Script finished                               ║
  31. # ║ 1.03 - 08 Jun 2022 - Added Tone Control                            ║
  32. # ║                                                                    ║
  33. # ╚════════════════════════════════════════════════════════════════════╝
  34. # ╔════════════════════════════════════════════════════════════════════╗
  35. # ║ Credits and Thanks:                                                ║
  36. # ║   Roninator2                                                       ║
  37. # ║   Yanfly                                                           ║
  38. # ║   Neon Black                                                       ║
  39. # ╚════════════════════════════════════════════════════════════════════╝
  40. # ╔════════════════════════════════════════════════════════════════════╗
  41. # ║ Terms of use:                                                      ║
  42. # ║  Follow the original Authors terms of use where applicable         ║
  43. # ║    - When not made by me (Roninator2)                              ║
  44. # ║  Free for all uses in RPG Maker except nudity                      ║
  45. # ║  Anyone using this script in their project before these terms      ║
  46. # ║  were changed are allowed to use this script even if it conflicts  ║
  47. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  48. # ║  No part of this code can be used with AI programs or tools        ║
  49. # ║  Credit must be given                                              ║
  50. # ╚════════════════════════════════════════════════════════════════════╝
  51.  
  52. module R2_Item_Quality
  53.   WindowSkin = "Window"     # set windowskin preference
  54.   Default = 3               # number of stars to show
  55.   Default_Image = "Bstar2"  # back star image
  56.   Fill_Image = "Gstar2"     # front star image
  57.   Spacer = 38               # distance to place the next star
  58.   # images are 32x32 in size. so 38 leaves 6 pixels in between
  59.   Tone_Red = 120            # window background colour
  60.   Tone_Green = 120          # window background colour
  61.   Tone_Blue = 120           # window background colour
  62. end
  63.  
  64. # ╔════════════════════════════════════════════════════════════════════╗
  65. # ║                      End of editable region                        ║
  66. # ╚════════════════════════════════════════════════════════════════════╝
  67.  
  68. module R2_Item_Quality
  69.   Food_Quality = /<Food Quality:[ ]*(\d+)>/i # do not touch
  70. end
  71.  
  72. class Window_ItemList
  73.  
  74.   alias :r2_itemquality_update :update
  75.   def update
  76.     r2_itemquality_update
  77.     return if item.nil?
  78.     close_quality_window if item.food_quality == 0 || @item_quality
  79.     show_quality_window  if item.food_quality > 0 && self.active
  80.   end
  81.   def show_quality_window
  82.     rect = item_rect(@index)
  83.     x = rect.x + self.x + padding + 24 - ox
  84.     y = rect.y + line_height + self.y + padding - oy - 2
  85.     @item_quality = Window_FoodQualityShow.new(item, x, y, self)
  86.   end
  87.   def close_quality_window
  88.     @item_quality.dispose if @item_quality
  89.   end
  90. end
  91.  
  92. class Window_FoodQualityShow < Window_Base
  93.   def initialize(item, x, y, parent)
  94.     @parent = parent
  95.     @qwx = x; @qwy = y
  96.     @item = item
  97.     super(0, 0, 130, 55) # change width and height here
  98.     self.z = @parent.z + 500
  99.     self.windowskin = Cache.system(R2_Item_Quality::WindowSkin)
  100.     self.back_opacity = 255
  101.     r = R2_Item_Quality::Tone_Red
  102.     g = R2_Item_Quality::Tone_Green
  103.     b = R2_Item_Quality::Tone_Blue
  104.     self.tone = Tone.new(r, g, b)
  105.     self.width = 130    # copy width here
  106.     self.height = 55    # copy height here
  107.     make_position
  108.     draw_all_items
  109.   end
  110.  
  111.   def make_position
  112.     self.x = @qwx + self.width > Graphics.width ? Graphics.width - self.width :
  113.              @qwx
  114.     self.y = @qwy + self.height <= Graphics.height ? @qwy :
  115.              @qwy - self.height - @parent.line_height + 4 > 0 ? @qwy -
  116.              self.height - @parent.line_height + 4 : Graphics.height -
  117.              self.height
  118.   end
  119.  
  120.   def draw_all_items
  121.     contents.clear
  122.     x = 0
  123.     @back_image = []
  124.     @top_image = []
  125.     bimage = R2_Item_Quality::Default_Image
  126.     gimage = R2_Item_Quality::Fill_Image
  127.     bgstar = R2_Item_Quality::Default
  128.     bgstar.times do |b|
  129.       @back_image[b] = Sprite.new
  130.       @back_image[b].bitmap = Cache.system(bimage)
  131.       @back_image[b].x = b * R2_Item_Quality::Spacer + self.x + 10
  132.       @back_image[b].y = self.y + 10
  133.       @back_image[b].z = @parent.z + 501
  134.     end
  135.     @item.food_quality.times do |d|
  136.       @top_image[d] = Sprite.new
  137.       @top_image[d].bitmap = Cache.system(gimage)
  138.       @top_image[d].x = d * R2_Item_Quality::Spacer + self.x + 10
  139.       @top_image[d].y = self.y + 10
  140.       @top_image[d].z = @parent.z + 502
  141.     end
  142.   end
  143.   alias r2_dispose_quality dispose
  144.   def dispose
  145.     @back_image.size.times do |i|
  146.       @back_image[i].bitmap.dispose
  147.       @back_image[i].dispose
  148.     end
  149.     @top_image.size.times do |i|
  150.       @top_image[i].bitmap.dispose
  151.       @top_image[i].dispose
  152.     end
  153.     r2_dispose_quality
  154.   end
  155. end
  156.  
  157. class Scene_Item < Scene_ItemBase
  158.   alias r2_close_quality_window_food_item_ok  on_item_ok
  159.   def on_item_ok
  160.     @item_window.close_quality_window
  161.     r2_close_quality_window_food_item_ok
  162.   end
  163.   alias r2_close_quality_window_food_item_cancel  on_item_cancel
  164.   def on_item_cancel
  165.     @item_window.close_quality_window
  166.     r2_close_quality_window_food_item_cancel
  167.   end
  168. end
  169.  
  170. module DataManager
  171.   class <<self; alias load_database_r2_food_quality_load_database load_database; end
  172.   def self.load_database
  173.     load_database_r2_food_quality_load_database
  174.     load_notetags_quality_items
  175.   end
  176.   def self.load_notetags_quality_items
  177.     for item in $data_items
  178.       next if item.nil?
  179.       item.load_notetags_quality_items
  180.     end
  181.   end
  182. end
  183.  
  184. class RPG::Item < RPG::UsableItem
  185.   attr_accessor :food_quality
  186.   def load_notetags_quality_items
  187.     @food_quality = 0
  188.     self.note.split(/[\r\n]+/).each { |line|
  189.       case line
  190.       when R2_Item_Quality::Food_Quality
  191.         @food_quality = $1.to_i
  192.       end
  193.     }
  194.   end
  195. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement