Advertisement
roninator2

Show Skills for Next Level

Dec 10th, 2024
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 11.55 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Show skills for next level             ║  Version: 1.00     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║   Display the next 5 skills that              ╠════════════════════╣
  7. # ║   are learned at upcoming levels              ║    25 Oct 2022     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: nil                                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║        Display skills for next level                               ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║     Plug and play                                                  ║
  20. # ╚════════════════════════════════════════════════════════════════════╝
  21. # ╔════════════════════════════════════════════════════════════════════╗
  22. # ║ Updates:                                                           ║
  23. # ║ 1.00 - 25 Oct 2022 - Script finished                               ║
  24. # ║                                                                    ║
  25. # ╚════════════════════════════════════════════════════════════════════╝
  26. # ╔════════════════════════════════════════════════════════════════════╗
  27. # ║ Credits and Thanks:                                                ║
  28. # ║   Roninator2                                                       ║
  29. # ║                                                                    ║
  30. # ╚════════════════════════════════════════════════════════════════════╝
  31. # ╔════════════════════════════════════════════════════════════════════╗
  32. # ║ Terms of use:                                                      ║
  33. # ║  Follow the original Authors terms of use where applicable         ║
  34. # ║    - When not made by me (Roninator2)                              ║
  35. # ║  Free for all uses in RPG Maker except nudity                      ║
  36. # ║  Anyone using this script in their project before these terms      ║
  37. # ║  were changed are allowed to use this script even if it conflicts  ║
  38. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  39. # ║  No part of this code can be used with AI programs or tools        ║
  40. # ║  Credit must be given                                              ║
  41. # ╚════════════════════════════════════════════════════════════════════╝
  42.  
  43. module R2_Show_Next_Skills
  44.   Amount = 5
  45.   Use_R2_Method = true
  46. end
  47.  
  48.  
  49. class Window_SkillList < Window_Selectable
  50.   #--------------------------------------------------------------------------
  51.   # * Get Digit Count
  52.   #--------------------------------------------------------------------------
  53.   def col_max
  54.     return 1
  55.   end
  56. end
  57.  
  58. class Window_SkillNextList < Window_SkillList
  59.   #--------------------------------------------------------------------------
  60.   # * Object Initialization
  61.   #--------------------------------------------------------------------------
  62.   def initialize(x, y, width, height)
  63.     super
  64.     @actor = nil
  65.     @stype_id = 0
  66.     @data = []
  67.   end
  68.   #--------------------------------------------------------------------------
  69.   # * Set Actor
  70.   #--------------------------------------------------------------------------
  71.   def actor=(actor)
  72.     return if @actor == actor
  73.     @actor = actor
  74.     refresh
  75.     self.oy = 0
  76.   end
  77.   #--------------------------------------------------------------------------
  78.   # * Set Skill Type ID
  79.   #--------------------------------------------------------------------------
  80.   def stype_id=(stype_id)
  81.     return if @stype_id == stype_id
  82.     @stype_id = stype_id
  83.     refresh
  84.     self.oy = 0
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # * Get Digit Count
  88.   #--------------------------------------------------------------------------
  89.   def col_max
  90.     return 1
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # * Get Number of Items
  94.   #--------------------------------------------------------------------------
  95.   def item_max
  96.     R2_Show_Next_Skills::Amount
  97.   end
  98.   #--------------------------------------------------------------------------
  99.   # * Include in Skill List?
  100.   #--------------------------------------------------------------------------
  101.   def include?(item)
  102.     item && item.stype_id == @stype_id
  103.   end
  104.   #--------------------------------------------------------------------------
  105.   # * Display Skill in Active State?
  106.   #--------------------------------------------------------------------------
  107.   def enable?(item)
  108.     @actor && @actor.usable?(item)
  109.   end
  110.  
  111.   if R2_Show_Next_Skills::Use_R2_Method
  112.     #--------------------------------------------------------------------------
  113.     # * Create Skill List
  114.     #--------------------------------------------------------------------------
  115.     def make_item_list
  116.       @data = []
  117.       cur_data = []
  118.       @all_data = []
  119.       aval_data = []
  120.       cur_data = @actor ? @actor.skills.select {|skill| include?(skill) } : []
  121.       @all_data = $data_classes[@actor.class_id].learnings
  122.       for i in 0..@all_data.size - 1
  123.         skill = $data_skills[@all_data[i].skill_id]
  124.         found = false
  125.         cur_data.each do |line|
  126.           found = true if line.id == skill.id
  127.         end
  128.         next if found == true
  129.         aval_data[i] = skill
  130.       end
  131.       aval_data.compact!
  132.       for i in 0..item_max
  133.         @data << aval_data[i] unless aval_data[i].nil?
  134.       end
  135.     end
  136.     #--------------------------------------------------------------------------
  137.     # * Draw Skill Use Cost
  138.     #--------------------------------------------------------------------------
  139.     def draw_skill_level(rect, skill)
  140.       level = 0
  141.       @all_data.each do |entry|
  142.         level = entry.level if entry.skill_id == skill.id
  143.       end
  144.       change_color(text_color(18), true)
  145.       text = "LV "+level.to_s
  146.       draw_text(rect, text, 2)
  147.     end
  148.   else
  149.     def level_next
  150.       @actor.level + 1
  151.     end
  152.     def level_max
  153.       @actor.level + 10
  154.     end
  155.     def make_item_list
  156.       @data = []
  157.       @all_data = {}
  158.       learn_skills = $data_classes[@actor.class_id].learnings
  159.       learn_skills.each do |learn|
  160.         next if learn.level < level_next or learn.level > level_max
  161.         @data << $data_skills[learn.skill_id]
  162.         @all_data[learn.skill_id] = learn.level
  163.         break if @data.size == item_max
  164.       end
  165.     end
  166.     def draw_skill_level(rect, skill)
  167.       level = @all_data[skill.id] || 0
  168.       change_color(text_color(18), true)
  169.       draw_text(rect, "LV#{level}", 2)
  170.     end
  171.   end
  172.   #--------------------------------------------------------------------------
  173.   # * Draw Item
  174.   #--------------------------------------------------------------------------
  175.   def draw_item(index)
  176.     skill = @data[index]
  177.     if skill
  178.       rect = item_rect(index)
  179.       rect.width -= 4
  180.       draw_item_name(skill, rect.x, rect.y, enable?(skill))
  181.       draw_skill_level(rect, skill)
  182.     end
  183.   end
  184.   #--------------------------------------------------------------------------
  185.   # * Refresh
  186.   #--------------------------------------------------------------------------
  187.   def refresh
  188.     make_item_list
  189.     create_contents
  190.     draw_all_items
  191.   end
  192. end
  193.  
  194. class Scene_Skill < Scene_ItemBase
  195.   #--------------------------------------------------------------------------
  196.   # * Start Processing
  197.   #--------------------------------------------------------------------------
  198.   alias r2_scene_skill_start_next_skills  start
  199.   def start
  200.     r2_scene_skill_start_next_skills
  201.     create_next_window
  202.   end
  203.   #--------------------------------------------------------------------------
  204.   # * Create Command Window
  205.   #--------------------------------------------------------------------------
  206.   def create_next_window
  207.     wx = Graphics.width / 2
  208.     wy = @status_window.y + @status_window.height
  209.     ww = Graphics.width / 2
  210.     wh = Graphics.height - wy
  211.     @next_window = Window_SkillNextList.new(wx, wy, ww, wh)
  212.     @next_window.actor = @actor
  213.     @next_window.viewport = @viewport
  214.     @command_window.skill_window = @next_window
  215.   end
  216.   #--------------------------------------------------------------------------
  217.   # * Create Item Window
  218.   #--------------------------------------------------------------------------
  219.   def create_item_window
  220.     wx = 0
  221.     wy = @status_window.y + @status_window.height
  222.     ww = Graphics.width / 2
  223.     wh = Graphics.height - wy
  224.     @item_window = Window_SkillList.new(wx, wy, ww, wh)
  225.     @item_window.actor = @actor
  226.     @item_window.viewport = @viewport
  227.     @item_window.help_window = @help_window
  228.     @item_window.set_handler(:ok,     method(:on_item_ok))
  229.     @item_window.set_handler(:cancel, method(:on_item_cancel))
  230.     @command_window.skill_window = @item_window
  231.   end
  232. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement